【发布时间】:2014-01-09 19:15:30
【问题描述】:
如何在 scikit-learn 中为交叉验证生成随机折叠?
假设我们有一个类的 20 个样本,另一个类有 80 个样本,我们需要生成 N 个训练集和测试集,每个训练集的大小为 30,在每个训练集的约束条件下,我们有 50 个第一类的百分比和第二类的 50%。
我发现了这个讨论 (https://github.com/scikit-learn/scikit-learn/issues/1362),但我不明白如何获得折叠。理想情况下,我认为我需要这样的功能:
cfolds = np.cross_validation.imaginaryfunction(
[list(itertools.repeat(1,20)), list(itertools.repeat(2,80))],
n_iter=100, test_size=0.70)
我错过了什么?
【问题讨论】:
-
为什么不直接使用
random.sample()? -
出于同样的原因,我们还有所有其他的 cross_validation 函数!?
-
你可以定义你自己的交叉验证生成器:它应该是一个带有
__len__的对象,它返回N和一个__iter__,它产生N列表对(train_indices, test_indices)。 -
谢谢@larsmans,这正是我所需要的。
标签: python machine-learning scikit-learn