python库:sklearn(Scikit-learn)机器学习库 作者:马育民 • 2026-01-24 10:38 • 阅读:10001 # 介绍 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 从数据预处理到模型评估的完整流程: ```python # 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` 中转)。 原文出处:http://malaoshi.top/show_1GW2eL3rOd43.html