python 模块度社区分组python-louvain用法示例详解

这篇博客详细介绍了如何使用python-louvain库在Python中进行社区检测,包括Louvain算法的基本用法、显示带有社区的图、生成以社区为节点的图以及计算图的模块度等操作。示例代码展示了如何应用这些方法来处理Erdos-Renyi图。

python社区检测python-louvain用法示例详解–点击此处看全文

community该包实现了社区检测。

包名称是community,但在pypi上引用为python-louvain

由Louvain算法生成的树状图的最高分区

community.best_partition(graph, partition=None, weight='weight', resolution=1.0, randomize=None, random_state=None)

使用Louvain启发式算法计算最大化模块度图节点的分区(或尝试…)

这是最高模块度的分区,即由Louvain算法生成的树状图的最高分区。

参数:

  • graph:networkx.Graph
    要进行分解的networkx图

  • partition:dict,可选
    算法将使用此节点的分区。它是一个字典,其中键是节点,值是社区。

  • weight:str,可选
    在图中用作权重的键。默认为’weight’。

  • resolution:double,可选
    更改社区的大小,默认为1。

    表示在“Laplacian Dynamics and Multiscale Modular Structure in Networks”中描述的时间,R. Lambiotte,J.-C. Delvenne,M. Barahona

  • randomize:boolean,可选
    随机化节点评估顺序和社区评估顺序以获得每次调用时的不同分区

  • random_state:int,RandomState实例或None,可选(默认=None)
    如果是int,则random_state是随机数生成器使用的种子;

    如果是RandomState实例,则random_state是随机数生成器;如果是None,则随机数生成器是np.random使用的RandomState实例。

返回:

  • partition:字典
    分区,其中社区编号从0到社区数

引发:

  • NetworkXError
    如果图不是无向图

参见:

  • generate_dendrogram
    获取所有分解级别

注意:

  • 使用Louvain算法

参考文献:

示例:

基本用法

# 基本用法
import community as community_louvain
import networkx as nx
G = nx.erdos_renyi_graph(20, 0.1)
partition = community_louvain.best_partition(G)

基本用法:

  • 导入communitynetworkx
  • 创建一个随机的Erdos-Renyi图
  • 使用best_partition函数计算图节点的最优分区,并将结果保存在partition变量中
partition
Out[7]: 
{0: 0,
 1: 3,
 2: 2,
 3: 3,
 4: 0,
 5: 3,
 6: 1,
 7: 2,
 8: 2,
 9: 2,
 10: 2,
 11: 0,
 12: 2,
 13: 2,
 14: 0,
 15: 1,
 16: 3,
 17: 2,
 18: 3,
 19: 1}

显示带有其社区的图:

# 显示带有其社区的图:
# 由于Erdos-Renyi图没有真正的社区结构,
# 所以加载karate俱乐部图代替
import community as community_louvain
import matplotlib.cm as cm
import matplotlib.pyplot as plt
import networkx as nx
G = nx.karate_club_graph()
# 计算最佳分区
partition = community_louvain.best_partition(G)
# 绘制图形
pos = nx.spring_layout
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BigDataMLApplication

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值