c - 朴素贝叶斯实现和从类标签推断数据

标签 c matlab machine-learning classification

有没有人有任何关于朴素贝叶斯分类器实现的建议,最好是在 C 中。我有 5 维二进制数据集。类标签也是二进制的。我在 Matlab 中使用了朴素贝叶斯分类器,结果很好。但是,是否有任何机器学习算法及其实现可以让我从类标签中推断出数据?在这种情况下,我想要从二进制类标签推断出的五维二进制数据。数据样本为 [1 1 0 1 0],类别为 0。

最佳答案

因为你有一个二进制数据集,这里有一个使用 C 的很好的实现:

http://users.ics.tkk.fi/jhollmen/BernoulliMix/

这是我们目前在类(class)中使用的开源软件,您可以实际查看他是如何实现算法的。

关于你提出的问题,这是我的理解。

朴素贝叶斯分类器 (NBC) 所做的是在给定一些数据和标签的情况下预测 P(C|X)。根据贝叶斯定理,

P(C|X) = \frac{P(X|C)P(C)}{P(X)}

这意味着您只能预测未知数据的类别。相反,你想在那里做的是 P(X|C)。因此,您可以像这样训练您的模型,

P(X|C) = \frac{P(C|X)P(X)}{P(C)}

因此,您必须假设数据的分布......以及类似的东西,因此,如果您对数据的假设有误,它可能会非常准确。在你的情况下,你有二元属性 X 需要从标签类中估计,如果你假设属性是独立的,你需要的是这样的,

P(C|X_1,X_2,X_3,X_4,X_5) \proportional P(X_1|C)P(X_2|C)P(X_3|C)P(X_4|C)P(X_5|C)P(C)

这不是那么容易解决的.....

关于c - 朴素贝叶斯实现和从类标签推断数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5104304/

相关文章:

c - 为什么在 C 语言的 Ubuntu Linux 上 pango_layout_get_pixel_size 略有错误

C 替换变量号

performance - 在 MATLAB 中矢量化/优化此代码?

python - 如何绘制 statsmodels 拟合的置信区间?

c - dbus c api 示例不起作用

c - 如何获得 C 语言的目录列表?

regex - 正则表达式

c# - 从 C# 运行 64 位编译的 MATLAB 函数

machine-learning - 最大输出神经元 : are the weights in the maxout function referring to 2 unique sets of weights?

python - Pandas DataFrame 的 Keras LSTM 形状