作为一项学校作业,我需要在Java中实现朴素贝叶斯算法。
在尝试理解如何实现它时,我读了一本名为“数据挖掘 - 实用机器学习工具和技术”的书,其中有一节关于这个主题,但我仍然不确定一些主要点,这些点阻碍了我的进展。
因为我在这里寻求指导而非解决方案,所以我将告诉大家我在脑海中的想法,我认为是正确的方法,并寻求纠正/指导,这将非常感激。请注意,我是一个绝对的初学者,在朴素贝叶斯算法、数据挖掘和一般编程方面,所以你可能会看到下面愚蠢的评论/计算:
我得到的训练数据集有4个数值和规范化的属性/特征(在[0 1]范围内使用Weka),并且有一个名义类(是/否)。
1)来自csv文件的数据是数值型的,所以
* 给定属性是数值型的,我使用PDF(概率密度函数)公式。 * 要在Java中计算PDF,我首先根据它们是否在yes或no类中将属性分开,并将它们保存到不同的数组中(数组yes和数组no)。 * 然后计算每个类的4个属性(列)的平均值(行中值的总和/该行中的值数)和标准差。 * 现在要找到给定值(n)的PDF,我做的是(n-mean)^2/(2 * SD ^ 2)。 * 然后要找到P(yes | E)和P(no | E),我将所有4个给定属性的PDF值相乘并比较哪个更大,这表明它属于哪个类。
在Java方面,我使用ArrayList of ArrayList和Double来存储属性值。
最后,我不确定如何获取新数据?我应该请求输入文件(如csv)还是命令提示符并请求4个值?
我现在就停在这里(还有更多问题),但我担心这不会得到任何回应,因为它太长了。对于那些花时间阅读我的问题和评论的人,我会非常感激。
在尝试理解如何实现它时,我读了一本名为“数据挖掘 - 实用机器学习工具和技术”的书,其中有一节关于这个主题,但我仍然不确定一些主要点,这些点阻碍了我的进展。
因为我在这里寻求指导而非解决方案,所以我将告诉大家我在脑海中的想法,我认为是正确的方法,并寻求纠正/指导,这将非常感激。请注意,我是一个绝对的初学者,在朴素贝叶斯算法、数据挖掘和一般编程方面,所以你可能会看到下面愚蠢的评论/计算:
我得到的训练数据集有4个数值和规范化的属性/特征(在[0 1]范围内使用Weka),并且有一个名义类(是/否)。
1)来自csv文件的数据是数值型的,所以
* 给定属性是数值型的,我使用PDF(概率密度函数)公式。 * 要在Java中计算PDF,我首先根据它们是否在yes或no类中将属性分开,并将它们保存到不同的数组中(数组yes和数组no)。 * 然后计算每个类的4个属性(列)的平均值(行中值的总和/该行中的值数)和标准差。 * 现在要找到给定值(n)的PDF,我做的是(n-mean)^2/(2 * SD ^ 2)。 * 然后要找到P(yes | E)和P(no | E),我将所有4个给定属性的PDF值相乘并比较哪个更大,这表明它属于哪个类。
在Java方面,我使用ArrayList of ArrayList和Double来存储属性值。
最后,我不确定如何获取新数据?我应该请求输入文件(如csv)还是命令提示符并请求4个值?
我现在就停在这里(还有更多问题),但我担心这不会得到任何回应,因为它太长了。对于那些花时间阅读我的问题和评论的人,我会非常感激。