在NLTK中实现词袋模型的朴素贝叶斯分类器

我的问题与这个人的问题基本相同。NLTK书中关于朴素贝叶斯分类器的示例仅考虑单词在文档中是否出现作为特征,而没有考虑单词的频率作为“词袋”模型的特征。

一个回答似乎表明这不能用NLTK内置的分类器来实现。事实是这样吗?我如何用NLTK实现基于频率/词袋的朴素贝叶斯分类?


回答:

scikit-learn多项式朴素贝叶斯的实现,这是这种情况下正确的朴素贝叶斯变体。不过,支持向量机(SVM)可能会表现得更好。

正如Ken在评论中指出的,NLTK有scikit-learn分类器的一个不错的封装。从文档中修改而来,这里有一个稍微复杂的例子,它进行TF-IDF加权,根据卡方统计选择1000个最佳特征,然后将其传递给多项式朴素贝叶斯分类器。(我猜这有点笨拙,因为我对NLTK和scikit-learn都不太熟悉。)

对我来说打印结果是:

Confusion matrix:524     376202     698

虽然不是完美的,但考虑到这不是一个超级简单的问题,并且只在100/100的样本上训练,效果还算不错。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注