KFold 将所有的样例划分为 k 个组,称为折叠 (fold) (如果 k = n, 这等价于 Leave One Out(留一) 策略),都具有相同的大小(如果可能)。预测函数学习时使用 k - 1 个折叠中的数据,最后一个剩下的折叠会用于测试。
>>import numpy as np
>>>from sklearn.model_selection import KFold
>>> X =["a","b","c","d"]>>> kf = KFold(n_splits=2)>>>for train, test in kf.split(X):...print("%s %s"%(train, test))[23][01][01][23]
2.重复K折交叉验证
RepeatedKFold 重复 K-Fold n 次。当需要运行时可以使用它 KFold n 次,在每次重复中产生不同的分割。
>>>import numpy as np
>>>from sklearn.model_selection import RepeatedKFold
>>> X = np.array([[1,2],[3,4],[1,2],[3,4]])>>> random_state =12883823>>> rkf = RepeatedKFold(n_splits=2, n_repeats=2, random_state=random_state)>>>for train, test in rkf.split(X):...print("%s %s"%(train, test))...[23][01][01][23][02][13][13][02]
3.留一交叉验证
LeaveOneOut (或 LOO) 是一个简单的交叉验证。每个学习集都是通过除了一个样本以外的所有样本创建的,测试集是被留下的样本。 因此,对于 n 个样本,我们有 n 个不同的训练集和 n 个不同的测试集。这种交叉验证程序不会浪费太多数据,因为只有一个样本是从训练集中删除掉的:
>>>from sklearn.model_selection import LeaveOneOut
>>> X =[1,2,3,4]>>> loo = LeaveOneOut()>>>for train, test in loo.split(X):...print("%s %s"%(train, test))[123][0][023][1][013][2][012][3]
4.留 P 交叉验证 (LPO)
LeavePOut 与 LeaveOneOut 非常相似,因为它通过从整个集合中删除 p 个样本来创建所有可能的 训练/测试集。对于 n 个样本,这产生了 {n \choose p} 个 训练-测试 对。与 LeaveOneOut 和 KFold 不同,当 p > 1 时,测试集会重叠。
>>>from sklearn.model_selection import LeavePOut
>>> X = np.ones(4)>>> lpo = LeavePOut(p=2)>>>for train, test in lpo.split(X):...print("%s %s"%(train, test))[23][01][13][02][12][03][03][12][02][13][01][23]
>>>from sklearn.model_selection import StratifiedKFold
>>> X = np.ones(10)>>> y =[0,0,0,0,1,1,1,1,1,1]>>> skf = StratifiedKFold(n_splits=3)>>>for train, test in skf.split(X, y):...print("%s %s"%(train, test))[236789][0145][0134589][267][0124567][389]
1.K折交叉验证KFold 将所有的样例划分为 k 个组,称为折叠 (fold) (如果 k = n, 这等价于 Leave One Out(留一) 策略),都具有相同的大小(如果可能)。预测函数学习时使用 k - 1 个折叠中的数据,最后一个剩下的折叠会用于测试。>> import numpy as np>>> from sklearn.model_sel...