Python机器学习库scikit-learn怎么使用

发布时间:2022-07-28 13:42:05 作者:iii
来源:亿速云 阅读:170

Python机器学习库scikit-learn怎么使用

目录

  1. 简介
  2. 安装与配置
  3. 数据预处理
  4. 模型选择与训练
  5. 模型评估
  6. 超参数调优
  7. 特征工程
  8. 模型保存与加载
  9. 实战案例
  10. 总结

简介

scikit-learn(简称sklearn)是Python中最流行的机器学习库之一,提供了丰富的工具和算法,用于数据挖掘和数据分析。它基于NumPy、SciPy和matplotlib等科学计算库,支持分类、回归、聚类、降维等多种机器学习任务。

安装与配置

安装

在开始使用scikit-learn之前,首先需要安装它。可以通过以下命令使用pip安装:

pip install scikit-learn

验证安装

安装完成后,可以通过以下代码验证是否安装成功:

import sklearn
print(sklearn.__version__)

如果输出了版本号,说明安装成功。

数据预处理

加载数据集

scikit-learn提供了一些内置的数据集,可以用于快速测试和验证模型。例如,加载经典的鸢尾花数据集:

from sklearn.datasets import load_iris

iris = load_iris()
X = iris.data  # 特征矩阵
y = iris.target  # 标签

数据分割

在训练模型之前,通常需要将数据集分为训练集和测试集:

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

数据标准化

许多机器学习算法对数据的尺度敏感,因此需要对数据进行标准化处理:

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

模型选择与训练

选择模型

scikit-learn提供了多种机器学习模型,例如线性回归、支持向量机、决策树等。以下是一个使用支持向量机(SVM)进行分类的例子:

from sklearn.svm import SVC

model = SVC(kernel='linear')

训练模型

使用训练集数据训练模型:

model.fit(X_train, y_train)

模型评估

预测

使用训练好的模型对测试集进行预测:

y_pred = model.predict(X_test)

评估指标

常用的评估指标包括准确率、精确率、召回率和F1分数等。以下是一个计算准确率的例子:

from sklearn.metrics import accuracy_score

accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy:.2f}')

混淆矩阵

混淆矩阵可以帮助我们更详细地了解分类模型的性能:

from sklearn.metrics import confusion_matrix

conf_matrix = confusion_matrix(y_test, y_pred)
print(conf_matrix)

超参数调优

网格搜索

通过网格搜索可以找到模型的最佳超参数组合:

from sklearn.model_selection import GridSearchCV

param_grid = {'C': [0.1, 1, 10], 'kernel': ['linear', 'rbf']}
grid_search = GridSearchCV(SVC(), param_grid, cv=5)
grid_search.fit(X_train, y_train)

print(f'Best parameters: {grid_search.best_params_}')

随机搜索

随机搜索是另一种超参数调优方法,适用于参数空间较大的情况:

from sklearn.model_selection import RandomizedSearchCV
from scipy.stats import uniform

param_dist = {'C': uniform(0.1, 10), 'kernel': ['linear', 'rbf']}
random_search = RandomizedSearchCV(SVC(), param_dist, n_iter=10, cv=5)
random_search.fit(X_train, y_train)

print(f'Best parameters: {random_search.best_params_}')

特征工程

特征选择

特征选择是提高模型性能的重要手段之一。以下是一个使用递归特征消除(RFE)进行特征选择的例子:

from sklearn.feature_selection import RFE

rfe = RFE(model, n_features_to_select=2)
X_train_rfe = rfe.fit_transform(X_train, y_train)
X_test_rfe = rfe.transform(X_test)

特征提取

特征提取是将原始数据转换为更有意义的特征的过程。例如,使用主成分分析(PCA)进行降维:

from sklearn.decomposition import PCA

pca = PCA(n_components=2)
X_train_pca = pca.fit_transform(X_train)
X_test_pca = pca.transform(X_test)

模型保存与加载

保存模型

训练好的模型可以保存到磁盘,以便后续使用:

import joblib

joblib.dump(model, 'model.pkl')

加载模型

加载保存的模型:

model = joblib.load('model.pkl')

实战案例

案例:手写数字识别

以下是一个使用scikit-learn进行手写数字识别的完整例子:

from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score

# 加载数据
digits = load_digits()
X = digits.data
y = digits.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)

# 训练模型
model = SVC(kernel='linear')
model.fit(X_train, y_train)

# 预测
y_pred = model.predict(X_test)

# 评估
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy:.2f}')

总结

scikit-learn是一个功能强大且易于使用的机器学习库,适用于各种机器学习任务。通过本文的介绍,你应该已经掌握了如何使用scikit-learn进行数据预处理、模型选择与训练、模型评估、超参数调优、特征工程以及模型保存与加载等基本操作。希望这些内容能帮助你在实际项目中更好地应用机器学习技术。

推荐阅读:
  1. 如何掌握Python技术 Python有哪些机器学习库
  2. Python机器学习算法库scikit-learn学习之决策树实现方法详解

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python scikit learn

上一篇:Redis之sentinel哨兵集群怎么部署

下一篇:Element的Pagination分页sync问题怎么解决

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》