1.留出法可用sklearn包ShuffleSplit和train_test_split实现
2.ShuffleSplit可以实现多次随机划分,train_test_split只能实现一次
3.random_state相同时,ShuffleSplit的首次切分结果与train_test_split完全一致
4.交叉验证法可用KFold、StratifiedKFold实现,逻辑一致,后者针对分类问题实现分层抽样
5.sklearn建模与调参的包cross_validate与GridSearchCV的数据集划分逻辑一致
6.如果是分类问题,cross_validate采取StratifiedKFold划分方法,其他都是采取KFold方法
小编在文章 机器学习之模型评估 介绍了数据集划分的方法,本文从就专门针对数据集划分的sklearn实现做一个详细介绍。
注:sklearn的函数包实在太多,有纰漏的地方还望指正
1.留出法
sklearn实现留出法的主要有两个包:ShuffleSplit和train_test_split。先给结论:
1.train_test_split实行单次数据集划分,通过参数random_state选定种子数
2.对于分类问题,train_test_split通过stratify参数实现分层抽样.
2.ShuffleSplit实行多次随机切分,默认10次,如果random_state参数与train_test_split相同,则第一次的切分方式与train_test_split完全一致
3.ShuffleSplit每一次的测试集训练集样本选取都是随机的
train_test_split是用得最多的数据集划分包,它的参数有五个:
*arrays:要切分的数据集,通过传入两个,X数据集和目标y
test_size:测试集样本大小
random_state:随机种子数
shuffle:是否要对数据集随机打乱
stratify:可以理解为分层抽样的设置值,通过针对分类问题的目标y</