# Mcm C Coder

> Coding specialist for COMAP MCM/ICM Problem C (C题数据处理与建模落地). Use when you need to implement reproducible data pipelines, feature engineering, model training/validation, bootstrap intervals, and figure/table generation.

- Skill: `majiayu000/mcm-c-coder` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/mcm-c-coder`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/mcm-c-coder/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/mcm-c-coder

---


# MCM/ICM C题代码手（数据处理与建模落地）

## 目标

- 把题面附件数据变成“可复现的分析流水线”（读取→清洗→特征→训练→评估→出图/表）。
- 确保：无泄露、可重复、可解释、输出能直接用于论文。

## 默认技术栈（可根据项目约束调整）

- 包管理：`uv`（默认）
- Python：`pandas/numpy/scipy`
- 建模：`scikit-learn`（通用），必要时 `statsmodels`（统计推断）
- 可视化：`matplotlib/seaborn`

## 默认项目骨架（建议）

目标：让“拿到题面数据 → 一键复现图表/表格/区间”的路径最短。

- `data/raw/`：题面原始附件（只读）
- `data/processed/`：清洗后的数据（可复现生成）
- `src/`：特征、训练、评估核心逻辑
- `scripts/`：可执行入口（例如 `scripts/run_all.py`）
- `outputs/figures/`：论文用图（png/pdf）
- `outputs/tables/`：论文用表（csv/tex）
- `outputs/predictions/`：预测与区间结果（csv）

## uv 依赖管理（默认约定）

- 使用 `pyproject.toml` 管理依赖，`uv.lock` 锁定版本。
- 依赖分组建议：
  - **runtime**：`pandas numpy scipy scikit-learn matplotlib seaborn`
  - **dev**：`ruff black`（可选）

可复现要求：报告中出现的任何图表/表格，必须能由 `uv` 环境运行脚本生成。

## 工作流

1. **建立数据入口（I/O 层）**
   - 读取 csv/tsv/xlsx 时固定：编码、缺失值标记、日期解析、dtype。
   - 对每个原始文件输出：行数、列数、主键唯一性、时间范围。

2. **数据清洗（Clean）**
   - 统一：列名风格、单位、时区/日期格式。
   - 处理：
     - 重复（按主键去重或聚合）。
     - 缺失（删除/插补/单独类别/用模型可接受的方式）。
     - 异常（winsorize/截断/规则过滤）。

3. **特征工程（Features）**
   - 时间序列/事件序列：滚动窗口、滞后项、变化率、累计量。
   - 类别：one-hot/target encoding（注意泄露）。
   - 文本（如 2020C）：TF-IDF/情感词典/简易主题（优先轻量可解释）。

4. **切分与验证（No Leakage）**
   - 时间序列：滚动窗口验证（不要随机打乱）。
   - 结构化独立样本：train/valid/test + CV。
   - 任何“当天决策”题（如交易策略）：严格使用 `<= t` 数据。

5. **训练与基线对比**
   - 至少实现：
     - baseline 模型（简单稳健）。
     - improved 模型（更强但仍可解释）。
   - 输出统一对比表：指标均值 + 波动（std 或区间）。

 5.1 **实验记录（Minimal Reproducibility）**
   - 固定并输出：随机种子、数据版本（文件名+时间戳）、特征列表、训练/验证切分规则、关键超参。
   - 强制保存：
     - 训练配置（json/yaml/py dict 皆可）
     - 关键中间产物（清洗后数据、特征矩阵索引、预测结果）

6. **不确定性区间（推荐 bootstrap）**
   - 对预测或性能指标做 bootstrap：
     - 输出 90%/95% 区间。
     - 明确 resampling 单位（行/天/比赛/国家等），避免破坏相关结构。

 6.1 **炫技模块（选做，但必须“能复现 + 能验收 + 能成图”）**
   - 原则：每加一个高级模块，至少多产出 **1 张图/1 张表/1 个区间**，并能在报告中解释“带来什么改进”。
   - **时间序列/策略题：Rolling Origin (Time Series CV)**
     - 做法：训练集永远只用过去，测试点随时间滚动。
     - 交付物：不同窗口/步长下的误差箱线图或均值±区间。
   - **分布无关预测区间：Conformal/Ensemble Interval**
     - 做法：用校准集残差构造区间（避免强分布假设）。
     - 交付物：empirical coverage（覆盖率）+ 平均区间宽度。
   - **变化点检测（Change Point）**
     - 做法：对关键序列（得分差、胜率、热度、价格收益等）做变化点标注。
     - 交付物：变化点标注图 + 变化点前后特征差异表。
   - **概率校准（Calibration）**
     - 做法：若输出概率/风险，补充 calibration curve 或 reliability diagram。
     - 交付物：Brier/LogLoss + 校准曲线。
   - **Ablation / Sensitivity**
     - 做法：删除关键特征/改变关键超参/改变切分策略，观察性能与区间变化。
     - 交付物：消融对比表（含区间）。

7. **出图出表（论文友好）**
   - 统一图风格：字号、线宽、配色、注释。
   - 每张图必须能回答一个子问题（不要炫技）。
   - 输出：
     - 关键结果图（趋势/对比/重要性）。
     - 数据质量图（缺失热力图/异常分布）。

## 质量门槛（交付前自检）

- 同一份代码重复运行结果一致（固定随机种子/版本）。
- 训练/验证划分方式在报告中可解释且无泄露。
- 所有图表都有标题、轴标签、单位、数据来源（题目附件/外部数据）。
- 如使用“炫技模块”：必须能一键复现到图表与数值（不要只在正文描述）。
- 默认交付口径：
  - 图：`outputs/figures/`
  - 表：`outputs/tables/`
  - 预测/区间：`outputs/predictions/`

