机器学习之sklearn基础教程

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 【5月更文挑战第9天】Sklearn是Python热门机器学习库,提供丰富算法和预处理工具。本文深入讲解基础概念、核心理论、常见问题及解决策略。内容涵盖模型选择与训练、预处理、交叉验证、分类回归、模型评估、数据集划分、正则化、编码分类变量、特征选择与降维、集成学习、超参数调优、模型评估、保存加载及模型解释。学习Sklearn是迈入机器学习领域的关键。

Scikit-learn(简称sklearn)是Python中最受欢迎的机器学习库之一,它提供了丰富的机器学习算法和数据预处理工具。本文将深入浅出地介绍sklearn的基础概念,核心理论,常见问题和易错点,并给出代码示例。
image.png

1. 基础概念

1.1 模型选择与训练

在sklearn中,模型被封装在sklearn.model_selection模块下,如sklearn.linear_model.LinearRegression代表线性回归模型。首先,我们需要创建模型实例,然后用fit方法训练模型。

from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X_train, y_train)

1.2 预处理

数据预处理是机器学习的重要环节,包括特征缩放、编码分类变量等。sklearn.preprocessing模块提供了相应的工具,如StandardScaler进行标准化。

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X_train)

1.3 交叉验证

交叉验证是评估模型性能的重要方法,sklearn.model_selection模块中的cross_val_score函数可以实现。

from sklearn.model_selection import cross_val_score
scores = cross_val_score(model, X_train, y_train, cv=5)
print('平均得分:', scores.mean())

2. 核心理论

2.1 分类与回归

分类问题中,sklearn提供了如逻辑回归、决策树和随机森林等模型;回归问题中,有线性回归、岭回归等。模型的预测使用predict方法。

y_pred = model.predict(X_test)

2.2 模型评估

sklearn提供了多种评估指标,如accuracy_score(分类)、mean_squared_error(回归)等。

from sklearn.metrics import accuracy_score, mean_squared_error
accuracy = accuracy_score(y_test, y_pred)
mse = mean_squared_error(y_test, y_pred)

3. 常见问题与易错点

3.1 数据集划分

确保训练集和测试集是随机划分的,避免数据泄漏。

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)

3.2 正则化

对于过拟合问题,可以使用正则化(如L1、L2),防止模型复杂度过高。

from sklearn.linear_model import Lasso
lasso = Lasso(alpha=0.1)
lasso.fit(X_train, y_train)

3.3 编码分类变量

对于分类特征,需要先进行编码,如OneHotEncoder

from sklearn.preprocessing import OneHotEncoder
encoder = OneHotEncoder()
X_encoded = encoder.fit_transform(X_categorical)

4. 避免问题的策略

  • 理解模型假设:每个模型都有其适用的假设和局限性,需根据数据特性选择合适的模型。
  • 数据预处理:确保数据质量,处理缺失值,转换非数值特征。
  • 验证模型性能:使用交叉验证评估模型,避免过拟合或欠拟合。

5. 特征选择与降维

5.1 特征选择

特征选择旨在识别最有影响力的特征,剔除冗余或无关的特征,提高模型效率和解释性。sklearn提供了多种特征选择方法,如基于单变量统计的SelectKBest,基于模型的RFE(递归特征消除)。

from sklearn.feature_selection import SelectKBest, chi2
selector = SelectKBest(score_func=chi2, k=2)
X_new = selector.fit_transform(X, y)

from sklearn.feature_selection import RFE
estimator = LogisticRegression()
rfe = RFE(estimator, n_features_to_select=2)
rfe.fit(X, y)
print("Selected Features: ", rfe.support_)

5.2 降维

当特征维度非常高时,可以采用降维技术,如PCA(主成分分析)或t-SNE,来降低数据的复杂度,同时尽量保留数据的结构信息。

from sklearn.decomposition import PCA
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)

from sklearn.manifold import TSNE
tsne = TSNE(n_components=2)
X_tsne = tsne.fit_transform(X)

6. 集成学习

集成学习通过组合多个弱学习器来构建一个强学习器,以提高预测性能。sklearn提供了多种集成方法,如Bagging(装袋)、Boosting(提升)和Stacking(堆叠)。

from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import AdaBoostClassifier

rf = RandomForestClassifier()
rf.fit(X_train, y_train)

ada = AdaBoostClassifier()
ada.fit(X_train, y_train)

7. 超参数调优

超参数的选择对模型性能至关重要。sklearn的GridSearchCVRandomizedSearchCV可以帮助自动化超参数搜索过程。

from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC

param_grid = {
   
   'C': [0.1, 1, 10, 100], 'gamma': [1, 0.1, 0.01, 0.001]}
grid = GridSearchCV(SVC(), param_grid, refit=True, verbose=2)
grid.fit(X_train, y_train)
print("Best parameters found: ", grid.best_params_)

8. 模型评估与验证

模型评估是检验模型性能的关键步骤。sklearn提供了多种评估方法,如混淆矩阵、ROC曲线、AUC值等。

