【问题标题】:Getting node membership in each cluster获取每个集群中的节点成员资格
【发布时间】:2020-08-19 11:31:18
【问题描述】:

我正在使用马尔可夫聚类来聚类 878 个节点的图。实现基于这里提到的工作https://github.com/guyallard/markov_clustering

adj_matrix = nx.to_numpy_matrix(G)
res = mcl.run_mcl(adj_matrix)
clusters = mcl.get_clusters(res)

集群:

[(0,73, 88,173,223,235,390,405,409,435,442,456,481,501,573,615), 
(5, 38, 193, 403, 657, 679, 760, 791, 835, 854),
...
...
(7, 201, 640)]

看起来程序给了我节点顺序而不是我用来构建图形的原始标签,就像780873982928735728293482978 等。 有没有办法将上述结果映射到原始节点标签?

预期的结果会是这样的

[(780873982, 928735728, 293482978), (293482932, 883482978), ...] 

提前谢谢你!

【问题讨论】:

    标签: python cluster-analysis networkx markov


    【解决方案1】:

    你可以使用字典:

    # dummy nodes and graph
    nodes = [np.random.randint(0,10031) for a in range(100)]
    G = nx.Graph()
    G.add_nodes_from(nodes)
    
    # dummy clusters
    clusters = [list(np.random.choice(range(len(G.nodes)), np.random.randint(1,5))) for a in range(8)]
    
    
    # make mapping dictionary:
    mapping = {a:b for a, b in zip(range(len(G.nodes)), G.nodes())}
    
    # apply mapping_dictionary:
    
    clusters_with_node_names = []
    
    for c in clusters:
        clusters_with_node_names.append([mapping[a] for a in c])
    

    【讨论】:

    • 这很好,很优雅。谢谢
    猜你喜欢
    • 1970-01-01
    • 2016-01-24
    • 1970-01-01
    • 1970-01-01
    • 2011-09-10
    • 2018-02-13
    • 2013-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多