sklearn支持的几种数据划分方法

k折交叉验证:
原理:假设数据集为D,将D分为k个不相交的子集。如果D中有m个样本,那么每个子集中都有m/k个样本,每个子集都尽可能保持数据分布的一致性。每次使用
k-1个子集作为训练数据,用1个子集作为测试数据,训练k次。最终的结果是这k次测试结果的均值。
KFold,GroupKFold,StratifiedKFold,
from sklearn.model_selection import KFold
from sklearn.model_selection import GroupKFold
from sklearn.model_selection import StratifiedKFold

定义k折交叉验证,划分之前重新洗牌,随机种子10

kf = KFold(n_splits=5, shuffle=True, random_state=10)
这里的KFold入参就是这三个,n_splits分成几份,就是几折交叉验证。shuffle是否在划分之前重新洗牌,默认false,当shuffle=true的时候,random_state的设置才有意义,随机种子。
kf可调用的属性里面有一个kf.split()

留一法:
原理:每次留一个作为测试数据,其余数据作为训练数据,遍历所有样本。计算开销太大,数据量稍微大了都没办法用。
LeaveOneGroupOut,LeavePGroupsOut,LeaveOneOut,LeavePOut,
from sklearn.model_selection import LeaveOneOut
from sklearn.model_selection import LeaveOneGroupOut
from sklearn.model_selection import LeavePOut
from sklearn.model_selection import LeavePGroupsOut

随机划分:
原理:首先对样本全体随机打乱,然后再划分出train/test对。由迭代器产生指定数量的独立的数据集划分。是k折交叉验证比较好的替代。
ShuffleSplit,GroupShuffleSplit,StratifiedShuffleSplit,
from sklearn.model_selection import ShuffleSplit
from sklearn.model_selection import GroupShuffleSplit
from sklearn.model_selection import StratifiedShuffleSplit
具体的用法和例子就不多说了,可以参考
https://www.cnblogs.com/hellcat/p/7045585.html
有例子

你可能感兴趣的:(sklearn支持的几种数据划分方法)