How to customize sklearn cross validation iterator by indices?(如何按索引定制skLearning交叉验证迭代器?)
问题描述
与Custom cross validation split sklearn类似,我想为GridSearchCV定义我自己的拆分,我需要为它定制内置的交叉验证迭代器。我希望将用于交叉验证的我自己的训练测试索引集传递给GridSearch,而不是让迭代器为我确定它们。我翻遍了skLearning文档页面上可用的简历迭代器,但没有找到。 例如,我想要实现如下内容 数据有9个样本 对于2份简历,我创建了一套自己的培训测试指标
>>> train_indices = [[1,3,5,7,9],[2,4,6,8]]
>>> test_indices = [[2,4,6,8],[1,3,5,7,9]]
1st fold^ 2nd fold^
>>> custom_cv = sklearn.cross_validation.customcv(train_indices,test_indices)
>>> clf = GridSearchCV(X,y,params,cv=custom_cv)
什么可以用来像Customcv一样工作?
推荐答案
实际上,交叉验证迭代器就是迭代器。它们在每次迭代中返回训练/测试折叠的元组。然后,这应该适用于您:
custom_cv = zip(train_indices, test_indices)
另外,对于您提到的特定情况,您可以
import numpy as np
labels = np.arange(0, 10) % 2
from sklearn.cross_validation import LeaveOneLabelOut
cv = LeaveOneLabelOut(labels)
观察list(cv)
收益率
[(array([1, 3, 5, 7, 9]), array([0, 2, 4, 6, 8])),
(array([0, 2, 4, 6, 8]), array([1, 3, 5, 7, 9]))]
这篇关于如何按索引定制skLearning交叉验证迭代器?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!