原文地址:

一、已知真实社区划分结果

1.NMI指数,互信息和标准化互信息

具体公式和matlab代码参见博客,Python代码参加,C++代码参见

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
function MIhat = nmi( A, B )
%NMI Normalized mutual information
% http://en.wikipedia.org/wiki/Mutual_information
% http://nlp.stanford.edu/IR-book/html/htmledition/evaluation-of-clustering-1.html
% Author: http://www.cnblogs.com/ziqiao/   [2011/12/15]
if length( A ) ~= length( B)
    error('length( A ) must == length( B)');
end
if iscolumn(A)
    A=A';
end
if iscolumn(B)
    B=B';
end
total = length(A);
A_ids = unique(A);
A_class = length(A_ids);
B_ids = unique(B);
B_class = length(B_ids);
% Mutual information
idAOccur = double (repmat( A, A_class, 1) == repmat( A_ids', 1, total )); %得到节点社区矩阵N*C
idBOccur = double (repmat( B, B_class, 1) == repmat( B_ids', 1, total ));
idABOccur = idAOccur * idBOccur';
Px = sum(idAOccur') / total;
Py = sum(idBOccur') / total;
Pxy = idABOccur / total;
MImatrix = Pxy .* log2(Pxy ./(Px' * Py)+eps);
MI = sum(MImatrix(:));
% Entropies
Hx = -sum(Px .* log2(Px + eps),2);
Hy = -sum(Py .* log2(Py + eps),2);
%Normalized Mutual information
MIhat = 2 * MI / (Hx+Hy);
% MIhat = MI / sqrt(Hx*Hy); another version of NMI
end

  

2.ARI指数

文献来源:【2015浙江大学博士】复杂网络节点影响力模型及其应用_王益文

ARI原理介绍,ARI MATLAB代码下载 ,ARI评估指数包含在EDA工具箱中,EDA工具箱介绍

ARI的评估函数在EDA的工具箱中,调用函数甚多,就不贴出来了。自己下载EDA工具箱,放在matlab\toolbox文献夹下,设置完路径即可调用adjrand()

二、不知道真实社区划分情况

1.模块度Q(社区内的边尽可能多,而社区之间的边尽量地少)

Q就是模块度,模块度越大则表明社区划分效果越好。Q值的范围在[-0.5,1),论文表示当Q值在0.3~0.7之间时,说明聚类的效果很好

具体推导流程参见博客,这篇博客推导流程非常详细,而且使用矩阵运算减少了运算复杂度。

代码如下,A是图的邻接矩阵, a是n*1的向量,即每个节点所属社区。例如[1 2 1 1 2],表示节点1、3、4属于社区1,节点2、5属于社区5

1
2
3
4
5
6
7
8
9
10
11
12
function [Q1]=modul(A,a)
one = 1:length(A);
a = [one' a];
%  建立节点社区矩阵
a = accumarray(a,1);
a = a(:,any(a));%  删除A中全0的列
%  进行网络A模块度Q1运算
m = sum(sum(A))/2;
k = sum(A,2);
B = A - (repmat(k,[1,size(A,1)]) .* repmat(k',[size(A,1),1])) / (2*m);
Q1 = 1/(2*m) .* trace(a'*B*a);
end

社区发现的3个评估指标:标准化互信息NMI,ARI指标,以及模块度(modularity)相关推荐

  1. 社区发现的3个评估指标:标准化互信息NMI,ARI指标,以及模块度(modularity)...

    转载请注明出处:http://www.cnblogs.com/bethansy/p/6890972.html 一.已知真实社区划分结果 1.NMI指数,互信息和标准化互信息 具体公式和matlab代码 ...

  2. 社团划分评估-标准化互信息NMI的Python实现

    标准化互信息nmi是评估社团划分质量的一项重要指标,我在网上找了很久没有找到能用的,干脆自己参照公式写了一个,如果对你有帮助,请一键三连. 首先附上论文地址 NMI的公式定义如下: 最后附上代码: # ...

  3. 互信息python代码_转:标准化互信息NMI计算步骤及其Python实现

    标准化互信息NMI计算步骤 Python 实现 代码: ''' 利用Python实现NMI计算''' import math import numpy as np from sklearn impor ...

  4. 标准化互信息NMI计算步骤及其Python实现

    Excellence is a continuous process and not an accident. 卓越是一个持续的过程而不是一个偶然事件. 原文地址:https://dreamhomes ...

  5. python计算互信息_标准化互信息NMI计算步骤及其Python实现

    Excellence is a continuous process and not an accident. 卓越是一个持续的过程而不是一个偶然事件. 标准化互信息NMI计算步骤及其Python实现 ...

  6. 【复杂网络】社团划分结果评估指标:Q、ARI、NMI

    社团划分结果评估指标:Q.ARI.NMI 一.模块度Q(Modularity) 模块度也称模块化度量值,是目前常用的一种衡量网络社区结构强度的方法,最早由Mark NewMan提出了.模块度的定义为: ...

  7. 【机器学习】聚类算法、社区发现

    目录 前言 聚类和社区发现 社区发现 聚类算法 聚类-评估指标 社区发现-模块度 前言 最近方向是团案挖掘,关于聚类算法和社区发现,其实之前不怎么了解,最近得补补了. 聚类和社区发现 首先要先明白这两 ...

  8. 社区发现评价指标Q和NMI讲解、代码实现

    社区发现评价指标Q和NMI讲解.代码实现 文章目录 社区发现评价指标Q和NMI讲解.代码实现 模块度Q 标准化互信息NMI 代码实现 参考文献 模块度Q 2004年Newman等人提出了模块度Q,之后 ...

  9. 【图算法】社区发现算法——Fast unfolding

    [图算法]社区发现算法--Fast unfolding 1. 社区划分问题的定义: 2. 社区划分的评价标准: 3. Fast unfolding算法: 3.1 Fast Unfolding算法的基本 ...

最新文章

  1. HuaWeiCloud_model_arts
  2. 砸钱抢人抢项目,腾讯字节血拼游戏
  3. 设置 Linux 的 LD_LIBRARY_PATH 变量
  4. option标签selected=selected属性失效的问题
  5. win7系统的CMD窗口切换目录--小计
  6. linux内存管理方式,简要概括Linux内存管理的方式
  7. PS—制作 抖音 图标
  8. 计算机网络原理笔记精整理(汇总)
  9. windows系统c++/VS2019编译gRPC
  10. 程序员才是真正的段子手
  11. forward() takes 2 positional arguments but 3 were given
  12. 笔记本跑python 90多度会坏吗_cpu温度多高才安全?90度会烧坏吗??
  13. VmatrixOJ--解码游戏
  14. 数字版权资源价值日益凸显
  15. 成都java培训好习惯的养成
  16. 双心一键获取winsxs的写入权限,解决VC运行库安装error1935错误
  17. 安卓天天练练(一)不讨巧的绝对布局
  18. 已解决note: This is an issue with the package mentioned above,not pip.
  19. 企业用什么留住人才?
  20. [Django1.5]two-scoops-django-best-practics 笔记四

热门文章

  1. GitHub如何配置SSH Key
  2. 如何从后台传数据到前台显示
  3. Python实现小猪佩奇
  4. android 切换语言重启应用程序,Android 切换系统语言后,重启App
  5. 分享11条PyCharm使用技巧,非常实用
  6. python编写程序解方程_用Python解方程
  7. WK2204 - spi转uart调试记录
  8. APP开发流程工作详解
  9. [已解决] 输入信号超出范围,调整为1600x900@60Hz
  10. 沈南鹏对话郎平:我靠什么熬过两次至暗时刻-1