连续属性 - 朴素贝叶斯算法的分布

时间:2012-11-30 15:38:51

标签: testing machine-learning artificial-intelligence classification

我试图通过在MATLAB中编写自己的代码来实现Naive Bayes算法。我很困惑为其中一个连续属性选择的分布。它的值如下:

         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

2 个答案:

答案 0 :(得分:1)

就像@ Ben的回答一样,从Histogram开始听起来不错。

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

enter image description here

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

用于生成图的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()

答案 1 :(得分:0)

假设此变量采用整数值,而不是连续(基于示例),最简单的方法是直方图类型方法:某些值的概率是它在训练数据中出现的次数的一小部分。考虑一个高于某个数字的所有值的最终bin(根据您的示例可能大约20个)。如果您有零计数问题,请在所有计数中添加一个(如果您倾向于这样,可以将Dirichlet视为Dirichlet)。

对于参数形式,如果您更喜欢参数形式,则泊松分布是可能的。一个qq图,甚至是一个拟合优度测试,都会表明你的情况是多么合适,但我怀疑你用基于直方图的方法会更好。