python实现复杂网络K-Shell算法

说明:

下述代码主函数中生成graph的原始文件Untitled.csv已经丢失,可以根据自己的文件数据类型编写代码生成graph,然后再进行后续的计算即可。

import networkx as nx
import pandas as pd

def k_shell(graph):
    importance_dict={}
    level=1
    while len(graph.degree):
        importance_dict[level]=[]
        while True:
            level_node_list=[]
            for item in graph.degree:
                if item[1]<=level:
                    level_node_list.append(item[0])
            graph.remove_nodes_from(level_node_list)
            importance_dict[level].extend(level_node_list)
            if not len(graph.degree):
                return importance_dict
            if min(graph.degree,key=lambda x:x[1])[1]>level:
                break
        level=min(graph.degree,key=lambda x:x[1])[1]
    return importance_dict

if __name__ == '__main__':
    data=pd.read_csv('Untitled.csv',header=0)
    #构建图;可以根据自己的文件修改下面的代码
    graph=nx.Graph()
    data_len=len(data)
    for i in range(data_len):
        graph.add_edge(data.ix[i]['Source'],data.ix[i]['Target'])
    #计算度中心性
    print(nx.degree_centrality(graph))
    result=k_shell(graph)
    print(result)

  • 3
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值