python库:sklearn(Scikit-learn)机器学习库

介绍

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)

注意事项

  1. 数据格式要求:sklearn 所有输入必须是二维数组(即使是单特征,也要用 (n_samples, 1) 而非 (n_samples,));
  2. 避免数据泄露:预处理的 fit() 只能在训练集上执行,测试集仅用 transform();
  3. 超参数调优:不要直接用测试集调参,建议用 GridSearchCV 或 cross_val_score 做交叉验证。

总结

  1. sklearn 是传统机器学习的“瑞士军刀”,接口统一、功能全面,覆盖数据预处理→模型训练→评估全流程;
  2. 核心优势是易用性和通用性,适合快速验证机器学习思路,新手优先掌握 train_test_split、StandardScaler、RandomForest 等基础工具;
  3. 与 PyTorch 互补:sklearn 负责传统 ML/数据预处理,PyTorch 负责深度学习,可无缝衔接(通过 numpy 中转)。

原文出处:/show_1GW2eL3rOd43.html