请教下各位大神,我想对聚类分析的结果做一下检测,需要用到MI (mutual information)。
我在网上看到一个例子,但是有点困惑该怎么写概率部分的代码,情况是有A B两组,
A = [1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3];
B = [1 2 1 1 1 1 1 2 2 2 2 3 1 1 3 3 3]; A和B各是有三组,A是标准组,也就是每个类别(共三类)分别在三个组里,对A举个例子,好比6个苹果放在第一个苹果的组里,第二组是香蕉组,组里准确的有6个香蕉,第三组是桃子组,里面应该有5个草莓。
但是B组是实际的实验的结果(也就是对三种17个水果分组),分组的结果是说苹果组里混入了一个香蕉,然后第二组香蕉组里又错误的混入了一个苹果和一个桃子。第三组本来是草莓组,但是错误的分入了两个苹果。那么NMI的目的就是检测我分出的B组的准确率。
我的问题是:A和B里,各自本身存在三个组, 只有明确组别,下面的概率计算才可行,可是我该怎么写代码来算出下面的概率呢?求大神指教!!!!
计算的公式是:

此处
分子p(x,y)为x和y的联合分布概率,
p(1,1)=5/17, p(1,2)=1/17,p(1,3)=0;
p(2,1)=1/17, p(2,2)=4/17,p(2,3)=1/17;
p(3,1)=2/17, p(3,2)=0,p(3,3)=3/17;
分母p(x)为x的概率函数,p(y)为y的概率函数,x和y分别来自于A和B中的分布,所以即使x=y时,p(x)和p(y)也可能是不一样的。
对p(x): p(1)=6/17 p(2)=6/17p(3)=5/17
对p(y): p(1)=8/17 p(2)=5/17P(3)=4/17
这个例子有原文和Matlab的代码,求大神指教。
http://blog.csdn.net/aldenphy/article/details/9423841
多谢多谢!