当前位置:  开发笔记 > 编程语言 > 正文

在Java中实现NaïveBayes算法 - 需要一些指导

如何解决《在Java中实现NaïveBayes算法-需要一些指导》经验,为你挑选了1个好方法。

作为学校作业,我需要实现NaïveBayes算法,我打算用Java做.

在试图理解它是如何完成的时候,我读过"数据挖掘 - 实用机器学习工具和技术"一书,其中有一节关于这个主题,但我仍然不确定阻碍我进步的一些主要观点.

由于我在这里寻求指导而不是解决方案,我会告诉你们我在想什么,我认为正确的方法,并作为回报要求更正/指导非常值得赞赏.请注意,我是NaïveBayes算法,数据挖掘和一般编程的绝对初学者,因此您可能会在下面看到愚蠢的评论/计算:

我给出的训练数据集有4个属性/特征,使用Weka(无缺失值)和一个名义类(是/否)进行数字化和标准化(在[0 1]范围内)

1)来自csv文件的数据是数字HENCE

*鉴于属性是数字,我使用PDF(概率密度函数)公式.

+要在java中计算PDF,我首先根据它们是在类yes还是class no中分离属性并将它们保存到不同的数组中 (array class yes and array class no)

+然后计算sum of the values in row / number of values in that row每个类的4个属性(列)中每个属性的mean()和标准占卜

+现在找到给定值(n)的PDF (n-mean)^2/(2*SD^2),

+然后查找P( yes | E) P( no | E) i multiply the PDF value of all 4 given attributes and compare which is larger,表示它所属的类

在Java的temrs中,我正在使用ArrayList of ArrayListDouble 存储属性值.

最后我不确定如何获取新数据?我应该要求输入文件(如csv)或命令提示符并要求4个值吗?

我现在停在这里(确实有更多的问题),但我担心这会得到任何回应,因为它得到了多长时间.对于那些花时间阅读我的问题和评论的人,我将非常感激.



1> Yin Zhu..:

你在做什么几乎是正确的.

         + Then to find P( yes | E) and P( no | E) i multiply the PDF value of all 4 given attributes and compare which is larger, which indicates the class it belongs to 

在这里,你忘记了先前的P(是)或P(否).记住决定公式:

P(Yes | E) ~= P(Attr_1 | Yes) * P(Attr_2 | Yes) * P(Attr_3 | Yes) * P(Attr_4 | Yes) * P(Yes)

对于朴素贝叶斯(以及任何其他监督学习/分类算法),您需要有训练数据和测试数据.您可以使用训练数据来训练模型并对测试数据进行预测.您可以简单地将训练数据用作测试数据.或者您可以将csv文件拆分为两部分,一部分用于培训,另一部分用于测试.您还可以对csv文件进行交叉验证.

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有