介绍
Scikit-learn(简称 sklearn),是基于 NumPy、SciPy 和 Matplotlib 构建的通用机器学习库,专注于传统机器学习算法(区别于 PyTorch/TensorFlow 的深度学习),提供了从数据预处理、模型训练、模型评估到模型部署的一站式工具。
特点
- 接口统一:所有算法(分类、回归、聚类等)都遵循
fit()/predict()/score()的统一接口,上手成本低; - 文档完善:自带详细的文档和示例,适合新手学习;
- 专注传统 ML:覆盖分类、回归、聚类、降维、特征工程等,但不支持 GPU 加速,也没有深度学习相关模块。
与其他库的分工
| 库 | 核心定位 | 典型场景 |
|---|---|---|
| NumPy | 基础数组操作 | 数据存储、基础运算 |
| SciPy | 高阶科学计算 | 统计分析、数值优化 |
| sklearn | 传统机器学习 | 分类/回归/聚类、特征工程 |
| PyTorch | 深度学习(GPU 加速) | 神经网络、大规模数据训练 |
核心模块及常用功能
sklearn 按机器学习流程划分模块,新手常用的核心模块如下:
| 模块 | 核心功能 | 常用工具 |
|---|---|---|
sklearn.preprocessing |
数据预处理(归一化、编码、缺失值处理) | StandardScaler、OneHotEncoder |
sklearn.model_selection |
数据集划分、超参数调优 | train_test_split、GridSearchCV |
sklearn.linear_model |
线性模型(回归/分类) | LinearRegression、LogisticRegression |
sklearn.ensemble |
集成学习(强性能模型) | RandomForestClassifier、XGBClassifier(需额外安装xgboost) |
sklearn.metrics |
模型评估指标 | accuracy_score、r2_score、confusion_matrix |
sklearn.cluster |
聚类算法 | KMeans、DBSCAN |
sklearn.decomposition |
降维算法 | PCA(主成分分析) |
安装
准备
sklearn 依赖 NumPy 和 SciPy,且对版本有一定要求,建议先确认 / 升级这两个基础库
# 升级pip(避免安装失败)
pip install --upgrade pip
# 升级NumPy和SciPy(确保版本兼容)
pip install --upgrade numpy scipy
pip 安装
# 基础安装(安装最新稳定版)
pip install scikit-learn
# 安装指定版本(比如需要0.24.2版本)
pip install scikit-learn==0.24.2
# 国内用户建议用镜像源加速(避免下载慢/超时)
pip install scikit-learn -i https://pypi.tuna.tsinghua.edu.cn/simple
例子
下面以鸢尾花分类任务为例,演示 sklearn 从数据预处理到模型评估的完整流程:
# 1. 导入核心模块
import numpy as np
from sklearn.datasets import load_iris # 内置数据集
from sklearn.model_selection import train_test_split # 划分数据集
from sklearn.preprocessing import StandardScaler # 数据归一化
from sklearn.ensemble import RandomForestClassifier # 随机森林分类器
from sklearn.metrics import accuracy_score, confusion_matrix # 评估指标
# 2. 加载并预处理数据
# 加载内置数据集(鸢尾花:特征+标签)
iris = load_iris()
X = iris.data # 特征矩阵 (150, 4)
y = iris.target # 标签 (150,)
# 划分训练集/测试集(70%训练,30%测试)
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.3, random_state=42 # random_state固定随机种子,结果可复现
)
# 数据归一化(特征缩放,提升模型性能)
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train) # 训练集:fit+transform
X_test_scaled = scaler.transform(X_test) # 测试集:仅transform(避免数据泄露)
# 3. 训练模型
model = RandomForestClassifier(n_estimators=100, random_state=42) # 初始化模型
model.fit(X_train_scaled, y_train) # 训练模型(核心:fit方法)
# 4. 模型预测与评估
y_pred = model.predict(X_test_scaled) # 预测测试集(核心:predict方法)
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"模型准确率: {accuracy:.2f}") # 输出:模型准确率: 1.00
# 混淆矩阵(查看分类细节)
cm = confusion_matrix(y_test, y_pred)
print("混淆矩阵:\n", cm)
注意事项
- 数据格式要求:sklearn 所有输入必须是二维数组(即使是单特征,也要用
(n_samples, 1)而非(n_samples,)); - 避免数据泄露:预处理的
fit()只能在训练集上执行,测试集仅用transform(); - 超参数调优:不要直接用测试集调参,建议用
GridSearchCV或cross_val_score做交叉验证。
总结
- sklearn 是传统机器学习的“瑞士军刀”,接口统一、功能全面,覆盖数据预处理→模型训练→评估全流程;
- 核心优势是易用性和通用性,适合快速验证机器学习思路,新手优先掌握
train_test_split、StandardScaler、RandomForest等基础工具; - 与 PyTorch 互补:sklearn 负责传统 ML/数据预处理,PyTorch 负责深度学习,可无缝衔接(通过
numpy中转)。