python - 如何在带有朴素贝叶斯分类器和 NLTK 的 scikit 中使用 k 折交叉验证

标签 python scikit-learn nltk cross-validation naivebayes

我有一个小的语料库,我想用 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/

相关文章:

python - 如何在数据框列上使用 geopy vicenty 距离?

python - 从流中产生的正确方法是什么?

python - 使用 scikit.mlpregressor 训练多个数据集

python - 如何使用 python nltk 加速 stanford NER 的 NE 识别

python - NLP 句子意义提取方法

python - Flask,无法分配请求的地址

python - 是否可以在 python 中创建图排列?

python - 在 Python 中导入 sklearn 时出现导入错误

python - 在测试和训练数据集中使用基于时间的拆分来拆分数据

python - 导入 nltk 库时未找到语料库/停用词