from sklearn.metrics import confusion_matrix, roc_auc_score, roc_curve
y_pred_proba = model.predict_proba(X_test)[:, 1]
fpr, tpr, _ = roc_curve(y_test, y_pred_proba)
auc = roc_auc_score(y_test, y_pred_proba)
print("AUC Score:", auc)

cm = confusion_matrix(y_test, y_pred)
print("Confusion Matrix:\n", cm)

9. 模型保存与加载

在项目中,我们常常需要保存训练好的模型,以便后续使用。sklearn提供了joblib库来实现模型的序列化。

import joblib

# 保存模型
joblib.dump(model, 'model.pkl')

# 加载模型
loaded_model = joblib.load('model.pkl')

10. 模型解释

模型解释有助于理解模型的决策过程。sklearn的LIMESHAP库可以提供局部和全局解释。

!pip install shap lime

from shap import explainer, plot_tree
import lime.lime_tabular

# 使用SHAP进行解释
explainer = explainer.shap.TreeExplainer(model)
shap_values = explainer.shap_values(X_test)
plot_tree(explainer, data=X_test.iloc[0:5], feature_names=X.columns, show=False)

# 使用LIME进行解释
lime_explainer = lime.lime_tabular.LimeTabularExplainer(X_train, feature_names=X.columns, class_names=['Class 0', 'Class 1'], discretize_continuous=True)
exp = lime_explainer.explain_instance(X_test.iloc[0], model.predict_proba, num_features=5)
exp.show_in_notebook()

11. 最后的思考

至此,我们已经覆盖了sklearn的基础知识,包括模型选择、预处理、评估、优化等方面。然而,机器学习是一个不断发展的领域,新的算法和技术不断涌现。因此,持续学习和关注最新进展至关重要。希望这篇教程能为你开启机器学习的大门,祝你在探索AI的世界中取得更多的成就!

目录
相关文章
|
2月前
|
机器学习/深度学习 算法 数据可视化
【机器学习】决策树------迅速了解其基本思想,Sklearn的决策树API及构建决策树的步骤!!!
【机器学习】决策树------迅速了解其基本思想,Sklearn的决策树API及构建决策树的步骤!!!
|
3月前
|
机器学习/深度学习 算法 数据挖掘
从菜鸟到大师:Scikit-learn库实战教程,模型训练、评估、选择一网打尽!
【9月更文挑战第13天】在数据科学与机器学习领域,Scikit-learn是不可或缺的工具。本文通过问答形式,指导初学者从零开始使用Scikit-learn进行模型训练、评估与选择。首先介绍了如何安装库、预处理数据并训练模型;接着展示了如何利用多种评估指标确保模型性能;最后通过GridSearchCV演示了系统化的参数调优方法。通过这些实战技巧,帮助读者逐步成长为熟练的数据科学家。
115 3
|
4月前
|
机器学习/深度学习 数据采集 算法
机器学习到底是什么?附sklearn代码
机器学习到底是什么?附sklearn代码
|
4月前
|
机器学习/深度学习 数据采集 人工智能
【机器学习】klearn基础教程
scikit-learn(通常缩写为sklearn)是一个用于Python编程语言的强大机器学习库。它提供了各种分类、回归、聚类算法,以及数据预处理、降维和模型评估的工具。以下是sklearn的基础教程,帮助你开始使用它
28 3
|
4月前
|
机器学习/深度学习 数据采集 算法
如何使用机器学习神器sklearn做特征工程?
如何使用机器学习神器sklearn做特征工程?
|
5月前
|
机器学习/深度学习 数据采集 数据可视化
Sklearn入门指南:构建你的第一个机器学习模型
【7月更文第22天】在数据科学与机器学习领域,Scikit-learn(简称sklearn)是一个广泛使用的Python库,以其简洁的API和丰富的功能集而著称。本指南将引领你从安装到使用sklearn构建你的第一个机器学习模型,以一个简单的线性回归任务为例,逐步深入理解这个强大的工具。
114 2
|
6月前
|
机器学习/深度学习 数据采集 自然语言处理
机器学习之sklearn基础教程
机器学习之sklearn基础教程
|
6月前
|
机器学习/深度学习 数据处理 计算机视觉
机器学习- Sklearn (交叉验证和Pipeline)
机器学习- Sklearn (交叉验证和Pipeline)
|
16天前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
51 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024
阿里云人工智能平台 PAI 团队发表的图像编辑算法论文在 MM2024 上正式亮相发表。ACM MM(ACM国际多媒体会议)是国际多媒体领域的顶级会议,旨在为研究人员、工程师和行业专家提供一个交流平台,以展示在多媒体领域的最新研究成果、技术进展和应用案例。其主题涵盖了图像处理、视频分析、音频处理、社交媒体和多媒体系统等广泛领域。此次入选标志着阿里云人工智能平台 PAI 在图像编辑算法方面的研究获得了学术界的充分认可。
【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024