问题标签 [naivebayes]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
523 浏览

machine-learning - 了解用于文本分类的朴素贝叶斯

我熟悉机器学习和朴素贝叶斯,但是在我的特征向量是一袋词的文档分类中,我很难理解如何实现它。

特别是,您如何计算类条件特征似然性Pr(word | class)?在许多文本中,我看到以下术语:

在此处输入图像描述

右手边是如何实现的?是出现c特征f的类文档数除以类文档数c吗?

例如,假设您有 10 个文档,其中 7 个是 C1 类,3 个是 C2 类。其中一些出现了“惊人”这个词:

看起来像:

  • 计数(惊人的,C1)= 3
  • 计数(惊人的,C2)= 1
  • 计数(C1)= 7
  • 计数(C2)= 3

Pr(amazing|C1) = 3/7 和 Pr(amazing|C2) = 1/3?


编辑 2015 年 5 月 7 日

我在“ Introduction to Information Retrieval ”一书的第 13 章 ( PDF )中遇到了关于用于文本分类的朴素贝叶斯的讨论。类条件特征概率有一个不同的公式:

在此处输入图像描述

因此,这里看起来 count(word, class) 是类中文档中单词的出现总数,而不是类中文档的数量。

同样,count(class) 是类中文档中的单词总数,而不是类中文档的数量。

P(feature|class) 的哪个公式是首选?

0 投票
1 回答
336 浏览

python - 实现朴素贝叶斯文本分类,但我一直得到零

我正在使用朴素贝叶斯进行文本分类,这就是我为指定类别中的每个术语创建初始权重的方式:

  • term1:term 1 存在的次数/categoryA 中的文档数
  • term2:term 2 存在的次数/categoryA 中的文档数
  • term3:term 3 存在的次数/categoryA 中的文档数

  • term1:term 1 存在的次数/categoryB 中的文档数

  • term2:term 2 存在的次数/categoryB 中的文档数
  • term3:term 3 存在的次数/categoryB 中的文档数

对于新的测试文档,我根据测试文档中是否存在该术语来调整权重:

  • term1:存在于测试文档中,所以我对 categoryA_term1 使用与上面相同的权重
  • term2:在测试文档中不存在,所以我对 categoryA_term2 使用 1-weight
  • term3:在测试文档中不存在,所以我对 categoryA_term3 使用 1-weight

  • term1:存在于测试文档中,所以我对 categoryB_term1 使用与上面相同的权重

  • term2:在测试文档中不存在,所以我对 categoryB_term2 使用 1-weight
  • term3:存在于测试文档中,所以我对 categoryB_term2 使用与上面相同的权重

