目前攒了这些
每个领域都是独立配置 + 独立数据 — 想加第四个, 在 exams.json 加一条就行, 代码不用动。
读注册表
现在能告诉你的事
跨时期严格切分, 数字能信就信, 不能信的我会标出来。
为啥要跨时期切
这是整个项目最关键的 1 步, 不搞清楚就别看后面的数字。点击展开看细节。
不公平。CET-6 在 2014 / 2016 / 2020 改过三次题, 题型结构都不一样。如果用 2010 的题训练、再用 2010 的题测, 模型只要记住"那年出题老师喜欢什么", 就能把 AUC 飙到 0.6+ — 看着漂亮, 其实是 过拟合历史。
我们改成: Era 4 (2020-2025) 训练 → Era 1+2 (2010-2015) 测试。这种切法比 K-Fold 更狠, 也更接近真实预测场景。代价是数字难看 — 跨时期后真实 AUC ≈ 0.537, 接近瞎蒙的 0.5。
不够。36 套里只有 695 道是"4 个选项都完整"的题。对 ML 训练来说样本偏小, 这就是 Stacking 集成 AUC 才 0.537 的根本原因 — 不是模型不行, 是数据不够。
CET-6 真题版权不开放, 公开渠道基本只有回忆版。能用上的都用了, 后续要扩展只能等公开历史卷。
有出处。全是流传在考生圈 / 教辅书里的"老经验" — 比如"末位 25/55 选 D"、"3 长 1 短选最短"、"听力 5/10/15/20 不选 C"。我们把它们写成代码、在数据上跑, 看看哪些真有效、哪些是玄学。
结果: 大部分规则在测试集上比瞎蒙高 2-5 个百分点, 但每条都有 跨时期衰减 (decay < 0) — 过去灵, 现在就没那么灵。详细数据在 CET-6 详情页。
不证明蒙题是合理策略。真实备考请老老实实背单词练听力。
这个仓库只适合三件事: 数据科学方法的演示、跨时期分布偏移的实证、ML 模型在 4 选项离散选择上的过拟合研究。如果你想找"必过六级的捷径", 这儿没有。
用的啥
前端纯静态, 不挑 CDN, 国内直接打开。
- HTML + CSS + 原生 JS — 不上 Vite 不上 React, 四个 JS 文件搞定全站
- 字体: 思源黑体 / 思源宋体 + 系统降级链, 国内系统自带
- 布局:
clamp()流式字号 + 自适应 grid, 320px-1920px 通吃 - 响应式: 三个断点 (480 / 640 / 768), 触摸目标 ≥ 44px
- 图表: 纯 SVG 自绘, 不引第三方库, 0 KB 依赖
- 动画:
IntersectionObserver滚动揭示 + CSS keyframes + count-up 数字滚动
data/_meta/exams.json— 考试注册表, 加领域只改这里data/<exam_id>/config.json— 单个考试的所有数据 (规则/模型/审计/统计)scripts/validate-data.py— CI 校验, schema 错就 build 失败- scripts/ 在 Jekyll exclude 里, 不污染站点
- LightGBM / CatBoost / RandomForest / XGBoost / LogisticRegression
- Stacking 集成 (Meta LR)
- 11 条规则投票系统
- 跨 Era 验证, 贝叶斯平滑
方法细节: 跨 Era 切分训练/测试, 贝叶斯平滑防过拟合, 5 模型投票 + 11 规则过滤。