NMI(标准化互信息) python实现

浏览: 2888

介绍

NMI是社区发现(community detection)在有标准ground-truth的情况下的重要衡量指标,基本可以比较客观地评价出一个社区划分与标准划分之间相比的准确度。NMI的值域是0到1,越高代表划分得越准。具体的原理和例子可以参考这篇博客:http://www.cnblogs.com/ziqiao/archive/2011/12/13/2286273.html 
因为之前自己要用到,但是发现在网上现成的计算NMI的代码基本都是matlab的和java的,没找到用python写的。所以今天闲来无事,把上面博客中的matlab实现方法用python实现了一下。将来就可以直接用了。

代码

其实代码很简单,就是参考博客中直接从matlab翻译成python,不过有一些小坑而已。 
python代码 
直接给代码,跟博客中的没什么区别啦,这里解释一下代码中的eps是一个很小的正数,为了防止log函数中参数为0而已。 
为了方便大家使用python的话可以直接用,最后附有下载地址。

结果

使用代码中的用例,可以看到,如果输出的结果是0.36456,说明结果就是正确的。

下载地址

CDNS下载 
没积分的也可以github下载: 
github下载链接 
记得给star喔~

推荐 4
本文由 施维而已 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

4 个评论

好东西
看来勇哥也是做过社区挖掘的哈哈
我也来试试,谢谢楼主分享
一起学习一起学习

要回复文章请先登录注册