我无法理解 KFold 交叉验证在新模型选择版本中的工作原理。我正在使用朴素贝叶斯分类器,我想使用交叉验证对其进行测试。我的测试和训练数据是这样拆分的:
test_set = posRevBag[:200] + negRevBag[:200]
train_set = posRevBag[200:] + negRevBag[200:]
并且它们表示为({'one': True, 'last': True...},pos)
。
我知道在旧的交叉验证中我会有类似的东西:
cv = cross_validation.KFold(len(train_set), n_folds=10, indices=True, shuffle=False, random_state=None, k=None)
for traincv, testcv in cv:
classifier = nltk.NaiveBayesClassifier.train(train_set[traincv[0]:traincv[len(traincv)-1]])
print 'accuracy:', nltk.classify.util.accuracy(classifier, train_set [testcv[0]:testcv[len(testcv)-1]])
对于新的交叉验证,我看到它不再占用训练集的长度,并且它使用了一个我不太熟悉的拆分函数,因为我手动拆分了我的测试和训练集,如上所示。