feat: add routed model training pipeline

This commit is contained in:
2026-09-11 16:33:20 +08:00
parent df3ab51a0d
commit 8e0b37176e
10 changed files with 437 additions and 2 deletions
+13 -1
View File
@@ -37,12 +37,24 @@ tech-architecture/ 技术架构报告与本地 Mermaid 资源
- SQLite 骨架:`materials``experiments` 两张核心表,支持外键约束与实验记录往返。
- 训练数据接口:从外部数据平台的 `material_records` 表只读加载记录,并分离元信息、特征和目标。
- 目标拆分接口:按分类/回归任务组织 `is_cut_through``etching_depth` 等实验结果。
- 训练预处理:数值特征采用中位数填补与标准化,类别特征采用众数填补与独热编码;未知类别在推理时安全忽略。
- 训练预处理:数值特征采用中位数填补与标准化(全缺失列固定回退为 0,类别特征采用众数填补与独热编码;未知类别在推理时安全忽略。
- 模型分派:连续目标默认路由至 GPR,布尔目标默认路由至随机森林分类器。
- 训练流水线:按材料名称执行无泄漏 LOMO 验证,输出目标级指标并以 joblib 保存全量重训模型与预处理器。
- 工程配置:`pyproject.toml` 统一依赖、pytest 与 Ruff 配置。
后续将按架构报告逐步补齐 DoE 生成、CSV 交换、设备采集、建模管线和推理服务。
## 训练一次完整模型
当外部数据平台的 SQLite `material_records` 已填入完整实验结果后:
```bash
uv run python -m lmpm.scripts.train data/material_records.db data/models/lmpm.joblib
```
命令会同时生成模型文件 `lmpm.joblib` 和同名的 LOMO 验证指标报告
`lmpm.metrics.json`。运行时数据与模型产物均应保留在 `data/`,不提交到 Git。
## 数据与产物
本地数据库和导出的 CSV 统一放在 `data/`,这些运行时产物不会提交到 Git。数据库初始化后的表结构由 `src/lmpm/data/store.py` 维护。