问题标签 [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.
c++ - OpenCV 的多项朴素贝叶斯
我正在寻找一个用C/C++编写的多项式朴素贝叶斯分类器,用于OpenCV。
我正在寻找算法(或现成的实现),因为它会更有帮助,因为我试图了解它是如何工作的?
matlab - 朴素分类器matlab
在 matlab 中测试朴素分类器时,即使我对相同的样本数据进行了训练和测试,我也会得到不同的结果,我想知道我的代码是否正确,是否有人可以帮助解释这是为什么?
这是一个例子:
请注意,它得到了ipsweep、teardrop 和 back与正常流量混合。我还没有到对看不见的数据进行分类的阶段,但我只是想测试它是否会对相同的数据进行分类。
混淆矩阵输出:
尽管我不知道这实际上是什么,而且我的代码中可能有这个错误,但我想我只是测试一下它的输出。
classification - 朴素贝叶斯分类器的准确性?
我们可以使用朴素贝叶斯分类器的准确率百分比来检查分类器的准确度吗?
matlab - 贝叶斯网络和朴素贝叶斯分类器有什么区别?
贝叶斯网络和朴素贝叶斯分类器有什么区别?我注意到一个刚刚在 Matlab 中实现,因为classify
另一个有一个完整的网络工具箱。
如果您能在回答中解释哪个更有可能提供更好的准确性,我将不胜感激(不是先决条件)。
bayesian - 朴素贝叶斯算法的替代方案
我们正在尝试实现一种语义搜索算法,以根据用户的搜索词给出建议的类别。
目前我们已经实现了朴素贝叶斯概率算法来返回我们数据中每个类别的概率,然后返回最高的概率。
然而,由于它的幼稚,它有时会得到错误的结果。
如果不涉及神经网络和其他极其复杂的东西,我们可以研究另一种选择吗?
matlab - MATLAB:具有单变量高斯的朴素贝叶斯
我正在尝试使用 UCI 机器学习团队发布的数据集来实现朴素贝叶斯分类器。我是机器学习的新手,并试图理解用于我的工作相关问题的技术,所以我认为最好先理解理论。
我正在使用 pima 数据集(链接到数据 - UCI-ML),我的目标是为 K 类问题构建朴素贝叶斯单变量高斯分类器(只有 K=2 的数据存在)。我已经完成了数据拆分,并计算了每个班级的平均值、标准偏差、每个班级的先验,但在此之后我有点卡住了,因为我不确定在此之后我应该做什么以及如何做。我有一种感觉,我应该计算后验概率,
这是我的代码,我使用百分比作为向量,因为我想看到当我从 80:20 拆分增加训练数据大小时的行为。基本上,如果您通过 [10 20 30 40],它将从 80:20 拆分中获取该百分比,并使用 80% 的 10% 作为训练。
python - 使用 NLTK 的半监督朴素贝叶斯
我基于 EM(期望最大化算法)在 Python 中构建了 NLTK 朴素贝叶斯的半监督版本。但是,在 EM 的某些迭代中,我得到了负对数似然(EM 的对数似然在每次迭代中都必须为正),因此我相信我的代码中一定有一些错误。仔细查看我的代码后,我不知道为什么会发生这种情况。如果有人能在下面的代码中发现任何错误,将不胜感激:
EM算法主循环
自定义函数 gen-freqdists,用于创建所需的频率分布
matlab - 朴素贝叶斯:TRAINING 的每个特征的类内方差必须为正
尝试拟合朴素贝叶斯时:
我收到一个错误:
任何人都可以阐明这一点以及如何解决它?请注意,我在这里阅读了类似的帖子,但我不确定该怎么做?似乎它试图基于列而不是行来拟合,类方差应该基于每一行属于特定类的概率。如果我删除这些列,那么它可以工作,但显然这不是我想要做的。
matlab - 朴素贝叶斯分类器和判别分析的准确性还差得很远
所以我有两种分类方法,判别分析diaglinear
分类(朴素贝叶斯)和matlab中实现的纯朴素贝叶斯分类器,整个数据集中有23个类。第一种方法判别分析:
从混淆矩阵中获得81.49%的准确率,错误率 ( err
) 为0.5040(不知道如何解释)。
第二种方法朴素贝叶斯分类器:
产生81.89%的准确率。
我只做了一轮交叉验证,我是 matlab 和监督/无监督算法的新手,所以我自己做了交叉验证。我基本上只是把 10% 的数据放在一边用于测试目的,因为它每次都是随机的。我可以通过它几次并取平均准确度,但结果将用于解释目的。
所以对于我的问题。
在我对当前方法的文献回顾中,许多研究人员发现将单一分类算法与聚类算法混合可以产生更好的准确度结果。他们通过为他们的数据找到最佳数量的集群并使用分区集群(应该更相似)通过分类算法运行每个单独的集群来做到这一点。一个过程,您可以将无监督算法的最佳部分与监督分类算法结合使用。
现在,我正在使用一个在文学作品中多次使用的数据集,并且我正在尝试一种与其他人不太相似的方法。
我首先使用了简单的 K-Means 聚类,它令人惊讶地具有很好的聚类数据的能力。输出如下所示:
查看每个集群 (K1, K2...K12) 类标签:
我发现主要每个集群在 9 个集群中都有一个类标签,而 3 个集群包含多个类标签。表明 K-means 对数据有很好的拟合。
然而,问题是一旦我拥有每个集群数据(cluster1,cluster2...cluster12):
我将每个集群通过朴素贝叶斯或判别分析,如下所示:
准确率变得可怕,50% 的聚类以 0% 的准确率分类,每个分类的聚类(acc1,acc2,...acc12)都有自己对应的混淆矩阵你可以在这里看到每个聚类的准确率:
所以我的问题/问题是:我哪里出错了?我首先想到的可能是集群的数据/标签混合在一起,但是我在上面发布的内容看起来是正确的,我看不出它有什么问题。
为什么与第一个实验中使用的未见 10% 数据完全相同的数据会为相同的未见聚类数据产生如此奇怪的结果?我的意思是应该注意,NB 是一个稳定的分类器,不应该轻易过度拟合,并且看到训练数据很大,而要分类的集群是并发的过度拟合不应该发生?
编辑:
根据评论的要求,我已将 cmat 文件包含在第一个测试示例中,其准确度为81.49%,错误为0.5040:
在此示例(cluster4)中还要求提供 K、class 和相关 cmat 的片段,准确度为3.03%:
看到有大量的类(总共 23 个),我决定减少1999 年 KDD 杯中概述的类,这只是应用了一些领域知识,因为一些攻击比其他攻击更相似并且属于一个总称。
然后我用 44.4 万条记录训练分类器,同时保留 10% 用于测试目的。
准确率更差73.39%错误率也更差0.4261
看不见的数据分为以下几类:
类别或分类标签(判别分析的结果):
训练数据由以下部分组成:
我担心如果我降低训练数据以具有相似百分比的恶意活动,那么分类器将没有足够的预测能力来区分类别,但是查看其他一些文献我注意到一些研究人员删除了 U2R,因为没有t 足够的数据来成功分类。
到目前为止我尝试过的方法是一类分类器,我训练分类器只预测一个类(无效),对单个集群进行分类(精度更差),减少类标签(第二好)并保留完整的 23 个类标签(最佳精度)。
machine-learning - 朴素贝叶斯,不是那么朴素吗?
我有一个寻找大写字母的朴素贝叶斯分类器(用 WEKA 实现)。
对于某个类别,LCD 一词几乎出现在训练数据的每个实例中。当我得到“LCD”属于该类的概率时,它类似于 0.988。赢。
当我得到“L”的概率时,我得到一个普通的 0,而对于“LC”,我得到 0.002。由于特征是幼稚的,L,C和D不应该独立地贡献整体概率,结果“L”有一些概率,“LC”更多,“LCD”更多吗?
同时,使用 MLP 进行相同的实验,而不是具有上述行为,它给出了 0.006、0.5 和 0.8 的百分比
所以 MLP 做了我期望朴素贝叶斯做的事情,反之亦然。我错过了什么,谁能解释这些结果?