机器学习之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的世界中取得更多的成就!

目录
相关文章
|
5天前
|
机器学习/深度学习 算法 Python
深入浅出Python机器学习:从零开始的SVM教程/厾罗
深入浅出Python机器学习:从零开始的SVM教程/厾罗
|
5天前
|
机器学习/深度学习 数据采集 算法
机器学习之sklearn基础教程
机器学习之sklearn基础教程
|
5天前
|
算法框架/工具 TensorFlow 机器学习/深度学习
Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(九)(2)
Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(九)
157 0
Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(九)(2)
|
5天前
|
机器学习/深度学习 算法框架/工具 TensorFlow
Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(九)(1)
Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(九)
47 0
Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(九)(1)
|
5天前
|
机器学习/深度学习 人工智能 算法框架/工具
Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(八)(4)
Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(八)
36 0
Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(八)(4)
|
5天前
|
异构计算 算法框架/工具 TensorFlow
Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(八)(3)
Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(八)
25 0
Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(八)(3)
|
5天前
|
算法 机器学习/深度学习 算法框架/工具
Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(八)(2)
Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(八)
44 0
Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(八)(2)
|
5天前
|
机器学习/深度学习 算法 算法框架/工具
Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(八)(1)
Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(八)
43 0
Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(八)(1)
|
5天前
|
机器学习/深度学习 数据采集 自然语言处理
理解并应用机器学习算法:神经网络深度解析
【5月更文挑战第15天】本文深入解析了神经网络的基本原理和关键组成,包括神经元、层、权重、偏置及损失函数。介绍了神经网络在图像识别、NLP等领域的应用,并涵盖了从数据预处理、选择网络结构到训练与评估的实践流程。理解并掌握这些知识,有助于更好地运用神经网络解决实际问题。随着技术发展,神经网络未来潜力无限。
|
2天前
|
机器学习/深度学习 算法 数据处理
探索机器学习中的决策树算法
【5月更文挑战第18天】探索机器学习中的决策树算法,一种基于树形结构的监督学习,常用于分类和回归。算法通过递归划分数据,选择最优特征以提高子集纯净度。优点包括直观、高效、健壮和可解释,但易过拟合、对连续数据处理不佳且不稳定。广泛应用于信贷风险评估、医疗诊断和商品推荐等领域。优化方法包括集成学习、特征工程、剪枝策略和参数调优。
http://www.vxiaotou.com