汇总机器学习从问题定义到部署监控的各个阶段,融合代码实战、实践和可视化建议。
问题定义(Problem Definition)
目标
明确任务类型(监督/非监督/强化)
确定预测目标(标签)
将业务目标映射为机器学习任务
实践要点
| 问题类型 | 特征 | 标签 | 示例 |
|---|---|---|---|
| 监督学习 | ✅ | ✅ | 房价预测、图像分类 |
| 无监督学习 | ✅ | ❌ | 用户聚类、异常检测 |
| 强化学习 | ✅ | 奖励值 | 游戏AI、机器人导航 |
1 |
|
数据收集(Data Collection)
目标
- 获取高质量、相关性强的数据
数据来源
API:如
OpenWeatherMap、金融接口数据库:MySQL、PostgreSQL
爬虫:requests + BeautifulSoup / Scrapy
日志、传感器数据
1 |
|
数据质量评估指标
完整性:缺失比例
准确性:是否符合实际逻辑
一致性:字段是否统一
数据预处理(Data Preprocessing)
目标
- 清洗并准备好适合建模的数据
核心操作
| 操作 | 方法 |
|---|---|
| 缺失值填充 | 均值、中位数、模型预测 |
| 异常值处理 | Z-score、IQR(四分位法) |
| 类型转换 | astype()、日期类型解析 |
| 标准化 | StandardScaler() |
| 归一化 | MinMaxScaler() |
| 数据集划分 | train_test_split()、时间切分 |
1 | from sklearn.preprocessing import StandardScaler |
特征工程(Feature Engineering)
目标
- 提取、选择、构造对模型有利的特征
方法
| 类型 | 示例 |
|---|---|
| 特征选择 | 卡方检验、L1正则 |
| 特征构造 | 特征组合、文本TF-IDF |
| 特征提取 | PCA降维、LDA主题建模 |
| 编码 | 独热编码、标签编码 |
1 | from sklearn.decomposition import PCA |
模型选择(Model Selection)
目标
- 根据任务、数据量和特征维度选择最佳算法
分类模型
- Logistic Regression、决策树、SVM、随机森林、神经网络
回归模型
- 线性回归、XGBoost、LightGBM、岭回归
聚类模型
- K-Means、DBSCAN、GMM
模型对比建议
- 使用交叉验证(K-Fold CV)进行模型泛化能力评估
1 |
|
模型训练(Model Training)
目标
- 用训练集训练模型、调整超参数
超参数调整
| 方法 | 描述 |
|---|---|
| Grid Search | 穷举所有组合 |
| Random Search | 随机采样组合 |
| 贝叶斯优化 | 逐步逼近最优 |
1 | from sklearn.model_selection import GridSearchCV |
模型评估(Model Evaluation)
目标
- 用测试集验证模型性能是否达标
分类指标
准确率(Accuracy)
召回率(Recall)
F1-score
AUC ROC
1 |
|
回归指标
均方误差(MSE)
平均绝对误差(MAE)
决定系数(R²)
1 | from sklearn.metrics import mean_squared_error, r2_score |
过拟合 vs 欠拟合
| 类型 | 表现 | 解决方式 |
|---|---|---|
| 过拟合 | 训练好测试差 | 正则化、简化模型 |
| 欠拟合 | 训练也差 | 增加特征、更复杂模型 |
模型优化(Model Optimization)
目标
- 提升模型性能至业务可用级别
方法汇总
| 类别 | 技术 |
|---|---|
| 数据优化 | 特征选择、数据增强 |
| 模型优化 | 模型融合、结构设计 |
| 超参优化 | GridSearch、BayesOpt |
| 正则化 | L1/L2 降低复杂度 |
集成方法
| 类型 | 描述 |
|---|---|
| Bagging | Bootstrap + Voting(随机森林) |
| Boosting | 迭代优化误差(XGBoost) |
| Stacking | 多模型融合(输出作为特征) |
1 | from sklearn.ensemble import RandomForestClassifier |
模型部署与监控(Deployment & Monitoring)
目标
- 将模型上线并持续监控效果
工具/方式
| 类别 | 工具 |
|---|---|
| API服务 | Flask / FastAPI |
| 模型格式 | Pickle / ONNX / TorchScript |
| 云平台 | AWS Sagemaker / Azure ML |
| 性能监控 | Prometheus + Grafana |
| 模型更新 | 数据漂移检测 + 自动重训 |
关键阶段总结
| 阶段 | 是否关键 | 理由 |
|---|---|---|
| 问题定义 | ✅ | 决定方向与目标 |
| 数据预处理 | ✅ | 保证建模基础 |
| 特征工程 | ✅ | 决定模型天花板 |
| 模型训练/评估 | ✅ | 决定性能上限 |
| 部署与监控 | ✅ | 决定业务落地效果 |
可视化建议
使用
seaborn绘制特征分布、相关性热图使用
matplotlib追踪 loss 曲线使用
Yellowbrick、SHAP进行模型解释
1 | import seaborn as sns |
推荐工具链
| 环节 | 工具 |
|---|---|
| 数据收集 | requests、scrapy、pandas |
| 预处理 | pandas、sklearn |
| 建模 | sklearn、XGBoost、LightGBM |
| 优化 | Optuna、Ray Tune |
| 可视化 | seaborn、matplotlib、Plotly |
| 部署 | Flask、FastAPI、Docker |




