adr*_*rin 6 python machine-learning scikit-learn
如何在scikit-learn中生成交叉验证的随机折叠?
想象一下,我们有一个类的20个样本,另外80个样本,我们需要生成N个训练集和测试集,每个训练集大小为30,在每个训练集的约束条件下,我们有50%的类2级中的1%和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)
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
在 scikit 中没有直接的方法可以通过欠采样进行交叉验证,但有两种解决方法:
1.
用于StratifiedCrossValidation实现交叉验证,每个折叠中的分布反映数据的分布,然后您可以通过参数实现分类器的不平衡减少,该参数class_weight可以采用auto与其计数成反比的欠采样/过采样类,或者您可以传递具有显式权重的字典。
2.
编写您自己的交叉验证例程,使用pandas应该非常简单。