人工智能学习笔记 - 编程与工具 - 机器学习库

63 阅读2分钟

人工智能学习笔记 - 编程与工具 - 机器学习库

Python 生态中最经典、最成熟的机器学习库 scikit-learn(sklearn) 。该库覆盖了绝大多数传统机器学习的监督与无监督算法,并提供完善的模型评估、特征工程与流程化工具,是机器学习入门与工程实践的核心基础。


scikit-learn 概述

scikit-learn 是基于 NumPy、SciPy 构建的机器学习库,强调:

  • 接口统一、使用简单
  • 算法实现稳定、文档完善
  • 适合教学、研究与工业原型开发

其核心设计遵循「fit → transform / predict」的统一范式。


常见算法类型

监督学习(Supervised Learning)

  • 分类算法

    • 逻辑回归(Logistic Regression)
    • 支持向量机(SVM)
    • K 近邻(KNN)
    • 决策树、随机森林
    • 梯度提升(GBDT)
  • 回归算法

    • 线性回归 / 岭回归 / Lasso
    • 支持向量回归(SVR)
    • 随机森林回归

无监督学习(Unsupervised Learning)

  • 聚类

    • K-Means
    • DBSCAN
    • 层次聚类
  • 降维

    • PCA(主成分分析)
    • ICA
    • t-SNE(主要用于可视化)

模型训练与预测范式

from sklearn.linear_model import LogisticRegression

model = LogisticRegression()
model.fit(X_train, y_train)   # 训练模型
y_pred = model.predict(X_test)  # 预测结果
  • fit():从数据中学习模型参数
  • predict():对新数据进行预测

模型选择与评估

训练 / 验证划分

from sklearn.model_selection import train_test_split
  • train_test_split:将数据划分为训练集和测试集

交叉验证(Cross Validation)

from sklearn.model_selection import cross_val_score
  • cross_val_score:通过多折交叉验证评估模型泛化能力

超参数搜索

from sklearn.model_selection import GridSearchCV
  • GridSearchCV:基于网格搜索自动寻找最优超参数组合

特征工程工具

  • 特征缩放

    • StandardScaler(标准化)
    • MinMaxScaler(归一化)
  • 类别特征编码

    • OneHotEncoder
    • LabelEncoder
  • 特征选择

    • 基于方差、相关性或模型的重要性

Pipeline(流水线)

  • Pipeline:将 数据预处理 + 模型训练 串联为一个整体

  • 优点:

    • 避免数据泄漏
    • 代码结构清晰
    • 便于交叉验证与部署

示意流程:原始数据 → 标准化 → 特征变换 → 模型训练 → 预测

import numpy as np
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression

# 1. 构造示例数据
X = np.array([
    [1.0, 2.0],
    [2.0, 1.0],
    [2.0, 3.0],
    [3.0, 2.0]
])
y = np.array([0, 0, 1, 1])

# 2. 构建 Pipeline:标准化 + 逻辑回归
pipeline = Pipeline([
    ("scaler", StandardScaler()),        # 对特征进行标准化(均值0,方差1)
    ("model", LogisticRegression())      # 逻辑回归分类模型
])

# 3. 训练模型
pipeline.fit(X, y)

# 4. 使用 Pipeline 进行预测
X_new = np.array([[2.5, 2.5]])
y_pred = pipeline.predict(X_new)

print("预测结果:", y_pred)