• COMMUNITY DETECTION_python-louvain


    Python-louvain Package

    pip install python-louvain

    import community
    #first compute the best partition partition
    = community.best_partition(G)

    #Drawing partition

    Method 1: 

    #drawing
    size = float(len(set(partition.values())))
    pos = nx.spring_layout(G)
    count = 0.
    for com in set(partition.values()) :
        count = count + 1.
        list_nodes = [nodes for nodes in partition.keys()
                                    if partition[nodes] == com]
        nx.draw_networkx_nodes(G, pos, list_nodes, node_size = 20,
                                    node_color = str(count / size))
    
    nx.draw_networkx_edges(G, pos, alpha=0.5)
    plt.show()

    Method 2: 

    pos = nx.spring_layout(G)
    values = [partition.get(node) for node in G.nodes()]
    nx.draw_networkx(G, pos, cmap=plt.get_cmap('magma'), node_color=values, node_size=50, with_labels=False)

    Supplementary knowledge:

    1. what is the partition of graphs.

    partition: dict; {key (nodes_id): values(community_id)}

    2.  function : community.best_partition(G)

    Returns
        -------
        partition : dictionnary
           The partition, with communities numbered from 0 to number of communities
    def best_partition(graph,
                       partition=None,
                       weight='weight',
                       resolution=1.,
                       randomize=None,
                       random_state=None):
        """Compute the partition of the graph nodes which maximises the modularity
        (or try..) using the Louvain heuristices
    
        This is the partition of highest modularity, i.e. the highest partition
        of the dendrogram generated by the Louvain algorithm.
    
        Parameters
        ----------
        graph : networkx.Graph
           the networkx graph which is decomposed
        partition : dict, optional
           the algorithm will start using this partition of the nodes.
           It's a dictionary where keys are their nodes and values the communities
        weight : str, optional
            the key in graph to use as weight. Default to 'weight'
        resolution :  double, optional
            Will change the size of the communities, default to 1.
            represents the time described in
            "Laplacian Dynamics and Multiscale Modular Structure in Networks",
            R. Lambiotte, J.-C. Delvenne, M. Barahona
        randomize : boolean, optional
            Will randomize the node evaluation order and the community evaluation
            order to get different partitions at each call
        random_state : int, RandomState instance or None, optional (default=None)
            If int, random_state is the seed used by the random number generator;
            If RandomState instance, random_state is the random number generator;
            If None, the random number generator is the RandomState instance used
            by `np.random`.
    
        Returns
        -------
        partition : dictionnary
           The partition, with communities numbered from 0 to number of communities
  • 相关阅读:
    Java8_Stream_了解
    Java8_方法引用和构造器引用
    Java8_函数式接口
    Java8_表达式语法
    Spring注解
    Spring_IOC笔记
    一台电脑访问另一台电脑上的VMware
    Vmware 新装centos7 ping 百度 出现 unknow host
    Windows下的免安装版MySQL配置
    Springboot2 注解@Import的使用
  • 原文地址:https://www.cnblogs.com/dulun/p/12219254.html
Copyright © 2020-2023  润新知