6eab0babde94fb36d1102760a63f78d49f2e92de
实现(用户本人写): - normalize(minmax / vector / max,三种都按列)+ feature_range 校验 + 常量列不出 nan - standardize(按列,ddof 真的传下去)+ 类型守卫 - log_transform(offset=None 时自动取 1 - min(x),保证 x + offset >= 1)+ 类型守卫 - one_hot_encode(自动识别对象列 / 指定列 / drop_first) - data/ 下的 L0 至此结清(L0 7/12) Codex 的轻度修复(不改接口与语义): - 清掉 5 条 ruff:RET503 / F541 / RET504 / RET505 / SIM108 - supported_method 与 feature_range 的校验提到 np.asarray 之前(守卫集中开头) - 修掉说反的报错文案(条件是要求下界 < 上界,原文写"上界必须小于下界") - one_hot_encode 自动识别时显式加上 str / string:只写 object 在 pandas 3 上是弃用路径, 每次调用发 Pandas4Warning,未来会变成"一列都选不中"的静默错误(详见坑 9) 测试: - 新写 18 条(transform 段),其中两条是把原先挂着的 skip 转为实跑 —— normalize / standardize 的实现此前一条测试都没跑到(详见个人易错点 9) - 82 passed / 40 skipped / 0 xfailed;ruff 0;pyright 0 文档: - STATUS.md:E 节 + 验证表(122 条用例分布)+ 下一步重写(transform 待定的 4 个口径)+ 决策 34 - docs/04-environment.md:新增坑 9(pandas 3 的 str dtype 与 select_dtypes 弃用路径,含实测对照表) - docs/dev/personal-pitfalls.md:只追加第 9 条(实现写完但测试还挂 skip,绿灯是假的) - CHANGELOG.md:本轮变更 + 记录 transform 待定的 4 个口径
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。
Languages
Python
95.4%
PowerShell
4.6%