学习参数 — 模型从这里学习特征与标签的映射,更新权重。
占比最大,通常 60% ~ 80% 。
梯度下降 · 拟合调参 & 早停 — 用于模型选择、超参数调整、防止过拟合。
不参与训练,但指导模型改进。
模型选择 · 正则化最终评估 — 仅用于一次性的泛化性能评估,模拟真实场景。
严格隔离,绝不泄露。
精准度 · 泛化💡 黄金法则: 测试集只能使用一次!验证集可多次使用,但不可用于训练。
| 数据集 | 典型比例 (小规模) | 典型比例 (大规模) | 关键任务 |
|---|---|---|---|
| 🏋️ 训练集 | 60% – 70% | 80% – 90% | 参数学习 |
| 🔧 验证集 | 15% – 20% | 5% – 10% | 调参 / 早停 |
| 📋 测试集 | 15% – 20% | 5% – 10% | 最终评估 |
⚖️ 数据量 < 1万时,常用 60/20/20;数据量 > 10万,可 98/1/1 但验证/测试需足够。
sklearn.model_selection.train_test_split 参数 stratify=y。from sklearn.model_selection import train_test_split from sklearn.datasets import make_classification X, y = make_classification(n_samples=1000, weights=[0.9, 0.1], random_state=42) # 分层抽样 —— 保持类别比例 X_train, X_temp, y_train, y_temp = train_test_split( X, y, test_size=0.4, stratify=y, random_state=42) X_val, X_test, y_val, y_test = train_test_split( X_temp, y_temp, test_size=0.5, stratify=y_temp, random_state=42) print(f'训练集: {y_train.sum()/len(y_train):.2f} 正例占比') print(f'验证集: {y_val.sum()/len(y_val):.2f} 正例占比') print(f'测试集: {y_test.sum()/len(y_test):.2f} 正例占比')
✅ 分层抽样确保每个子集类别分布一致,提升模型泛化可信度