← 返回 Day 125 正文

Day 125 · 图解

Day 125 — 综合 AI 应用:图解

1. 端到端 ML 项目流程

┌─────────────────────────────────────────────────────────────────┐
│                    综合 AI 应用 - 端到端流程                      │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  Phase 1: 数据阶段                                               │
│  ┌──────────┐    ┌──────────┐    ┌──────────┐    ┌──────────┐  │
│  │  数据获取  │───▶│  数据清洗  │───▶│ 数据探索  │───▶│ 特征工程  │  │
│  │ CSV/API  │    │ 去重/缺失 │    │ EDA分析  │    │ TF-IDF   │  │
│  └──────────┘    └──────────┘    └──────────┘    └──────────┘  │
│                                                       │        │
│  Phase 2: 模型阶段                                    │        │
│  ┌──────────┐    ┌──────────┐    ┌──────────┐         │        │
│  │ 模型训练  │◀───│ 数据分割  │◀───│ 特征矩阵  │◀────────┘        │
│  │ 多模型   │    │ 80/20    │    │ X_train  │                   │
│  └──────────┘    └──────────┘    └──────────┘                   │
│       │                                                         │
│       ▼                                                         │
│  ┌──────────┐    ┌──────────┐    ┌──────────┐                   │
│  │ 评估对比  │───▶│ 选择最佳  │───▶│ 保存模型  │                   │
│  │ F1/Acc   │    │ 交叉验证  │    │ joblib   │                   │
│  └──────────┘    └──────────┘    └──────────┘                   │
│                                       │                          │
│  Phase 3: 部署阶段                      │                          │
│  ┌──────────┐    ┌──────────┐         │                          │
│  │ FastAPI  │◀───│ 加载模型  │◀────────┘                          │
│  │ REST API │    │ 预测接口  │                                   │
│  └──────────┘    └──────────┘                                   │
│       │                                                          │
│       ▼                                                          │
│  ┌──────────┐    ┌──────────┐                                   │
│  │ 监控统计  │───▶│ 持续迭代  │                                   │
│  │ 漂移检测  │    │ 模型更新  │                                   │
│  └──────────┘    └──────────┘                                   │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

2. TF-IDF 特征工程

输入文本: "这款手机壳质量很好,推荐购买"

┌──────────────────────────────────────────────────────────────┐
│                    TF-IDF 向量化过程                          │
├──────────────────────────────────────────────────────────────┤
│                                                              │
│  Step 1: 分词                                                │
│  ┌─────────────────────────────────────────────┐            │
│  │ ["这款", "手机壳", "质量", "很好", "推荐", "购买"] │            │
│  └─────────────────────────────────────────────┘            │
│                         │                                    │
│                         ▼                                    │
│  Step 2: 计算 TF (词频)                                      │
│  ┌─────────────────────────────────────────────┐            │
│  │ TF(质量) = 1/6 ≈ 0.167                      │            │
│  │ TF(很好) = 1/6 ≈ 0.167                      │            │
│  └─────────────────────────────────────────────┘            │
│                         │                                    │
│                         ▼                                    │
│  Step 3: 计算 IDF (逆文档频率)                                │
│  ┌─────────────────────────────────────────────┐            │
│  │ IDF(质量) = log(N/df) = log(1000/200) ≈ 1.61│            │
│  │ IDF(很好) = log(N/df) = log(1000/50) ≈ 3.00 │            │
│  └─────────────────────────────────────────────┘            │
│                         │                                    │
│                         ▼                                    │
│  Step 4: TF-IDF = TF × IDF                                   │
│  ┌─────────────────────────────────────────────┐            │
│  │ TF-IDF(质量) = 0.167 × 1.61 ≈ 0.269        │            │
│  │ TF-IDF(很好) = 0.167 × 3.00 ≈ 0.501        │            │
│  └─────────────────────────────────────────────┘            │
│                                                              │
│  输出: 稀疏向量 [0, 0, ..., 0.269, ..., 0.501, ..., 0]       │
│                                                              │
└──────────────────────────────────────────────────────────────┘

3. 模型训练与评估流程

