python sklearn中的交叉验证

时间:2013-12-30 12:11:09

标签: python machine-learning scikit-learn

我正在使用python sklearn库进行数据分类。以下是我实施的代码。我只是想问一下,这是正确的分类方式吗?我的意思是可以跟随代码可能删除所有的偏见?而且,它是10k倍交叉验证吗?

cv = cross_validation.ShuffleSplit(n_samples, n_iter=3, test_size=0.1, random_state=0)

knn = KNeighborsClassifier()
KNeighborsClassifier(algorithm='auto', leaf_size=1, metric='minkowski',
       n_neighbors=2, p=2, weights='uniform')

knn_score = cross_validation.cross_val_score(knn,x_data_arr, target_arr, cv=cv)

print "Accuracy =", knn_score.mean()

谢谢!

2 个答案:

答案 0 :(得分:1)

如果你想使用ShuffleSplit进行10倍交叉验证,你应该把n_iter = 10。但是,如documentation所示:与其他交叉验证策略相反,随机分割并不能保证所有折叠都不同,尽管这对于相当大的数据集来说仍然很可能。 如果您想要使用不同折叠的10倍交叉验证,则另一个选项是使用函数KFold和n_folds = 10.

答案 1 :(得分:1)

cv模块中的参数cross_validation.cross_val_score()表示您要运行的迭代次数。它的默认值为3,这意味着它默认会运行3次交叉验证。如果您要运行10倍交叉验证,则此参数cv应等于10。我希望这会有所帮助。