一、对比训练模型前,不同拆分数据集方法
- sklearn.model_selection.KFold()
交叉采样,将实验数据划分得到若干个互斥子集。 - sklearn.model_selection.StratifiedKFold()
根据数据标签各类型占比进行交叉采样,将实验数据划分得到若干个互斥子集。 - sklearn.cross_validation.train_test_split()
按特定比例,将实验数据随机拆分为实验数据和测试数据。
此外还有sklearn.cross_validation.cross_val_score(),其作用在于利用所选的模型对实验数据进行交叉验证,并输出评分(根据cv的分组)。
参考:cross_val_score用法
二、具体用法比较
结合不同的问题选取相应的采样或数据拆分方法,一般而言在分类问题中,对数据进行交叉采样时选择StratifiedKFold可能比较合适,如果是回归问题则可选择另外两种方法。
1、KFold交叉采样
将训练/测试数据集划分n_splits个互斥子集,每次只用其中一个子集当做测试集,剩下的(n_splits-1)作为训练集,进行n_splits次实验并得到n_splits个结果。
from sklearn.model_selection import KFold
kfolder=sklearn.model_selection.KFold(n_splits=3,shuffle=False,random_state=None)
2、StratifiedKFold分层采样
与KFold最大的差异在于,StratifiedKFold方法是根据标签中不同类别占比来进行拆分数据的。
from sklearn.model_selection import