深入Scikit-learn:掌握Python最强大的机器学习库

Scikit-learn是一个基于Python的开源机器学习库,广泛用于数据挖掘和数据分析。以下是一些Scikit-learn中常用知识点的代码演示:

1. 导入库和准备数据

# 导入所需的库
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
# 加载数据集,这里以鸢尾花数据集为例
iris = datasets.load_iris()
X = iris.data  # 特征
y = iris.target  # 标签# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 特征缩放
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

2. 线性回归

from sklearn.linear_model import LinearRegression# 创建线性回归模型
lr = LinearRegression()# 训练模型
lr.fit(X_train, y_train)# 预测
y_pred = lr.predict(X_test)# 评估模型
from sklearn.metrics import mean_squared_error
print("Mean Squared Error:", mean_squared_error(y_test, y_pred))

3. 逻辑回归

from sklearn.linear_model import LogisticRegression# 创建逻辑回归模型
log_reg = LogisticRegression()# 训练模型
log_reg.fit(X_train, y_train)# 预测
y_pred = log_reg.predict(X_test)# 评估模型
from sklearn.metrics import accuracy_score
print("Accuracy:", accuracy_score(y_test, y_pred))

4. 决策树

from sklearn.tree import DecisionTreeClassifier# 创建决策树分类器
dt = DecisionTreeClassifier()# 训练模型
dt.fit(X_train, y_train)# 预测
y_pred = dt.predict(X_test)# 评估模型
print("Accuracy:", accuracy_score(y_test, y_pred))

5. 随机森林

from sklearn.ensemble import RandomForestClassifier# 创建随机森林分类器
rf = RandomForestClassifier(n_estimators=100)# 训练模型
rf.fit(X_train, y_train)# 预测
y_pred = rf.predict(X_test)# 评估模型
print("Accuracy:", accuracy_score(y_test, y_pred))

6. 支持向量机(SVM)

from sklearn.svm import SVC# 创建SVM分类器
svm = SVC()# 训练模型
svm.fit(X_train, y_train)# 预测
y_pred = svm.predict(X_test)# 评估模型
print("Accuracy:", accuracy_score(y_test, y_pred))

7. K-近邻(KNN)

from sklearn.neighbors import KNeighborsClassifier# 创建KNN分类器
knn = KNeighborsClassifier(n_neighbors=5)# 训练模型
knn.fit(X_train, y_train)# 预测
y_pred = knn.predict(X_test)# 评估模型
print("Accuracy:", accuracy_score(y_test, y_pred))

8. 模型持久化

import joblib# 保存模型
joblib.dump(lr, 'linear_regression_model.pkl')# 加载模型
loaded_lr_model = joblib.load('linear_regression_model.pkl')# 使用加载的模型进行预测
loaded_y_pred = loaded_lr_model.predict(X_test)

这些示例涵盖了Scikit-learn中的一些基本概念和常用算法。

在机器学习项目中,特征工程、参数调优和模型评估是提高模型性能的关键步骤。以下是一些示例代码,展示如何使用Scikit-learn进行这些步骤:

特征工程

特征工程包括特征选择、特征提取和特征转换等操作。

特征选择

使用SelectKBest进行特征选择:

from sklearn.feature_selection import SelectKBest, f_classif# 选择最好的k个特征
k = 4  # 例如选择4个特征
selector = SelectKBest(f_classif, k=k)
X_train_selected = selector.fit_transform(X_train, y_train)
X_test_selected = selector.transform(X_test)

特征提取

使用PCA进行主成分分析:

from sklearn.decomposition import PCA# 降维到2个主成分
pca = PCA(n_components=2)
X_train_pca = pca.fit_transform(X_train)
X_test_pca = pca.transform(X_test)

参数调优

使用GridSearchCV或RandomizedSearchCV进行参数调优:

from sklearn.model_selection import GridSearchCV
from sklearn.ensemble import RandomForestClassifier# 定义参数网格
param_grid = {'n_estimators': [100, 200, 300],'max_depth': [None, 10, 20],'min_samples_split': [2, 5, 10]
}# 创建随机森林分类器
rf = RandomForestClassifier()# 创建GridSearchCV对象
grid_search = GridSearchCV(estimator=rf, param_grid=param_grid, cv=5, n_jobs=-1)# 训练模型
grid_search.fit(X_train, y_train)# 打印最佳参数
print("Best parameters:", grid_search.best_params_)

