← 返回 Day 106 正文

Day 106 · 图解

Day 106 — 机器学习基础:图解

1. 机器学习工作流全景图

┌──────────────────────────────────────────────────────────────────────┐
│                     机器学习完整工作流                                  │
├──────────────────────────────────────────────────────────────────────┤
│                                                                      │
│   📁 数据收集                                                         │
│   ┌─────────────┐                                                    │
│   │ CSV / API   │                                                    │
│   │ 数据库 / 爬虫│                                                    │
│   └──────┬──────┘                                                    │
│          ↓                                                           │
│   🔍 数据探索 (EDA)                                                   │
│   ┌─────────────┐                                                    │
│   │ 统计摘要     │                                                    │
│   │ 可视化       │                                                    │
│   │ 相关性分析   │                                                    │
│   └──────┬──────┘                                                    │
│          ↓                                                           │
│   🧹 数据预处理                                                       │
│   ┌─────────────┐                                                    │
│   │ 缺失值填充   │                                                    │
│   │ 特征编码     │                                                    │
│   │ 特征缩放     │                                                    │
│   │ 特征选择     │                                                    │
│   └──────┬──────┘                                                    │
│          ↓                                                           │
│   ✂️ 数据拆分                                                         │
│   ┌─────────────────────────────────────┐                           │
│   │  ┌──────────────────┐ ┌──────────┐ │                           │
│   │  │   训练集 80%     │ │ 测试集20%│ │                           │
│   │  └──────────────────┘ └──────────┘ │                           │
│   └──────────────────┬──────────────────┘                           │
│                      ↓                                               │
│   🤖 模型训练 & 评估(循环)                                          │
│   ┌──────────────────────────────────────┐                          │
│   │  train → fit → predict → evaluate    │                          │
│   │                    ↑    ↓             │                          │
│   │              调参 ←────┘              │                          │
│   └──────────────────────────────────────┘                          │
│                      ↓                                               │
│   🚀 部署 & 预测                                                     │
│   ┌─────────────┐                                                    │
│   │ 新数据输入   │                                                    │
│   │ 模型预测输出 │                                                    │
│   └─────────────┘                                                    │
│                                                                      │
└──────────────────────────────────────────────────────────────────────┘

2. 三大学习范式对比

┌─────────────────────────────────────────────────────────────────────┐
│                    三大学习范式                                       │
├────────────────┬──────────────────┬──────────────────┬──────────────┤
│                │  监督学习         │  无监督学习       │  强化学习     │
├────────────────┼──────────────────┼──────────────────┼──────────────┤
│ 数据           │  有标签           │  无标签           │  奖励信号     │
│                │  (X, y)          │  (X)             │  (s,a,r,s')  │
├────────────────┼──────────────────┼──────────────────┼──────────────┤
│ 目标           │  学习输入→输出    │  发现数据结构     │  最优策略     │
│                │  的映射关系       │  聚类/降维/异常   │  最大化累计   │
│                │                  │  检测             │  奖励         │
├────────────────┼──────────────────┼──────────────────┼──────────────┤
│ 典型任务       │  分类、回归       │  聚类、降维       │  游戏AI、     │
│                │                  │  异常检测         │  机器人控制   │
├────────────────┼──────────────────┼──────────────────┼──────────────┤
│ 示例           │  垃圾邮件识别     │  客户分群         │  AlphaGo     │
│                │  房价预测         │  文档主题聚类     │  自动驾驶     │
├────────────────┼──────────────────┼──────────────────┼──────────────┤
│ 类比           │  老师教学生做题   │  自己总结规律     │  打游戏试错   │
└────────────────┴──────────────────┴──────────────────┴──────────────┘

3. 混淆矩阵图解

                          预 测 值
                ┌────────────┬────────────┐
                │   预测为正   │   预测为负   │
    ┌───────────┼────────────┼────────────┤
实  │  实际为正  │    TP ✅    │    FN ❌    │
际  │           │  真正例     │  假负例     │
值  │           │  (正确预测)  │  (漏报)     │
    ├───────────┼────────────┼────────────┤
    │  实际为负  │    FP ❌    │    TN ✅    │
    │           │  假正例     │  真负例     │
    │           │  (误报)     │  (正确预测)  │
    └───────────┴────────────┴────────────┘

指标关系:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  准确率 = (TP + TN) / (TP + TN + FP + FN)   ← "猜对了多少"
  精确率 = TP / (TP + FP)                      ← "猜正的对不对"
  召回率 = TP / (TP + FN)                      ← "正的被找到没"
  F1    = 2 × 精确率 × 召回率 / (精确率 + 召回率)  ← 综合
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

4. train_test_split 拆分示意图

  原始数据集 (150 条)
  ┌──────────────────────────────────────────────────────────────┐
  │ ★★★★ ★★★★ ★★★★ ★★★★ ★★★★ ★★★★ ★★★★ ★★★★ ★★★★ ★★★★ ... │
  └──────────────────────────────┬───────────────────────────────┘
                                 │
                    train_test_split(test_size=0.2)
                                 │
                 ┌───────────────┴───────────────┐
                 ↓                               ↓
  ┌──────────────────────────┐   ┌──────────────────────┐
  │  训练集 (80%, 120 条)    │   │  测试集 (20%, 30 条)  │
  │  ★★★★ ★★★★ ★★★★ ...    │   │  ★★★★ ★★★★ ...       │
  │  用于: fit() 训练模型    │   │  用于: predict() 评估  │
  └──────────────────────────┘   └──────────────────────┘

⚠️ 关键:测试集绝对不能参与训练!

5. Scikit-learn API 统一模式

  所有 sklearn 模型都遵循相同的 3 步 API:

  ┌─────────────────────────────────────────────────┐
  │                                                   │
  │   Step 1: model = XxxModel(hyperparams)          │
  │           创建模型对象                              │
  │                                                   │
  │   Step 2: model.fit(X_train, y_train)            │
  │           用训练数据拟合模型                         │
  │           ↓                                       │
  │           模型内部学习参数                          │
  │                                                   │
  │   Step 3: y_pred = model.predict(X_test)         │
  │           用新数据预测                              │
  │           ↓                                       │
  │           输出预测结果                              │
  │                                                   │
  │   附加: score = model.score(X_test, y_test)      │
  │         计算评估指标                               │
  │                                                   │
  └─────────────────────────────────────────────────┘

  记忆口诀:创建 → 拟合(fit) → 预测(predict) → 评估(score)