63 lines
2.6 KiB
Markdown
63 lines
2.6 KiB
Markdown
# 激光雕刻材料数据库(lemdb)
|
||
|
||
English name: Laser Engraving Material Database
|
||
|
||
基于材料物性参数的激光加工参数智能匹配系统的数据与模型工程底座。当前仓库处于第一阶段初始化状态,重点建立领域模型、SQLite 存取骨架和工程规范。
|
||
|
||
## 快速开始
|
||
|
||
```bash
|
||
uv sync
|
||
uv run pytest
|
||
uv run ruff check .
|
||
uv run ruff format .
|
||
```
|
||
|
||
查看技术架构报告:
|
||
|
||
```bash
|
||
python -m http.server 47319 --directory tech-architecture
|
||
```
|
||
|
||
然后打开 `http://localhost:47319/tech-architecture.html`。
|
||
|
||
## 项目结构
|
||
|
||
```text
|
||
src/lmpm/
|
||
domain/ 材料物性、实验记录、加工参数与质量指标模型
|
||
data/ SQLite 初始化与实验记录读写
|
||
training/ 从外部数据平台只读加载训练数据
|
||
tests/ 领域校验与数据库往返测试
|
||
tech-architecture/ 技术架构报告与本地 Mermaid 资源
|
||
```
|
||
|
||
## 当前范围
|
||
|
||
- `MaterialProperty`:反射率、吸收率、熔点、热导率、密度、粗糙度等物性字段。
|
||
- `ExperimentRecord`:加工参数、质量指标与记录时间。
|
||
- 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` 维护。
|