【发布时间】:2016-04-28 16:26:19
【问题描述】:
使用 sklearn,当您创建一个新的 KFold 对象并且 shuffle 为 true 时,它会生成一个不同的、新随机化的折叠索引。但是,即使 shuffle 为真,来自给定 KFold 对象的每个生成器都会为每个折叠提供相同的索引。为什么会这样?
例子:
from sklearn.cross_validation import KFold
X = np.array([[1, 2], [3, 4], [1, 2], [3, 4]])
y = np.array([1, 2, 3, 4])
kf = KFold(4, n_folds=2, shuffle = True)
for fold in kf:
print fold
print '---second round----'
for fold in kf:
print fold
输出:
(array([2, 3]), array([0, 1]))
(array([0, 1]), array([2, 3]))
---second round----#same indices for the folds
(array([2, 3]), array([0, 1]))
(array([0, 1]), array([2, 3]))
这个问题的动机是对此answer 的评论。我决定将其拆分为一个新问题,以防止该答案变得过长。
【问题讨论】:
标签: python scikit-learn cross-validation