似乎每次迭代对象时KFold都会生成相同的值,而Shuffle Split每次都会生成不同的索引.它是否正确?如果是这样,一个用户有什么用途?
cv = cross_validation.KFold(10, n_folds=2,shuffle=True,random_state=None) cv2 = cross_validation.ShuffleSplit(10,n_iter=2,test_size=0.5) print(list(iter(cv))) print(list(iter(cv))) print(list(iter(cv2))) print(list(iter(cv2)))
产生以下输出:
[(array([1, 3, 5, 8, 9]), array([0, 2, 4, 6, 7])), (array([0, 2, 4, 6, 7]), array([1, 3, 5, 8, 9]))] [(array([1, 3, 5, 8, 9]), array([0, 2, 4, 6, 7])), (array([0, 2, 4, 6, 7]), array([1, 3, 5, 8, 9]))] [(array([4, 6, 3, 2, 7]), array([8, 1, 9, 0, 5])), (array([3, 6, 7, 0, 5]), array([9, 1, 8, 4, 2]))] [(array([3, 0, 2, 1, 7]), array([5, 6, 9, 4, 8])), (array([0, 7, 1, 3, 8]), array([6, 2, 5, 4, 9]))]
ilyas patana.. 38
KFold和ShuffleSplit输出的差异
KFold会将您的数据集划分为预先指定的折叠数,每个样本必须只有一个折叠.折叠是数据集的子集.
ShuffleSplit将在每次迭代期间随机采样整个数据集,以生成训练集和测试集.在test_size
和train_size
参数控制测试和培训测试集应该多大每次迭代.由于您在每次迭代期间从整个数据集中进行采样,因此可以在另一次迭代期间再次选择在一次迭代期间选择的值.
简介: ShuffleSplit迭代工作,KFold只是将数据集分成k个折叠.
进行验证时的差异
在KFold中,在每一轮中,您将使用一个折叠作为测试集,并将所有剩余的折叠作为训练集.但是,在ShuffleSplit中,在每一轮中,n
您应该只使用迭代中的训练和测试集n
.随着您的数据集的增长,交叉验证时间增加,使得shufflesplits成为更具吸引力的替代品.如果您可以训练您的算法,使用一定比例的数据而不是使用所有k-1折叠,ShuffleSplit是一个很有吸引力的选择.
KFold和ShuffleSplit输出的差异
KFold会将您的数据集划分为预先指定的折叠数,每个样本必须只有一个折叠.折叠是数据集的子集.
ShuffleSplit将在每次迭代期间随机采样整个数据集,以生成训练集和测试集.在test_size
和train_size
参数控制测试和培训测试集应该多大每次迭代.由于您在每次迭代期间从整个数据集中进行采样,因此可以在另一次迭代期间再次选择在一次迭代期间选择的值.
简介: ShuffleSplit迭代工作,KFold只是将数据集分成k个折叠.
进行验证时的差异
在KFold中,在每一轮中,您将使用一个折叠作为测试集,并将所有剩余的折叠作为训练集.但是,在ShuffleSplit中,在每一轮中,n
您应该只使用迭代中的训练和测试集n
.随着您的数据集的增长,交叉验证时间增加,使得shufflesplits成为更具吸引力的替代品.如果您可以训练您的算法,使用一定比例的数据而不是使用所有k-1折叠,ShuffleSplit是一个很有吸引力的选择.