Scikit-learn 中文教程

第二部分:Scikit-learn 核心基础
第 3 章 Scikit-learn 核心设计与 API 体系
第 4 章 数据集模块与数据划分
第三部分:数据预处理与特征工程
第 5 章 数据预处理核心模块(sklearn.preprocessing)
第 6 章 特征工程:提取、选择与构建
第四部分:模型评估与验证
第 7 章 模型评估指标(按任务类型划分)
第 8 章 模型验证与超参数调优
第五部分:Scikit-learn 核心算法模块
第 9 章 有监督学习:分类算法
第 10 章 有监督学习:回归算法
第 11 章 无监督学习:聚类与密度算法
第 12 章 半监督学习与其他常用算法
第八部分:性能优化与问题解决
第 18 章 Scikit-learn 性能优化
第 19 章 Scikit-learn 常见问题与解决方案

3.3 统一的机器学习工作流

Scikit-learn 机器学习工作流:从数据加载到部署的完整指南

Scikit-learn 中文教程

本章节详细介绍了统一的机器学习工作流及其在 Scikit-learn 中的映射,包括数据加载、预处理、特征工程、模型训练、评估、调优和部署环节,并提供一个极简示例帮助新手快速掌握实操技巧。

推荐工具
PyCharm专业版开发必备

功能强大的Python IDE,提供智能代码补全、代码分析、调试和测试工具,提高Python开发效率。特别适合处理列表等数据结构的开发工作。

了解更多

Scikit-learn 机器学习工作流指南

引言

机器学习项目的成功往往依赖于一个标准化的工作流,它可以帮助你从数据中提取价值,并确保模型的可重复性和效率。Scikit-learn(简称 sklearn)作为 Python 中最流行的机器学习库之一,提供了丰富的工具来支持这一工作流。在本章中,我们将探索一个统一的机器学习工作流:数据加载 → 预处理 → 特征工程 → 模型训练 → 评估 → 调优 → 部署,并映射到 Scikit-learn 的具体组件。最后,通过一个极简示例,让你快速落地实操。

工作流各环节的 Scikit-learn 组件映射

以下是标准机器学习工作流中每个环节对应的 Scikit-learn 关键组件或函数,帮助你理解如何利用库中的工具:

工作流环节 Scikit-learn 组件示例 描述
数据加载 sklearn.datasets 模块(如 load_iris() 用于加载内置数据集或自定义数据,支持常见格式。
预处理 sklearn.preprocessing 模块(如 StandardScaler 对数据进行缩放、编码缺失值等处理,确保数据质量。
特征工程 sklearn.feature_selectionsklearn.decomposition(如 PCA 选择重要特征或进行降维,以提高模型性能。
模型训练 各种估计器(如 LogisticRegressionDecisionTreeClassifier 核心模型类,使用 fit() 方法训练数据。
评估 sklearn.metrics 模块(如 accuracy_score 提供评估指标来衡量模型性能。
调优 sklearn.model_selection 模块(如 GridSearchCV 通过交叉验证和网格搜索优化超参数。
部署 joblibpickle 模块(用于模型保存) 将训练好的模型保存和加载,便于在实际应用中部署。

这个映射关系帮助你快速定位 Scikit-learn 中的工具,从而高效地构建机器学习流水线。

工作流标准化实操:极简示例落地

下面我们使用经典的 Iris 数据集,通过一个极简示例演示整个工作流。这个示例适合新手,代码简洁,并覆盖所有关键步骤。

步骤 1:导入必要的库

首先,确保安装好 Scikit-learn(可以使用 pip install scikit-learn 安装)。然后导入所需模块。

import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
from joblib import dump, load

步骤 2:数据加载

使用 Scikit-learn 内置的数据集加载函数来获取数据。

# 加载 Iris 数据集
iris = load_iris()
X = iris.data  # 特征数据
 y = iris.target  # 标签数据
 feature_names = iris.feature_names  # 特征名称(可选)
 target_names = iris.target_names  # 标签名称(可选)
 print("数据形状:", X.shape)
 print("特征名称:", feature_names)

步骤 3:数据预处理

对特征数据进行标准化处理,使其均值为 0,方差为 1,以改善模型性能。

# 创建标准化器并应用于特征数据
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
print("标准化后数据前几行:")
print(X_scaled[:5])

步骤 4:特征工程

虽然 Iris 数据集特征较少,但我们仍使用 PCA(主成分分析)进行特征降维,以简化示例。

# 使用 PCA 减少特征维度到 2 个
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_scaled)
print("PCA 处理后数据形状:", X_pca.shape)

步骤 5:数据分割

将数据集分割为训练集和测试集,以便后续评估。

# 分割数据为训练集和测试集(80% 训练,20% 测试)
X_train, X_test, y_train, y_test = train_test_split(X_pca, y, test_size=0.2, random_state=42)
print("训练集大小:", X_train.shape, "测试集大小:", X_test.shape)

步骤 6:模型训练

选择一个简单模型(如逻辑回归)进行训练。

# 初始化逻辑回归模型
model = LogisticRegression(random_state=42)
# 使用训练数据训练模型
model.fit(X_train, y_train)
print("模型训练完成!")

步骤 7:模型评估

在测试集上评估模型性能,使用准确率作为指标。

# 在测试集上进行预测
y_pred = model.predict(X_test)
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"模型在测试集上的准确率:{accuracy:.2f}")

步骤 8:模型调优

通过网格搜索优化超参数,如逻辑回归的正则化强度。

# 定义超参数网格
param_grid = {'C': [0.1, 1, 10]}  # 正则化参数
# 使用网格搜索进行调优
grid_search = GridSearchCV(LogisticRegression(random_state=42), param_grid, cv=5)
grid_search.fit(X_train, y_train)
print(f"最佳超参数:{grid_search.best_params_}")
print(f"最佳模型准确率:{grid_search.best_score_:.2f}")

步骤 9:模型部署

将训练好的最佳模型保存到文件,以便未来部署使用。

# 使用最佳模型进行预测
best_model = grid_search.best_estimator_
# 保存模型到文件
dump(best_model, 'best_model.joblib')
print("模型已保存为 'best_model.joblib',可用于部署。")

完整示例代码

如果你想一次性运行整个工作流,可以将以上代码合并成一个脚本。这个示例展示了从数据加载到部署的完整流程,使用了 Scikit-learn 的核心组件,适合新手练习和理解。

总结

通过本章,你学习了统一的机器学习工作流及其在 Scikit-learn 中的映射关系。这个标准流程——数据加载、预处理、特征工程、模型训练、评估、调优和部署——是构建稳健机器学习项目的关键。使用 Scikit-learn 的丰富工具,你可以轻松实现每个环节。记住,实践中要根据具体数据集和问题调整步骤,但这个框架为你提供了坚实的基础。尝试使用自己的数据运行示例,逐步深入探索 Scikit-learn 的更多功能吧!

开发工具推荐
Python开发者工具包

包含虚拟环境管理、代码格式化、依赖管理、测试框架等Python开发全流程工具,提高开发效率。特别适合处理复杂数据结构和算法。

获取工具包