┌──────────────────────────────────────────────────────────────┐
│                    模型训练评估流程                            │
├──────────────────────────────────────────────────────────────┤
│                                                              │
│  ┌─────────────┐                                             │
│  │ 训练数据集   │                                             │
│  │ X_train     │                                             │
│  │ y_train     │                                             │
│  └──────┬──────┘                                             │
│         │                                                    │
│         ├──────────────────────────────────┐                 │
│         ▼                                  ▼                 │
│  ┌─────────────┐                   ┌─────────────┐          │
│  │  逻辑回归    │                   │    SVM      │          │
│  │  训练       │                   │   训练      │          │
│  └──────┬──────┘                   └──────┬──────┘          │
│         │                                  │                 │
│         ▼                                  ▼                 │
│  ┌─────────────┐                   ┌─────────────┐          │
│  │  预测评估    │                   │  预测评估    │          │
│  │  F1=0.85    │                   │  F1=0.87    │          │
│  └──────┬──────┘                   └──────┬──────┘          │
│         │                                  │                 │
│         └──────────┬───────────────────────┘                 │
│                    ▼                                         │
│           ┌─────────────┐                                    │
│           │  模型对比    │                                    │
│           │  选择最佳    │                                    │
│           └──────┬──────┘                                    │
│                  │                                           │
│                  ▼                                           │
│           ┌─────────────┐                                    │
│           │  保存模型    │                                    │
│           │  部署上线    │                                    │
│           └─────────────┘                                    │
│                                                              │
└──────────────────────────────────────────────────────────────┘

4. FastAPI 部署架构

┌──────────────────────────────────────────────────────────────┐
│                    FastAPI 部署架构                            │
├──────────────────────────────────────────────────────────────┤
│                                                              │
│  客户端层                                                     │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐                   │
│  │ Web 前端  │  │ 移动端    │  │ 其他服务  │                   │
│  └─────┬────┘  └─────┬────┘  └─────┬────┘                   │
│        │              │              │                        │
│        └──────────────┼──────────────┘                        │
│                       │ HTTP/JSON                             │
│                       ▼                                       │
│  API 层                                                        │
│  ┌──────────────────────────────────────────┐                │
│  │              FastAPI Server               │                │
│  │  ┌─────────┐  ┌─────────┐  ┌─────────┐ │                │
│  │  │ /predict │  │ /batch  │  │ /health │ │                │
│  │  │ 单条预测 │  │ 批量预测 │  │ 健康检查 │ │                │
│  │  └────┬────┘  └────┬────┘  └─────────┘ │                │
│  │       │             │                    │                │
│  │       ▼             ▼                    │                │
│  │  ┌─────────────────────────┐             │                │
│  │  │     模型推理引擎         │             │                │
│  │  │  ┌──────────────────┐  │             │                │
│  │  │  │ TF-IDF Vectorizer│  │             │                │
│  │  │  └────────┬─────────┘  │             │                │
│  │  │           ▼             │             │                │
│  │  │  ┌──────────────────┐  │             │                │
│  │  │  │  ML Model        │  │             │                │
│  │  │  │  (LogisticReg)   │  │             │                │
│  │  │  └──────────────────┘  │             │                │
│  │  └─────────────────────────┘             │                │
│  └──────────────────────────────────────────┘                │
│                                                              │
│  存储层                                                       │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐                   │
│  │ 模型文件  │  │ 配置文件  │  │ 日志文件  │                   │
│  │ .joblib  │  │ .yaml    │  │ .log     │                   │
│  └──────────┘  └──────────┘  └──────────┘                   │
│                                                              │
└──────────────────────────────────────────────────────────────┘

5. Mermaid 流程图

graph TD A[原始数据] --> B[数据清洗] B --> C[数据探索 EDA] C --> D[特征工程 TF-IDF] D --> E[数据分割 80/20] E --> F[逻辑回归训练] E --> G[SVM 训练] E --> H[朴素贝叶斯训练] F --> I[模型评估] G --> I H --> I I --> J{选择最佳模型} J --> K[交叉验证] K --> L[保存模型 joblib] L --> M[FastAPI 部署] M --> N[单条预测 API] M --> O[批量预测 API] M --> P[健康检查 API] N --> Q[监控与统计] O --> Q P --> Q Q --> R{模型漂移检测} R -->|正常| M R -->|漂移| S[重新训练] S --> A
graph TD
    A[原始数据] --> B[数据清洗]
    B --> C[数据探索 EDA]
    C --> D[特征工程 TF-IDF]
    D --> E[数据分割 80/20]

    E --> F[逻辑回归训练]
    E --> G[SVM 训练]
    E --> H[朴素贝叶斯训练]

    F --> I[模型评估]
    G --> I
    H --> I

    I --> J{选择最佳模型}
    J --> K[交叉验证]
    K --> L[保存模型 joblib]
    L --> M[FastAPI 部署]

    M --> N[单条预测 API]
    M --> O[批量预测 API]
    M --> P[健康检查 API]

    N --> Q[监控与统计]
    O --> Q
    P --> Q

    Q --> R{模型漂移检测}
    R -->|正常| M
    R -->|漂移| S[重新训练]
    S --> A