训练集测试集和验证集样例
时间: 2025-01-01 15:31:47 浏览: 11
### 机器学习中的数据集划分
#### 定义与作用
训练集用于构建和调整模型参数,使模型能够从已有数据中学习模式并做出预测[^1]。测试集主要用于评估最终模型的表现,确保其具备良好的泛化能力和鲁棒性[^2]。而验证集则是在训练过程中用来调优超参数以及防止过拟合现象的发生[^4]。
#### 数据划分方法概述
为了合理分配有限的数据资源,在实际应用中常采用多种策略来进行有效的数据分割:
- **随机抽样法**:最简单直接的方式就是按照一定比例(如70%作为训练集, 30%留作测试/验证用途),利用伪随机数发生器打乱顺序后再选取相应数量的记录组成不同子集;
- **分层采样技术**:当类别分布不均衡时可以考虑此方案——即保持各类别占比不变的情况下分别抽取样本构成新的集合;
- **时间序列切片**:针对具有明显趋势特征的时间序列型资料,则应遵循先后次序截取前后两个时间段内的观测值充当各自的角色;
- **K折交叉验证(K-fold Cross Validation)**:将全部可用实例平均分成k份轮流担任检验角色的同时其余部分共同参与迭代优化过程直至完成一轮循环遍历操作为止。
#### Python 实现案例展示
```python
from sklearn.model_selection import train_test_split
import numpy as np
# 假设X为输入变量矩阵,y为目标向量,numpy数组形式存储
X = np.random.rand(100,5) # 创建模拟数据集
y = (np.sum(X,axis=1)>2).astype(int)
# 利用train_test_split函数快速实现三者分离
X_train,X_temp,y_train,y_temp=train_test_split(
X,
y,
test_size=.3, # 设置临时区域占总体的比例
random_state=42 # 设定种子保证可重复实验结果
)
# 进一步拆解得到验证集与真正意义上的测试集
X_val,X_test,y_val,y_test=train_test_split(
X_temp,
y_temp,
test_size=.5, # 此处表示一半给val另一半test
random_state=88 # 不同于上一次分裂所使用的seed值
)
print('原始数据大小:',len(y))
print('训练集大小:',len(y_train))
print('验证集大小:',len(y_val))
print('测试集大小:',len(y_test))
```
上述代码片段展示了如何借助`sklearn`库下的`model_selection`模块轻松达成目的,并且打印出了各阶段具体规模以便直观感受整个流程的效果[^3]。
阅读全文