优化的起点#
平台基本功能跑通后,我问 AI 了一个开放性问题:
针对当前平台,从用户体验角度,有哪些可优化的方向?请按必要性排序。
AI 返回了 8 个方向,我选了前 6 个(P0-P2):
| 优先级 | 优化方向 | 解决什么问题 |
|---|---|---|
| P0 | 训练过程可见性 | 用户盯着"运行中"三个字几分钟,完全不知道进度 |
| P0 | 训练前数据探索 | 用户不了解数据分布就做特征选择 |
| P1 | 错误反馈可操作 | Python traceback 看不懂 |
| P1 | 跨任务模型对比 | 每个训练结果相互隔离,无法横向比较 |
| P2 | 任务队列透明化 | solo pool 排队中不知道前面还有几个 |
| P2 | 流程串联优化 | 6 个页面相互独立,上下文在跳转中丢失 |
P0:训练过程可见性#
AI 设计了一个很优雅的 ProgressCallback 机制:
- 每个
task_type定义阶段列表(如监督学习 7 步、聚类 4 步) - 每个阶段入口调用
progress_callback('stage_name', message='...'),写入MLTask.progress_info(JSONField) - 前端每 2s 轮询时拿到进度数据:进度条百分比、当前阶段名、实时日志
监督学习进度条:
数据导入 → 预处理 → 相关性分析 → 特征选择 → 模型训练 → 超参数调优 → 模型保存P1:错误反馈可操作#
AI 利用 ml_utils.py 中已有的异常体系(MLDataError、MLFeatureError 等),按异常类型映射到 5 个类别:
{
"category": "data_quality",
"category_display": "数据质量问题",
"icon": "📄",
"summary": "数据中存在大量缺失值",
"suggestion": "建议在预处理阶段移除缺失率过高的列"
}这比直接给用户看
Traceback (most recent call last): ...友好太多了。每个错误都有 中文摘要 + 修复建议,用户可以直接按建议操作。
P0:数据探索面板#
上传 CSV 后,预览模态框扩展为 4 个 Tab:
- 原始数据:前 5 行表格
- 统计描述:数值列 describe 表格 + 分类列频率表
- 分布图:ECharts 直方图(数值列)/ 柱状图(分类列)
- 相关性:RdBu 发散色板热力图
热力图踩坑:ECharts 在 display:none 容器中宽高为 0
热力图在 Bootstrap Tab 中,非活动 Tab 是 display:none。ECharts 在隐藏容器中初始化时拿到 0 尺寸,渲染出来是一条细线。
解决方案:监听 Bootstrap 的 shown.bs.tab 事件,用户切到"相关性"Tab 时才初始化 ECharts 图表。

P1:跨任务模型对比#
新增任务对比页面,支持 2-5 个同类型已完成任务的横向对比:
- 指标表格:最佳值绿色高亮,最差值红色
- ECharts 分组柱状图:模型性能对比
- 特征对比表:交集/差集
- 参数差异表
P2:流程串联——工作流步骤指示器#
在导航栏下方加一个 5 步进度条:
1.数据管理 → 2.特征配置 → 3.模型训练 → 4.结果查看 → 5.在线预测当前步骤高亮,已完成步骤绿色,未到达步骤灰色。通过 URL pathname 自动判断当前步骤。
同时每个步骤完成后页面自动提示"下一步":
- 上传完数据 → “前往配置特征”
- 配置完 → 自动跳转到看板并带上
dataset_id - 训练完 → “可以进行在线预测”
下面数据仅作测试演示,并不是平台真实的预测结果。

变更总览#
| 新建文件 | 用途 |
|---|---|
error_classifier.py | 错误分类器 — 5 类错误映射 + 中文摘要 |
progress.py | 训练进度回调 — 按阶段写入 DB |
task_compare.html | 任务对比页 — 多选 → 指标表格 + 图表 |
修改文件 12 个,数据库迁移 2 次(MLTask 增加 error_detail/progress_info,DataSet 增加 statistics)。