【问题标题】:how to find clusters with a network based on density and weight of edges in python - networkx package如何根据python中边缘的密度和权重找到具有网络的集群-networkx包
【发布时间】:2017-05-15 20:03:07
【问题描述】:

我使用python包-networkx构建了一个网络,每条边都有一个权重,表示两个节点在相关性方面的接近程度。

如果有一个内置算法可以返回一个集群图,将每个节点分配给它的集群 ID(1 到 k),那将是理想的。

如果它可以基于边的权重进行聚类会更好,但不是关键......

知道如何做到这一点吗?

【问题讨论】:

标签: python cluster-analysis networkx hierarchical-clustering


【解决方案1】:

这可以帮助networkx.algorithms.community.label_propagation.asyn_lpa_communities

根据文档

返回由异步标签传播检测到的 G 中的 社区。 边的权重用于确定标签在节点的邻居中出现的频率。

【讨论】:

    【解决方案2】:

    您可能想查看包python-louvain。有了它,您可以使用函数best_partition 在图中检测社区。从功能描述来看:

    计算最大化图节点的分区 使用鲁汶启发式的模块化(或尝试..)

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

    在我的示例中,我计算了karate_club_graph 的社区。 (请注意,我使用 best_partitionweight 关键字,即使我的图表没有加权边——我只是展示您将如何在您的情况下使用该函数。)

    import networkx as nx
    import community
    
    G = nx.karate_club_graph()
    p = community.best_partition(G, weight='weight')
    print(p)
    

    输出:

    {0: 0, 1: 0, 2: 0, 3: 0, 4: 1, 5: 1, 6: 1, 7: 0, 8: 2, 9: 0, 10: 1, 11: 0, 12: 0, 13: 0, 14: 2, 15: 2, 16: 1, 17: 0, 18: 2, 19: 0, 20: 2, 21: 0, 22: 2, 23: 3, 24: 3, 25: 3, 26: 2, 27: 3, 28: 3, 29: 2, 30: 2, 31: 3, 32: 2, 33: 2}
    

    输出是一个字典(键 = 节点,值 = 分区)。分区从 0 到 k-1。如果您需要它们从 1 变为 k,您可以将字典值提高到 +1。

    for k, v in p.items():
        p[k] = v + 1
    

    【讨论】:

    • 一个重要的问题是用户是否想输入k的值。
    • 我得到这个输出:------------------------ ---------------------------------------- AttributeError Traceback(最近一次调用最后一次) in () 1 G = nx.karate_club_graph() ----> 2 p = community.best_partition(G, weight='weight') 3 print(p) AttributeError: module ' community' 没有属性 'best_partition'
    • @Rob 检查您是否安装了python-louvain,并且当前目录中没有任何名为community.py 的文件。
    • @edo 我在以下目录中找到了 community.py 文件:
    • @edo 我在以下目录中找到了 community.py 文件:site-packages\networkx\generators,并且我已经使用 pip 安装了 community 和 python-louvain。有什么想法会导致此错误吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-14
    • 2020-12-16
    • 2016-12-20
    • 1970-01-01
    • 2012-04-03
    • 1970-01-01
    • 2017-09-24
    相关资源
    最近更新 更多