朴素贝叶斯分类器使用python

我正在使用scikit-learn来查找文档的Tf-idf权重,然后使用Naive
贝叶斯分类器对文本进行分类.但是文档中所有单词的Tf-idf权重都是负数,除了少数.但据我所知,负值意味着不重要的术语.那么有必要将整个Tf-idf值传递给贝叶斯分类器吗?如果我们只需要通过其中的一小部分,我们该怎么做呢?与linearSVC相比,贝叶斯分类器有多好或多坏?除了使用Tf-idf之外,还有更好的方法在文本中查找标签吗?

谢谢

解决方法:

你有很多问题,但我会尽力帮忙.

据我记忆,TF-IDF不应该是负值. TF是术语频率(术语出现在特定文档中的频率)和反向文档频率(语料库中的文档数/包含该术语的文档数).那通常是日志加权.我们经常在分母中添加一个以避免被零除.因此,唯一一次得到负tf * idf的是,如果该术语出现在语料库的每个单独文档中(由于它没有添加信息,这对你提到的搜索不是很有帮助).我会仔细检查你的算法.

给定术语t,文件d,语料库c:

tfidf = term freq * log(document count / (document frequency + 1))
tfidf = [# of t in d] * log([#d in c] / ([#d with t in c] + 1))

在机器学习中,朴素的贝叶斯和支持向量机都是很好的工具 – 它们的质量会因应用程序的不同而有所不同,而且我已经完成了它们的准确性与之相当的项目. Naive Bayes通常很容易被手工攻击 – 我在冒险进入SVM库之前首先尝试一下.

我可能会遗漏一些东西,但我不太确定我确切知道你在寻找什么 – 很高兴修改我的答案.

上一篇:antd源码分析之——对话框(modal)


下一篇:Java中半结构化数据的贝叶斯分类