scikit-learn(sklearn)

第一部分:scikit-learn 全面概述

1.1 什么是 scikit-learn

scikit-learn(简称 sklearn)是一个基于 Python 的开源机器学习库,广泛用于数据分析、建模和预测。它建立在 NumPy、SciPy 和 Matplotlib 之上,提供了从数据预处理到模型评估的完整工具链。其核心特点包括:

  • 统一 API:几乎所有工具和模型都遵循相同的接口(如 fittransformpredict),极大降低了学习曲线。
  • 模块化设计:分为预处理、特征工程、监督学习、无监督学习、模型选择等模块。
  • 高效性:底层使用 C 和 Cython 优化,适合中小规模数据集。
  • 开源性:BSD 许可证,社区活跃,文档详尽(https://scikit-learn.org/stable/)。

1.2 核心功能

scikit-learn 的功能覆盖了机器学习工作流的各个阶段:

  1. 数据预处理:清洗、标准化、编码。
  2. 特征工程:特征选择、提取、降维。
  3. 监督学习:分类、回归。
  4. 无监督学习:聚类、降维、异常检测。
  5. 模型选择:交叉验证、超参数调优。
  6. 管道与组合:整合工作流。
  7. 评估与可视化:性能指标、结果分析。

1.3 安装与环境准备

安装 scikit-learn 及其依赖:

# 使用 pip
pip install scikit-learn numpy pandas matplotlib

# 使用 conda
conda install scikit-learn

验证安装:

import sklearn
print(sklearn.__version__)  # 截至2023年,最新为1.3.x

推荐环境:Python 3.8+,Jupyter Notebook 或 VS Code。


第二部分:scikit-learn 的统一 API 设计

scikit-learn 的最大优势是其一致的 API 设计,无论是预处理工具、特征选择器还是模型,调用方式高度相似。这种设计让用户只需掌握少数几个核心方法,就能操作几乎所有功能。

2.1 核心方法

以下是 scikit-learn 工具和模型的通用方法:

  • 初始化model = ClassName(params),创建对象并设置参数。
  • 训练/拟合model.fit(X, y),用数据训练模型(监督学习)或拟合数据(无监督学习)。
  • 预测/转换
    • 监督学习:model.predict(X)(分类/回归预测)。
    • 预处理/特征提取:model.transform(X)model.fit_transform(X)
  • 评估model.score(X, y),返回模型的默认评估指标(如分类的准确率、回归的 R²)。
  • 获取属性:如 model.coef_(线性模型的权重)、model.feature_importances_(树模型的特征重要性)。

2.2 API 一致性的体现

以下是不同类型工具的调用示例,展示其相似性:

示例 1:数据预处理(StandardScaler

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()  # 初始化
scaler.fit(X_train)       # 拟合,计算均值和方差
X_scaled = scaler.transform(X_train)  # 转换
# 或者一步完成:X_scaled = scaler.fit_transform(X_train)

示例 2:特征提取(PCA

from sklearn.decomposition import PCA
pca = PCA(n_components=2)  # 初始化
pca.fit(X_train)          # 拟合,计算主成分
X_pca = pca.transform(X_train)  # 转换
# 或者:X_pca = pca.fit_transform(X_train)

示例 3:监督学习(LogisticRegression

from sklearn.linear_model import LogisticRegression
clf = LogisticRegression()  # 初始化
clf.fit(X_train, y_train)  # 训练
y_pred = clf.predict(X_test)  # 预测
score = clf.score(X_test, y_test)  # 评估

示例 4:无监督学习(KMeans

from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=3)  # 初始化
kmeans.fit(X_train)           # 拟合,计算簇中心
labels = kmeans.predict(X_train)  # 预测簇标签

总结

  • 相同点:都使用 fit 学习数据特性,transformpredict 应用于新数据。
  • 差异点
    • 预处理和特征提取用 transform 输出转换后的数据。
    • 监督学习用 predict 输出标签或值。
    • 无监督学习(如聚类)的 predict 输出簇标签。
  • 注意fit 通常只在训练数据上调用,transformpredict 可用于训练或测试数据。

2.3 一致性带来的好处

  • 代码复用:相同的调用模式减少学习成本。
  • 模块组合:可以通过 Pipeline 无缝整合多个步骤。
  • 调试方便:统一接口便于排查问题。

第三部分:scikit-learn 工具与模型详解

以下按功能模块逐一讲解,并比较工具/模型的调用方式,突出相同点和差异点。

3.1 数据预处理(sklearn.preprocessing

预处理是机器学习的第一步,scikit-learn 提供多种工具,调用方式高度一致。

3.1.1 标准化和归一化

  • StandardScaler:将特征缩放到均值为 0,方差为 1。
  • MinMaxScaler:将特征缩放到指定范围(如 [0, 1])。
  • RobustScaler:对异常值更鲁棒,使用中位数和四分位距。

调用示例

from sklearn.preprocessing import StandardScaler, MinMaxScaler
scaler1 = StandardScaler()
scaler2 = MinMaxScaler(feature_range=(0,<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱看烟花的码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值