假设我们有两个社区分区,如下所示:

社区分区1

Community0= [8, 16, 17, 19, 20, 21, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33]
Community1= [1, 2, 3, 7, 11, 12, 13, 15, 18]
Community2= [0, 4, 5, 6, 9, 10, 14, 22]

因此, node 的社区信息:

[2, 1, 1, 1, 2, 2, 2, 1, 0, 2, 2, 1, 1, 1, 2, 1, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

社区分区2

Community0= [32, 33, 8, 16, 17, 19, 20, 21, 23, 24, 25, 26, 27, 28, 29, 30, 31]
Community1= [0, 3, 4, 5, 6, 9, 10, 11, 22]
Community2= [1, 2, 7, 12, 13, 14, 15, 18]

因此, node 的社区信息:

[1, 2, 2, 1, 1, 1, 1, 2, 0, 1, 1, 1, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

我们想要比较这些分区,以衡量信息的变化.我们使用cdlib的valuation.Variation_of_Information和iggraph Python的方法=‘vi’比较社区.

但是,cdlib结果为0.66,图形结果为0.46.

他们的结果是不同的.我们如何衡量它呢?

推荐答案

我判断了两个库中的源代码.

Iggraph以自然单位返回信息的变化,即它使用自然对数.Cdlib以位为单位返回它,即它使用以2为底的对数.你得到的两个结果是一致的,因为0.46/ln(2)=0.66.

我更新了iggraph文档,提到使用了自然单位.

Python相关问答推荐

使用Keras的线性回归参数估计

acme错误-Veritas错误:模块收件箱没有属性linear_util'

使用新的类型语法正确注释ParamSecdecorator (3.12)

Pandas 都是(),但有一个门槛

如何使用LangChain和AzureOpenAI在Python中解决AttribeHelp和BadPressMessage错误?

两个pandas的平均值按元素的结果串接元素.为什么?

基于索引值的Pandas DataFrame条件填充

当递归函数的返回值未绑定到变量时,非局部变量不更新:

Scrapy和Great Expectations(great_expectations)—不合作

在极中解析带有数字和SI前缀的字符串

如何检测鼠标/键盘的空闲时间,而不是其他输入设备?

如何在海上配对图中使某些标记周围的黑色边框

freq = inject在pandas中做了什么?''它与freq = D有什么不同?''

如何将返回引用的函数与pybind11绑定?

Pandas在rame中在组内洗牌行,保持相对组的顺序不变,

Django在一个不是ForeignKey的字段上加入'

利用SCIPY沿第一轴对数组进行内插

按条件计算将记录拆分成两条记录

如何删除剪裁圆的对角线的外部部分

极地数据帧:ROLING_SUM向前看