如何将数据分割为三个集合(训练集、验证集和测试集)
如何将数据分割为三个集合(训练集、验证集和测试集)
技术背景
在机器学习和数据分析中,为了评估模型的性能和泛化能力,通常需要将数据集分割为训练集、验证集和测试集。训练集用于模型的训练,验证集用于调整模型的超参数,测试集用于最终评估模型的性能。虽然sklearn
中的train_test_split
函数可以将数据分割为两个集合,但有时我们需要将数据分割为三个集合。
实现步骤
方法一:使用Numpy的np.split
函数
- 首先对整个数据集进行洗牌操作。
- 然后使用
np.split
函数将洗牌后的数据集分割为三个部分,分别作为训练集、验证集和测试集。
方法二:使用train_test_split
函数两次
- 第一次使用
train_test_split
函数将数据集分割为训练集和临时集。 - 第二次使用
train_test_split
函数将临时集分割为验证集和测试集。
方法三:自定义函数实现分割
定义一个自定义函数,通过随机排列数据集的索引,然后根据指定的比例分割数据集。
方法四:分层采样分割
定义一个函数,通过两次调用train_test_split
函数,实现按指定列进行分层采样分割数据集。
核心代码
方法一:使用Numpy的np.split
函数
1 |
|
方法二:使用train_test_split
函数两次
1 |
|
方法三:自定义函数实现分割
1 |
|
方法四:分层采样分割
1 |
|
最佳实践
- 在分割数据集之前,建议对数据集进行洗牌操作,以确保数据的随机性。
- 如果数据集中存在类别不平衡的问题,建议使用分层采样的方法进行数据分割,以保证每个集合中各类别的比例与原始数据集一致。
- 在使用自定义函数时,建议设置随机种子,以保证结果的可重复性。
常见问题
- 分割比例问题:确保分割比例之和为1,否则会导致分割结果不符合预期。
- 分层采样列问题:在使用分层采样分割时,确保指定的列存在于数据集中,否则会抛出错误。
- 随机种子问题:如果不设置随机种子,每次运行代码时分割结果可能会不同,影响结果的可重复性。
如何将数据分割为三个集合(训练集、验证集和测试集)
https://119291.xyz/posts/2025-04-11.how-to-split-data-into-three-sets/