guzhujushi 5749e50e83 chore: 补 S 档卡片 / examples;clean.py 收尾,xfail 清零
实现收尾(Codex 代写,用户授权):
- impute_missing 的 mode 分支改为返回新表(原先就地改调用方的 DataFrame,另外四支都返回新对象)
- detect_outliers 补入参类型校验(§4.7:非法类型抛 TypeError,不静默兜底):
  接受 DataFrame / Series / list / tuple / ndarray;tuple 同时补进 is_ld_array;
  dict 不再被接受(以前靠 pd.DataFrame() 碰巧能过,见决策 33)

测试:
- 摘掉最后一条 xfail(mode 就地改)并加强断言
- 新增 3 条:非法类型抛 TypeError、元组按一维数组型处理、全 NaN 列与单元素列不抛异常
- 64 passed / 42 skipped / 0 xfailed(xfail 清零,7 条契约全部转正);ruff 0;pyright 0

文档:
- 新增 docs/algorithms/detect_outliers.md —— 第一张 S 档函数卡片(roadmap 要求约 15 张)
  除模板九节外多记三条判断:为什么不返回 Result、非数值列恒 False 的两条备选路各错在哪、
  ddof 口径与 stats.zscore 不一致(前者 1、后者 0,小样本差一成)
- 新增 examples/01_clean_and_describe.py —— 六个 data 函数的最小用法,实测跑通(exit 0)
- STATUS.md:E 节收尾、验证结果表、下一步重写(transform/standardize 的待定项)、决策 33
- CHANGELOG.md:把 [Unreleased] 里重复 7 次的 Added/Changed 小节合并成 Added/Changed/Notes;
  并修掉上轮遗留的缺陷 —— pyright 那条 bullet 的开头被吞掉,半句挂在 ruff 那条后面
2026-10-02 15:48:12 +08:00

MCM/ICM Toolkit

这是我参加美赛时用的学习和准备复用的代码,有需要可以自行克隆和修改。

美赛(MCM/ICM)编程手的竞赛层工具箱: 把比赛中反复手写的代码沉淀成"高频算法自己实现 + 成熟库薄封装 + 统一结果接口"。

不替代 SciPy / scikit-learn / statsmodels / NetworkX / SALib / SymPy。 只做它们到"4 天赛程能用"之间的那一层。

快速开始

# 1) 建环境(两条路选一条)
.\scripts\setup-venv.ps1        # venv,零下载,复用 Anaconda base 的科学栈
.\scripts\setup-conda.ps1      # conda 环境 mcm-toolkit(精准包列表,走代理下载)

# 2) 自检
.\scripts\doctor.ps1

# 3) 激活
.\.venv\Scripts\Activate.ps1
import mcm_toolkit as mcm

mcm.set_seed(42)
r = mcm.bootstrap_ci(data, statistic=np.median, random_state=42)
print(r.params["low"], r.params["high"])

当前状态(v0.0.1)

本地 git 仓库已初始化(main,首次提交 5319589),远程 Gitea 待配置。

接口已定,实现未填。 所有函数体是 raise NotImplementedError + TODO(L0/L1/v0.2) 标记, 按 docs/03-roadmap.md 的 L0 → L1 顺序填。

目录

路径 说明
src/mcm_toolkit/ 包源码,7 个子包
tests/ 测试,与包一一对应(测已知解析解,不测实现细节)
examples/ 每个模块一个能跑的最小例子
problems/ 历年真题(每做完一题,反向沉淀 1~3 个通用函数)
notebooks/ 探索用
docs/ 需求、架构、路线图、环境、规范
scripts/ 环境脚本
STATUS.md 当前进度

子包

包 职责 关键函数
core 基础设施 Result get_rng check_*
data 读 / 洗 / 变换 / 采样 load_table detect_outliers normalize
stats 描述 / 推断 / bootstrap describe bootstrap_ci fit_distribution
models 回归 / 时序 / ML fit_linear fit_arima compare_models
solve 优化 / 模拟 / 敏感性 monte_carlo simulated_annealing sobol_analyze
decision 评价决策 entropy_weights ahp_weights topsis gm11
viz 出图出表 plot save_figure save_table

文档

开始动手前请先读 docs/01-suggestion-review.md—— 它记录了"为什么最终结构是这样",以及明确不做什么。

许可

MIT,见 LICENSE。

S
Description
这是我参加美赛时用的学习和准备复用的代码,有需要可以自行克隆和修改
Readme MIT
2.1 MiB
0 Stars 1 Watchers 0 Forks
Languages
Python 95.4%
PowerShell 4.6%