testing - 在朴素贝叶斯算法中,连续属性分布

  显示原文与译文双语对照的内容
0 0

我正在尝试实现 Naive Bayes算法- 在MATLAB中编写我自己的代码。 我感到困惑的是,为一个连续的属性选择了什么分布。 它具有如下值:


 MovieAge :
 1
 2
 3
 4
. . 
 10
 1
 11
 2
 12
 1
 3
 13
 2
 1
 4
 14
 3
 2
 5
 15
 4
 3
 6
 16
 5
 4
. . ..
 32
 9
 3
 15

请让我知道该数据使用哪种分发? 在我的测试集中,这个属性将包含在训练数据中不包含的值( 有些时候) 。 如何处理这里问题? 感谢 15

时间: 原作者:

0 0

假设这里变量采用整数值,而不是连续( 基于这个例子),最简单的方法是直方图类型方法: 某些值的概率是在训练数据中出现的次数。 考虑某个数字( 可能是基于你的例子的20左右) 上面所有值的最终纸盒。 如果有零计数问题,请将其中一个添加到( 如果你是倾斜的,可以被看作是一个 Dirichlet ) 。

对于参数形式,如果你喜欢,泊松分布是可能的。 一个 qq plot,甚至是一个适合的测试,也会建议这在你的情况下是如何适合的。

0 0

像 @Ben's 答案一样,从直方图开始。

我接受你的输入,直方图如下所示:

enter image description here

将数据保存到名为 histdata的文本文件中,每行一行:

用于生成 plot的python 代码:


import matplotlib.pyplot as plt
data = []
for line in file('./histdata'):
 data.append(int(line))

plt.hist(data, bins=10)
plt.xlabel('Movie Age')
plt.ylabel('Counts')
plt.show()

...