模型评估

使用交叉验证和不同的评估指标来评估模型性能:

from sklearn.model_selection import cross_val_score
from sklearn.metrics import classification_report, confusion_matrix# 使用交叉验证评估模型
scores = cross_val_score(rf, X_train, y_train, cv=5)
print("Accuracy scores:", scores)
print("Mean accuracy:", scores.mean())# 使用最佳参数训练模型
best_rf = grid_search.best_estimator_# 训练和预测
best_rf.fit(X_train, y_train)
y_pred = best_rf.predict(X_test)# 打印分类报告
print(classification_report(y_test, y_pred))# 打印混淆矩阵
print(confusion_matrix(y_test, y_pred))

这些代码示例展示了如何进行特征工程、参数调优和模型评估。在实际应用中,你可能需要根据具体问题和数据集调整这些步骤和参数。此外,还有许多其他的特征工程方法和模型评估技术,可以根据需要选择使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/44877.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ActiViz中的点放置器vtkPointPlacer

文章目录 1. vtkPointPlacer2. vtkFocalPlanePointPlacer3. vtkPolygonalSurfacePointPlacer4. vtkImageActorPointPlacer5. vtkBoundedPlanePointPlacer6. vtkTerrainDataPointPlacer1. vtkPointPlacer 概述: vtkPointPlacer是一个基类,用于确定在三维空间中放置点的最佳位…

泛微开发修炼之旅--37通过js实现监听下拉框,并触发后端接口,改变其他控件内容的实现方法与源码(含pc端和移动端实现)

文章链接:37通过js实现监听下拉框,并触发后端接口,改变其他控件内容的实现方法与源码(含pc端和移动端实现)

Java Spring 事物处理

一、定义 事务(Transaction)是指作为单个逻辑工作单元执行的一系列操作。操作要么全部成功执行,要么全部失败回滚,以确保数据的一致性和完整性。 二、特性 原子性(Atomicity):事务被视为不可分…

flutter Navigator跳转报错

Navigator operation requested with a context that does not include a Navigator. The context used to push or pop routes from the Navigator must be that of a widget that is a descendant of a Navigator widget. 这个报错是:因为你尝试使用 Navigator 操…

游戏AI的创造思路-技术基础-决策树(2)

上一篇写了决策树的基础概念和一些简单例子,本篇将着重在实际案例上进行说明 目录 8. 决策树应用的实际例子 8.1. 方法和过程 8.1.1. 定义行为 8.1.2. 确定属性 8.1.3. 构建决策树 8.1.4. 实施行为 8.1.5. 实时更新 8.2. Python代码 8. 决策树应用的实际例子…

滑动窗口,最长子序列最好的选择 -> O(N)

最近在学校上短学期课程,做程序设计题,一下子回忆起了大一学数据结构与算法的日子! 这十天我会记录一些做题的心得,今天带来的是对于最长子序列长度题型的解题框架:滑动窗口 本质就是双指针算法: 通过le…

Vue路由传参和接参如何实现

在Vue中,使用Vue Router进行页面路由跳转时,经常需要传递参数到目标页面(组件)并在目标页面(组件)中接收这些参数。Vue Router提供了几种方式来实现路由传参和接参,主要包括通过URL的查询参数&a…

模拟生成高斯随机数序列

模拟和生成高斯随机数序列(服从标准正态分布的随机变量) Box-Muller 法 & Marsaglia 极坐标法 Box-Muller:使两个独立的均匀分布生成一个高斯分布。 Box-Muller方法的基本思想是利用两个独立的均匀分布随机变量的关系来生成高斯分布的…

Elasticsearch 多索引/多类型搜索

Elasticsearch,简称ES,是一个建立在Apache Lucene基础上的开源搜索引擎,它支持近乎实时的数据存储和检索,并具有良好的扩展性,可以处理PB级别的数据。在复杂的应用场景中,经常需要跨多个索引或类型进行搜索…

