汇总机器学习从问题定义到部署监控的各个阶段,融合代码实战、实践和可视化建议。


问题定义(Problem Definition)

目标

  • 明确任务类型(监督/非监督/强化)

  • 确定预测目标(标签)

  • 将业务目标映射为机器学习任务

实践要点

问题类型 特征 标签 示例
监督学习 房价预测、图像分类
无监督学习 用户聚类、异常检测
强化学习 奖励值 游戏AI、机器人导航
1
2
3
4
    
# 示例:API 拉取数据
import requests
data = requests.get("https://api.example.com/data").json()

数据收集(Data Collection)

目标

  • 获取高质量、相关性强的数据

数据来源

  • API:如 OpenWeatherMap金融接口

  • 数据库:MySQL、PostgreSQL

  • 爬虫:requests + BeautifulSoup / Scrapy

  • 日志、传感器数据

1
2
3
4
    
# 示例:API 拉取数据
import requests
data = requests.get("https://api.example.com/data").json()

数据质量评估指标

  • 完整性:缺失比例

  • 准确性:是否符合实际逻辑

  • 一致性:字段是否统一


数据预处理(Data Preprocessing)

目标

  • 清洗并准备好适合建模的数据

核心操作

操作 方法
缺失值填充 均值、中位数、模型预测
异常值处理 Z-score、IQR(四分位法)
类型转换 astype()、日期类型解析
标准化 StandardScaler()
归一化 MinMaxScaler()
数据集划分 train_test_split()、时间切分
1
2
3
from sklearn.preprocessing import StandardScaler  
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

特征工程(Feature Engineering)

目标

  • 提取、选择、构造对模型有利的特征

方法

类型 示例
特征选择 卡方检验、L1正则
特征构造 特征组合、文本TF-IDF
特征提取 PCA降维、LDA主题建模
编码 独热编码、标签编码
1
2
3
from sklearn.decomposition import PCA  
pca = PCA(n_components=10)
X_pca = pca.fit_transform(X)

模型选择(Model Selection)

目标

  • 根据任务、数据量和特征维度选择最佳算法

分类模型

  • Logistic Regression、决策树、SVM、随机森林、神经网络

回归模型

  • 线性回归、XGBoost、LightGBM、岭回归

聚类模型

  • K-Means、DBSCAN、GMM

模型对比建议

  • 使用交叉验证(K-Fold CV)进行模型泛化能力评估
1
2
3

from sklearn.model_selection import cross_val_score
scores = cross_val_score(model, x, y, cv=5)

模型训练(Model Training)

目标

  • 用训练集训练模型、调整超参数

超参数调整

方法 描述
Grid Search 穷举所有组合
Random Search 随机采样组合
贝叶斯优化 逐步逼近最优
1
2
3
4
from sklearn.model_selection import GridSearchCV  
param_grid = {'n_estimators': [100, 200], 'max_depth': [3, 5]}
gs = GridSearchCV(model, param_grid, cv=3)
gs.fit(X_train, y_train)

模型评估(Model Evaluation)

目标

  • 用测试集验证模型性能是否达标

分类指标

  • 准确率(Accuracy)

  • 召回率(Recall)

  • F1-score

  • AUC ROC

1
2
3
 
from sklearn.metrics import classification_report
print(classification_report(y_test, y_pred))

回归指标

  • 均方误差(MSE)

  • 平均绝对误差(MAE)

  • 决定系数(R²)

1
2
3
from sklearn.metrics import mean_squared_error, r2_score  
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)

过拟合 vs 欠拟合

类型 表现 解决方式
过拟合 训练好测试差 正则化、简化模型
欠拟合 训练也差 增加特征、更复杂模型

模型优化(Model Optimization)

目标

  • 提升模型性能至业务可用级别

方法汇总

类别 技术
数据优化 特征选择、数据增强
模型优化 模型融合、结构设计
超参优化 GridSearch、BayesOpt
正则化 L1/L2 降低复杂度

集成方法

类型 描述
Bagging Bootstrap + Voting(随机森林)
Boosting 迭代优化误差(XGBoost)
Stacking 多模型融合(输出作为特征)
1
2
from sklearn.ensemble import RandomForestClassifier  
model = RandomForestClassifier(n_estimators=100)

模型部署与监控(Deployment & Monitoring)

目标

  • 将模型上线并持续监控效果

工具/方式

类别 工具
API服务 Flask / FastAPI
模型格式 Pickle / ONNX / TorchScript
云平台 AWS Sagemaker / Azure ML
性能监控 Prometheus + Grafana
模型更新 数据漂移检测 + 自动重训

关键阶段总结

阶段 是否关键 理由
问题定义 决定方向与目标
数据预处理 保证建模基础
特征工程 决定模型天花板
模型训练/评估 决定性能上限
部署与监控 决定业务落地效果

可视化建议

  • 使用 seaborn 绘制特征分布、相关性热图

  • 使用 matplotlib 追踪 loss 曲线

  • 使用 YellowbrickSHAP 进行模型解释

1
2
3
import seaborn as sns  
sns.heatmap(df.corr(), annot=True)


推荐工具链

环节 工具
数据收集 requests、scrapy、pandas
预处理 pandas、sklearn
建模 sklearn、XGBoost、LightGBM
优化 Optuna、Ray Tune
可视化 seaborn、matplotlib、Plotly
部署 Flask、FastAPI、Docker