我有一个小的语料库,我想用 10 倍交叉验证计算朴素贝叶斯分类器的准确率,怎么做。
最佳答案
您的选择是自己设置或使用 NLTK-Trainer 之类的东西自 NLTK doesn't directly support cross-validation for machine learning algorithms .
我建议您可能只使用另一个模块来为您执行此操作,但如果您真的想编写自己的代码,您可以执行以下操作。
假设您想要 10 倍,您必须将您的训练集划分为 10
个子集,在 9/10
上训练,测试在剩余的 1/10
上,并为每个子集组合 (10
) 执行此操作。
假设您的训练集位于名为 training
的列表中,实现此目的的简单方法是,
num_folds = 10
subset_size = len(training)/num_folds
for i in range(num_folds):
testing_this_round = training[i*subset_size:][:subset_size]
training_this_round = training[:i*subset_size] + training[(i+1)*subset_size:]
# train using training_this_round
# evaluate against testing_this_round
# save accuracy
# find mean accuracy over all rounds
关于python - 如何在带有朴素贝叶斯分类器和 NLTK 的 scikit 中使用 k 折交叉验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16379313/