AcWing 1633:外观数列

【题目来源】https://www.acwing.com/problem/content/1635/【题目描述】 外观数列是指具有以下特点的整数序列:D, D1, D111, D113, D11231, D112213111, ...其中 D 是一个 [0,9] 范围内的不等于 1 的整数。 序列的第 n1 项是对第 n 项的描述。比如: 第 …

编程语言成长经历:探索、挑战与蜕变

编程语言成长经历:探索、挑战与蜕变 在数字化时代,编程语言无疑成为了连接人与机器的重要桥梁。回首我的编程语言成长经历,仿佛是一段充满探索、挑战与蜕变的旅程。 四个方面:初识编程的迷茫与好奇 当我第一次接触编程语言时&a…

Ubuntu与Windows通过WIFI与以太网口共享网络,Ubuntu与Windows相互ping通,但ping百度失败

Linux开发板(正点原子阿尔法_IMX6U)与Ubuntu的文件传输SCP 报错 SSH: no matching host key type found. Their offer: ssh-rsa-CSDN博客 前面的文章提到了如何将Ubuntu与Windows通过WIFI共享网络给以太网,从而实现Linux开发板、Ubuntu、Win…

香港优才计划续签难吗?一次性说清楚优才续签要求,不在香港居住也能续签成功!

香港优才计划续签难吗?这个问题对考虑申请优才的人来说,还是挺重要的。我们申请优才,最关注的2个问题,一个是获批,还有一个就是续签了。 毕竟我们费那么大功夫申请优才,可不只是为了一个为期3年的香港临时…

数据结构第20节 快速排序以及优化

快速排序是一种非常高效的排序算法,由英国计算机科学家托尼霍尔(Tony Hoare)在1960年代发明。它使用分治法(Divide and Conquer)策略来把一个序列分为较小的部分,然后递归地排序这些部分。 快速排序的基本…

Python 实现Word文档中提取表格数据并转换为CSV和JSON格式

python实现Word文档中提取表格数据 前言1.解析Word文档中的表格2.保存表格数据3.处理文件夹中的多个Word文档4.总结 前言 在日常工作中,我们经常需要处理大量的Word文档,其中包含各种表格数据。手动整理这些表格不仅耗时且容易出错。因此,开…

如何分析软件测试中发现的Bug!

假如你是一名软件测试工程师,每天面对的就是那些“刁钻”的Bug,它们像是隐藏在黑暗中的敌人,时不时跳出来给你一个“惊喜”。那么,如何才能有效地分析和处理这些Bug,让你的测试工作变得高效且有趣呢?今天我…

MongoDB - 集合和文档的增删改查操作

文章目录 1. MongoDB 运行命令2. MongoDB CRUD操作1. 新增文档1. 新增单个文档 insertOne2. 批量新增文档 insertMany 2. 查询文档1. 查询所有文档2. 指定相等条件3. 使用查询操作符指定条件4. 指定逻辑操作符 (AND / OR) 3. 更新文档1. 更新操作符语法2. 更新单个文档 updateO…

【ElasticSearch】ES 5.6.15 向量插件支持

参考 : https://github.com/lior-k/fast-elasticsearch-vector-scoring 下载插件 安装插件 插件目录: elasticsearch/plugins, 安装后的目录如下 plugins└── vector├── elasticsearch-binary-vector-scoring-5.6.9.jar└── plugin-descriptor.properties修…

linux中如何开启多个mysql进城并且单独设置密码和端口

在 Linux 系统中,默认情况下 MySQL(或 MariaDB,一个流行的 MySQL 分支)不直接支持在同一台机器上运行多个 MySQL 实例,每个实例使用不同的端口和独立的密码系统。但是,你可以通过配置多个 MySQL 实例&#…

web安全及内网安全知识

本文来源无问社区(wwlib.cn)更多详细内容可前往观看http://www.wwlib.cn/index.php/artread/artid/7506.html Web安全 1、sql注入 Web程序中对于用户提交的参数未做过滤直接拼接到SQL语句中执行,导致参数中的特殊字符破坏了SQL语句原有逻…