我试图通过在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
答案 0 :(得分:1)
就像@ Ben的回答一样,从Histogram开始听起来不错。
我接受你的输入,直方图如下所示:
将您的数据保存到名为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图,甚至是一个拟合优度测试,都会表明你的情况是多么合适,但我怀疑你用基于直方图的方法会更好。