机器学习之sklearn基础教程

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
大数据开发治理平台 DataWorks,不限时长
简介: 【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的世界中取得更多的成就!

目录
相关文章
|
23天前
|
机器学习/深度学习 数据采集 算法
机器学习之sklearn基础教程
机器学习之sklearn基础教程
|
23天前
|
机器学习/深度学习 数据可视化 数据处理
python 机器学习 sklearn——一起识别数字吧
python 机器学习 sklearn——一起识别数字吧
|
23天前
|
机器学习/深度学习 Python
python 机器学习 sklearn——手把手教你预测心脏病
python 机器学习 sklearn——手把手教你预测心脏病
|
1月前
|
机器学习/深度学习 算法 Python
深入浅出Python机器学习:从零开始的SVM教程/厾罗
深入浅出Python机器学习:从零开始的SVM教程/厾罗
|
1月前
|
机器学习/深度学习 数据采集 算法
机器学习之sklearn基础教程
机器学习之sklearn基础教程
|
4天前
|
机器学习/深度学习 人工智能 自然语言处理
炸裂!PAI-DSW 和 Free Prompt Editing 图像编辑算法,成就了超神的个人 AIGC 绘图小助理!
【6月更文挑战第11天】PAI-DSW 和 Free Prompt Editing 算法引领图像编辑革命,创造出个人AIGC绘图小助理。PAI-DSW擅长深度图像处理,通过复杂模型和深度学习精准编辑;Free Prompt Editing则允许用户以文本描述编辑图像,拓展编辑创意。结合两者,小助理能根据用户需求生成惊艳图像。简单Python代码示例展示了其魅力,打破传统编辑局限,为专业人士和普通用户提供创新工具,开启图像创作新篇章。未来,它将继续进化,带来更多精彩作品和体验。
|
16天前
|
机器学习/深度学习 算法 TensorFlow
机器学习算法简介:从线性回归到深度学习
【5月更文挑战第30天】本文概述了6种基本机器学习算法:线性回归、逻辑回归、决策树、支持向量机、随机森林和深度学习。通过Python示例代码展示了如何使用Scikit-learn、statsmodels、TensorFlow库进行实现。这些算法在不同场景下各有优势,如线性回归处理连续值,逻辑回归用于二分类,决策树适用于规则提取,支持向量机最大化类别间隔,随机森林集成多个决策树提升性能,而深度学习利用神经网络解决复杂模式识别问题。理解并选择合适算法对提升模型效果至关重要。
185 4
|
2天前
|
机器学习/深度学习 数据采集 算法
机器学习入门:算法与数据的探索之旅
【6月更文挑战第13天】本文介绍了机器学习的基础,包括算法和数据处理的重要性。机器学习算法分为监督学习(如线性回归、决策树)、非监督学习(如聚类、降维)和强化学习。数据处理涉及数据清洗、特征工程、数据分割及标准化,是保证模型性能的关键。对于初学者,建议学习基础数学、动手实践、阅读经典资料和参与在线课程与社区讨论。
|
3天前
|
机器学习/深度学习 人工智能 算法
算法金 | 一文彻底理解机器学习 ROC-AUC 指标
```markdown # ROC曲线与AUC详解:评估分类模型利器 本文深入浅出解释ROC曲线和AUC,通过实例和代码帮助理解其在模型评估中的重要性,旨在提升对分类模型性能的理解和应用。 ```
37 13
算法金 | 一文彻底理解机器学习 ROC-AUC 指标
|
5天前
|
机器学习/深度学习 算法 大数据
【机器学习】朴素贝叶斯算法及其应用探索
在机器学习的广阔领域中,朴素贝叶斯分类器以其实现简单、计算高效和解释性强等特点,成为了一颗璀璨的明星。尽管名字中带有“朴素”二字,它在文本分类、垃圾邮件过滤、情感分析等多个领域展现出了不凡的效果。本文将深入浅出地介绍朴素贝叶斯的基本原理、数学推导、优缺点以及实际应用案例,旨在为读者构建一个全面而深刻的理解框架。
9 1