问题标签 [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.
matlab - Gaussian Naive Bayes classification
I have found the following Matlab implementation of a Naive Bayes classifier:
https://github.com/jjedele/Naive-Bayes-Classifier-Octave-Matlab
What is the difference between Gaussian Naive Bayes and Naive Bayes? How could I extend the above implementation to become Gaussian Naive Bayes?
How can I extend the implementation for using it with 4 classes? Just doing one-vs-all other?
Thank you very much for the help.
machine-learning - NaiveBayes 分类器:我必须连接一个类的所有文件吗?
我正在实现一个简单的朴素贝叶斯分类器,但我不明白如何正确计算类条件概率 (P(d|c))。为了完整起见,我很快想解释一下使用的术语。朴素贝叶斯概率由下式计算:
c 表示任意类,而 d 是文档。让 x = {x1,x2,...,xn} 是 n 个特征的列表,例如 50 个最频繁的二元组)。
在我的训练集中有 i 个类(由一个名为 c_i 的文件夹表示),每个类都有 k 个文档(由普通文本文件表示)。
先验概率 P(c) 可以很容易地计算:
现在我想计算P(d|c)。这应该由
现在我不太明白如何计算 P(x_i|c)。我采用特征 x_i(比如说 bigram“th”),现在检查它在 c 类中出现的频率。但是我该怎么做呢?每个类由 k 个文档表示。我必须连接所有这些文件吗?后来我肯定要除以“所有功能的总数”。这会是所有(连接的)文档中bigram“th”的频率吗?
python - 在 python 中处理不同数据类型的 NaiveBayes 分类器
我正在尝试在 Python 中实现朴素贝叶斯分类器。我的属性是不同的数据类型:字符串、整数、浮点数、布尔值、序数
我可以使用高斯朴素贝叶斯分类器(Sklearn.naivebayes:Python 包),但我不知道如何处理不同的数据类型。分类器抛出错误,说明无法处理除 Int 或 float 以外的数据类型
我可能想到的一种方法是将字符串编码为数值。但我也怀疑,如果我这样做,分类器的性能会有多好。
java - REXP as List 不返回输出
我有一个 java 代码,我正在使用 Rserve 在 java 中运行我的 R 代码。这是我的代码的一部分:
问题是它返回以下内容:
正确的输出(不使用 Rserve - 直接在 R 会话上运行)应该是:
python - 朴素贝叶斯票据分类 Python
我目前从我们的票务系统导出了一个包含两列的 CSV。
简短描述和类别。
两者都是由代理在记录工单时创建的。例如
- 数据备份不工作,备份
- Groups,Notes 中的电子邮件更改
- 找不到备份目录,备份
- 电子邮件 > 全球 - Lotus Notes,Notes
我被要求使用 Python 编写一个朴素贝叶斯程序,该程序将读取 CSV 文件中的简短描述,然后决定如何对其进行分类。
我有 329 张门票,分为 6 个不同的类别。
以下是每个的计数:
- 1 级 60
- 2 类 77
- 三级 65
- 第 4 类 16
- 5级18
- 6 级 93
我在想我必须创建 6 个不同的字典(每个类一个),其中包含简短描述中使用的所有单词,不包括通常的 !"£$%^&*()<>,./?:;@' #~][{}
然后,当我运行该程序时,它将使用 nltk 标记简短描述并将其与所有字典进行比较,并且匹配度最高的任何一个都将确定类别。
我会以正确的方式解决这个问题吗?我应该为我的样品使用多少张票?
以下是我目前所拥有的。它基本上运行一个以类命名的 csv 文件,然后输出另一个删除了标点符号的文件,所有单词都以小写字母和单独的单元格显示。然后,此数据将用作字典。我不确定我是否会以正确的方式处理这件事。
编辑: 我现在已经开始使用以下内容,它从我的两列 csv 文件中获取数据:
可以肯定的是,我只需要获得更好的训练和测试数据样本量,然后我将输入一个简短描述的 csv,然后使用已计算的类对其进行更新。
从功能的角度来看,除非我犯了任何明显的错误,否则它似乎可以工作?
r - 对于朴素贝叶斯,插入符号和 klaR 包之间的速度差异
我正在运行一个朴素贝叶斯模型,klaR
直接使用该包非常快,在标准笔记本电脑上计算不到一秒:
mod <- NaiveBayes(category ~ ., data=training, na.action = na.omit)
然而,使用caret
包的train()
接口——我认为这只是上述函数的包装——需要很长时间:
mod <- train(category ~ ., data=training, na.action = na.omit, method="nb")
我猜这是因为train
默认包含一些重采样。我尝试包含trControl = trainControl(method = "none")
但收到以下错误:
Error in train.default(x, y, weights = w, ...) :
Only one model should be specified in tuneGrid with no resampling
任何想法为什么会发生这种情况或对这两个功能之间的速度差异的一般想法?
另外,速度差异有没有可能与公式界面有关?我的一些预测因子是超过一百个水平的因子。
text-extraction - 如何使用 PoS 标签作为朴素贝叶斯分类器训练数据的特征?
我正在研究如何为我的论文从文档中提取关键词。
在我的研究中,我使用朴素贝叶斯分类器机器学习来创建候选术语特征的训练模型。其中一个功能是PoS tag,我认为这个功能对于指定一个术语是否是关键短语很重要。
但是朴素贝叶斯(NB)分类器的输入是数字,PoS 标签是一个字符串。
所以我不知道如何将 PoS 标签特征表示为一个数字,以便成为 NB 分类器的输入特征。
请帮我给你的建议。
谢谢和问候, Hien Su
r - 使用 naiveBayes 预测类变量
我只是尝试在包中使用naiveBayes
函数。e1071
这是过程:
到目前为止,一切都很好。在下一步中,我尝试创建一个新数据点并使用 naivebayes 模型 ( model
) 来预测类变量 ( Species
),然后我选择了一个训练数据点。
结果如下:
而且很奇怪。我使用的数据点test
是数据集的行iris
。根据实际数据,该数据点的类变量为setosa
:
并naiveBayes
正确预测:
但是当我尝试预测test
数据点时,它会返回不正确的结果。当我只寻找一个数据点的预测时,为什么它会返回预测的四行?我做错了吗?
python - 使用 10 折交叉验证获取分类报告,说明多项式朴素贝叶斯的分类精度和召回率
我有以下一段代码,它使用 NB 分类器来解决多类分类问题。该函数通过存储准确度并稍后打印平均值来执行交叉验证。相反,我想要的是一个分类报告,指定类别的精确度和召回率,而不是最终的平均准确度得分。
如果我不执行交叉验证,我所要做的就是:
它给了我这样的报告:
即使在交叉验证的情况下,我如何才能获得类似的报告?
algorithm - Network-only-bayes-classifier 的伪代码
我正在尝试使用igraph
和为单变量网络数据实现分类工具包python
。
但是,我的问题实际上更多是关系分类领域的算法问题,而不是编程问题。
我正在关注网络数据论文中的分类。
我很难理解本文所指的“仅网络贝叶斯分类器”(NBC)是本文中解释的关系分类器之一。
我Naive Bayes
之前使用词袋特征表示实现了文本数据的分类器。文本数据的想法Naive Bayes
在我脑海中很清楚。
我认为这种方法(NBC)是将相同的想法简单地转换为关系分类领域。但是,我对方程式中使用的符号感到困惑,所以我无法弄清楚发生了什么。我对本文中使用的符号也有疑问。
NBC 在论文的第 14 页中进行了解释,
概括:
我需要论文第 14 页中解释的“仅网络贝叶斯分类器”(NBC)的伪代码。
伪代码符号:
- 让我们调用
vs
图中的顶点列表。len(vs)
是长度。vs[i]
是第 i 个顶点。 - 假设我们有一个单变量和二元场景,即
vs[i].class
要么是要么0
,1
并且节点没有其他给定特征。 - 假设我们之前运行了一个本地分类器,以便每个节点都有一个初始标签,这些标签是由本地分类器计算的。我只对关系分类器部分感兴趣。
- 让我们称
v
我们试图预测v.neighbors()
的顶点, 是 的邻居的顶点列表v
。 - 让我们假设所有的边权重都是
1
。
现在,我需要以下伪代码:
编辑:
为了让你的工作更轻松,我做了这个例子。我需要最后两个方程的答案。