然后我将每个类别的权重相乘。这在我创建每个句子的虚拟训练/测试文档时有效,但是当我为训练/测试文档实现真实文档时,当我将它们全部组合在一起时,我一直保持为零。这是因为概率是如此之小,以至于在乘以这么多小数之后,python 只是收敛到零?我被困住了,我一直遇到同样的零问题:(我非常感谢你的帮助!

0 投票
1 回答
1018 浏览

nltk - 如何使 nltk.NaiveBayesClassifier.train() 与我的字典一起使用

我目前正在使用 Naive Bayles 制作一个简单的垃圾邮件/火腿电子邮件过滤器。

为了让您了解我的算法逻辑:我有一个包含很多 os 文件的文件夹,这些文件是垃圾邮件/火腿电子邮件的示例。我在这个文件夹中还有另外两个文件,其中包含我所有火腿示例的标题,另一个包含我所有垃圾邮件示例的标题。我是这样组织的,所以我可以正确打开和阅读这些电子邮件。

我将我认为重要的所有单词都放在字典结构中,并带有标签“垃圾邮件”或“火腿”,具体取决于我从哪种文件中提取它们。

然后我使用 nltk.NaiveBayesClassifier.train() 所以我可以训练我的分类器,但我得到了错误:

对于功能集,labeled_featuresets 中的标签:ValueError:要解包的值太多

我不知道为什么会这样。当我寻找解决方案时,我发现字符串不是可散列的,并且我正在使用列表来执行此操作,然后我将其变成了字典,据我所知,它是可散列的,但它一直出现此错误。有人知道如何解决吗?谢谢!

我的所有代码都列在下面:

0 投票
0 回答
1432 浏览

python-3.x - TextBlob 的 NaiveBayesClassifier 是如何工作的?

我正在使用 TextBlob 的 NaiveBayesClassifier 函数对一些短语进行分类,目前它工作正常。

我的问题是,我需要解释该函数如何与表测试一起使用。TextBlob 的 NaiveBayesClassifier 如何对一个短语进行分类以及如何获得“prob_classify(text)”函数生成的概率数?

我使用http://textblob.readthedocs.org/en/latest/classifiers.html来了解这个功能。

0 投票
1 回答
52 浏览

c# - windows phone c# 贝叶斯算法进行图像处理

正在使用 windows phone c# 并尝试实现贝叶斯算法来比较 2 个图像并说明差异的百分比?有什么帮助吗?

0 投票
0 回答
387 浏览

weka - 多项式朴素贝叶斯分类器滑动窗口(MOA 实现,weka)

我面临以下问题:我正在尝试在滑动窗口中实现 MNB 分类器。我实现了一个窗口大小的 LinkedList 并存储了必须在其中考虑的所有流实例。当一个不再适合窗口的新实例到达时,第一个实例被删除。为了删除相应的字数,我实现了以下方法,它与 moa 的 trainOnInstanceImpl() 基本相同,只是向后:

现在,如果我输出 m_wordTotalForClass[classValue] 我会在具有 3000 个实例的流上从实例 2000-3000 中获得经典 MNB 的不同结果,与来自窗口大小为 1000 的滑动窗口 MNB(见上文)的结果不同。唯一的区别是它在某些点输出 1 而不是 0,但并非总是如此。我想这与拉普拉斯校正有关。可能 if 语句中的舍入存在问题:

这样我们就不会总是输入设置拉普拉斯值的部分。

有人有想法吗?我有点发疯了,因为我在过去三天一直在思考问题可能出在哪里。任何帮助将不胜感激!

0 投票
0 回答
463 浏览

r - 朴素贝叶斯实现

在我的项目中,我使用了“e1071”库中的朴素贝叶斯实现,执行时间相当长。然后,我使用了“nblearn”中的朴素贝叶斯实现,结果非常相似,但执行时间有时会缩短近 10 倍!

有没有人注意到同样的事情?这可能是什么原因?

0 投票
0 回答
146 浏览

r - R中的朴素贝叶斯概率模型

我在只有名义属性的模型上有一个朴素贝叶斯模型。该模型是在 KNIME 中构建的,现在我必须在 R 中使用它。在 R 中是否有一种自动化的方法可以用这个模型进行分类?或者..在给定贝叶斯表的情况下,给我 P(C=1|x1,,xn) 的公式如何?我需要概率,而不仅仅是分类的评分函数,所以对我来说 P(C=1)* P(x1|C=1) * .. * P(xn|C=1) 不起作用。

谢谢大家。

0 投票
0 回答
93 浏览

statistics - 朴素贝叶斯分类......效率不高

我有一个包含 1000 万个产品(标题、描述、品牌、类别)的数据库作为学习数据集。我想制作一个算法来对大约 10 000 个没有类别的产品进行分类。

我编写了一个小 java 程序来使用朴素贝叶斯分类器训练算法,但是当我输入我的 10 000 个产品时,我只得到 30% 的正确答案......

有没有办法改善这一点?

谢谢你。

0 投票
1 回答
253 浏览

facebook - Facebook帖子的朴素贝叶斯情绪分析

你们中的任何人都可以帮我解决以下问题吗?

我的目标是对帖子的评论进行情绪分析,看看反馈是正面的还是负面的。

为此,我有以下 RestFB JAVA API 代码:

我的问题是每次分析都返回负面,所以我检查了“commentsPolarity”变量中的内容,发现它包含以下内容:

“评论[数据=[评论[附件=null canRemove=true 评论=null createdTime=Fri Jun 05 12:21:32 BRT 2015 from=CategorizedFacebookType[category=Artist id=1440092102975875 metadata=null name=Luis Henrique type=null] id=10153129969287326_10153133899852326 isHidden=null likeCount=0 likes=null message =Sou modelo e gostaria de mostrar meu trabalho, 请参阅 meu catálogo! metadata=null object=null parent=null type=null userLikes=false canComment=false canHide=false]]总数=4]"

我相信只要我能得到消息,我的问题就会得到解决。

我曾尝试使用post.getComments().getData();,但后来我的 Flume 源停止使用提取的数据创建最终文件。

那么,有人可以提供一些线索来做什么吗?