guzhujushi
|
9907289ec8
|
feat(models): 审查 metrics.py:工程侧收口 + 修 r2/smape 两个真 bug(+18 条测试)
models/metrics.py(用户写、Codex 审):6 个回归指标 + 共享入口 verify_yt_yp 落地,
compare_models 仍是 TODO(L1)。
真 bug(决策 59,由用户亲手改定):
- r2_score 的 SS_tot 基准用了 np.mean(y_pred),必须是 np.mean(y_true)。
探针实测:修前 0.8803827751196172、修后 0.875 = sklearn.metrics.r2_score 一致;
adjusted_r2 复用它,一并修正。完美拟合(r2_score(y, y) == 1)与常量 y 都掩盖了这个错,
所以新测试特意用"非完美拟合"的数据。ss_tol 顺带改名 ss_tot。
- smape 的 np.where 掩码防不住零除(两条分支都会被求值),在
filterwarnings = ["error::RuntimeWarning"] 下任何含 0 的用例直接红 → 改 np.divide(where=),
数值结果不变(决策 60)。
工程侧(决策 47):报错文案统一为"参数名 + 实际值";补 7 处 docstring
(Parameters / Returns / Raises,把 NaN 报错、mape 遇 0、r2 常量 y、adjusted_r2 分母保护
写成契约;n_features 注明不含截距);ruff 9 条清零(6 F541 + 3 W293)。
tests/test_models.py:5 条 → 23 条(2 条摘 skip 转正 + 18 条新增)。
三连:pytest 224 passed / 26 skipped(250 收集)、ruff 0、pyright 0。
文档:STATUS 决策 59 / 60 + 第九轮(含 4 条待拍板口径);CHANGELOG 本轮条目;
docs/dev/personal-pitfalls.md 追加易错点 31(基准量抄错对象)与 32(np.where 掩码防不住零除)。
|
2026-10-10 17:07:46 +08:00 |
|
guzhujushi
|
3bb31f95de
|
chore(models): 开工前清理 + 去掉 mm1 的残留注释序号
- tests/test_models.py:模块级 pytestmark -> 逐条 @pytest.mark.skip(决策 26);
该文件的 5 条测试仍然全跳过,只是形式上与其它测试文件对齐了。
- models/metrics.py:rmse / mae / r2_score 的注释 TODO(L0) -> TODO(L1)
(roadmap 的 L0 12 项里没有这三个指标,它们属于 L1 的 models 清单)。
- simulate.py:用户去掉 # 4. 封装返回 这行残留序号注释(无代码变化)。
校验:pytest 204 passed / 28 skipped;ruff 0;pyright 0
|
2026-10-10 14:01:56 +08:00 |
|
guzhujushi
|
5319589dfd
|
chore: 初始化 MCM/ICM Toolkit 仓库骨架
审查并精简 ChatGPT 的建库建议后落地的第一版骨架,只定接口不写实现。
- 建议审查:14 个包 → 7 个;约 250 个函数 → 约 40 个;5 个 Result 类 → 1 个
(docs/01-suggestion-review.md)
- docs/:架构、路线图(含永久不做清单)、环境、Git 工作流、函数卡片模板
- src/mcm_toolkit/:core / data / stats / models / solve / decision / viz
共 23 个模块,均为签名 + docstring + NotImplementedError
- tests/:9 个文件,其中 test_api_surface.py 已通过(20 passed)
- examples/ problems/ notebooks/ figures/ tables/ 骨架
- pyproject.toml(核心依赖 4 个 + 6 组 extras)、environment.yml
- scripts/:setup-venv.ps1(ASCII + LF)、setup-conda.ps1、doctor.ps1
- 环境:.venv(system-site-packages)与 conda 环境 mcm-toolkit 均已建好,
数值栈版本与 base 完全对齐(numpy 2.4.6 / scipy 1.18.1 / pandas 3.0.6,MKL 后端)
|
2026-10-01 17:43:48 +08:00 |
|