python-3.x - 训练结束后,nltk naivebayes 分类器如何学习更多特征集?

标签 python-3.x machine-learning classification nltk naivebayes

我现在正在使用 nltk_classifier 对句子的类别进行分类。

所以我已经使用 11000 个句子的特征集训练了分类器。

train_set, test_set = featuresets[1000:], featuresets[:1000]
classifier = naivebayes.NaiveBayesClassifier.train(train_set)

但我想添加更多(句子,类别)功能集来升级分类器。 我知道的唯一方法是将功能集附加到已学习的功能集列表中。这样就会产生新的分类器。但我认为这种方法效率不高,因为训练一个或更少的句子需要花费很多时间。

有没有什么好的方法可以通过添加特征集来提高分类器的质量???

最佳答案

有两件事。

  1. 朴素贝叶斯通常非常快。它仅访问您的所有训练数据一次并累积要素类共现统计数据。之后,它使用该统计数据来构建模型。通常,使用新的(增量)数据重新训练模型并不是问题。

  2. 只要您仍将要素类统计信息存储在某处,当新数据到来时,就可以不重做上述步骤。现在,您只需按照步骤 1 中的相同方式访问新数据,并不断更新要素类共现统计信息即可。一天结束时,您将获得新的分子 (m) 和分母 (n),它们适用于两个类先验 P(C)以及给定类 P(W|C) 的特征概率。您可以通过m/n得出概率。

友情提醒document classification中的贝叶斯公式:

--给定文档D,该文档属于C_j类别的概率为:

P(C_j|D) = P(D|C_j)*P(C_j)/P(D)

-- 该概率与以下内容成正比:

P(C_j|D) ~ P(W1|C_j) P(W2|C_j) ... P(Wk|C_j) * P(C_j) 

基于:

  • 朴素贝叶斯假设(文档中的所有单词,例如 W1、W2、...、Wk 都是独立的),
  • 丢弃 P(D),因为每个类都具有相同的 P(D) 作为分母(因此我们说比例不等于)。

-- 现在右侧的所有概率都可以通过相应的分数 (m/n) 计算,其中 mn存储(或可以导出)在要素类共生矩阵中。

关于python-3.x - 训练结束后,nltk naivebayes 分类器如何学习更多特征集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40447335/

相关文章:

python-3.x - 替代部分依赖图?

matlab - DerivativeCheck 因 minFunc 失败

machine-learning - SVM 对二进制数据 DNA 进行分类

classification - l1/l2 正则化导致 Vowpal wabbit 中所有特征权重为零是否合理?

deep-learning - loss、val_loss、acc 和 val_acc 在所有时期都不会更新

python 3 : How to use print() to print a string with quote?

python - 第四导数 - 我的图表是错误的,请让我知道我的错误

python - Itertools.chain.from_iterable

python - 机器学习 - 图像特征设计

machine-learning - 垃圾邮件分类 - 机器学习