igraph中cluster_leiden()结果$quality值含义的技术问询
igraph中cluster_leiden()返回的$quality字段含义及查询方式
问题场景
运行以下R代码:
library(igraph) g <- make_ring(5) set.seed(1) cle <- cluster_leiden(g, resolution=1, objective_function=c("CPM", "modularity")[1]) modularity(g, membership(cle)) cle$quality # print_all(g) # print.default(cle)
得到运行结果:
> modularity(g, membership(cle)) [1] -0.2 > cle$quality [1] -0.5
发现模块化计算结果与cle$quality的值不一致,疑问:cluster_leiden()返回结果中的$quality值代表什么含义?该从何处查询其定义?
解答
- $quality的含义
cle$quality是调用cluster_leiden()时指定的目标函数(objective_function)的计算结果。你代码中选择的是"CPM"(恒定波茨模型,Constant Potts Model),所以这个值是CPM目标函数的质量评分,而非模块化(modularity)指标。
只有当你将objective_function设为"modularity"时,cle$quality才会和modularity(g, membership(cle))的计算结果一致。
- 查询定义的方式
- 直接在R控制台执行
?cluster_leiden,查看该函数的官方帮助文档,文档里会明确说明quality字段对应所选目标函数的取值。 - 也可以查看igraph包的官方文档中关于Leiden算法实现的细节,或者参考Leiden算法的原始研究论文,但R内置的帮助文档已经足够解释该字段的核心意义。
内容的提问来源于stack exchange,提问作者clp
相关产品推荐
相关产品推荐

