统计网络常用指标

统计网络常用指标,第1张

统计网络常用指标
import networkx as nx
import igraph as ig
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
import community

#平均聚类系数
def juleimain(matrix):
    def julei(node,matrix):
        linjiedianlist=[]
        jiedianshu=0
        bianshu=0
        for j in range(matrix.shape[0]):
            if matrix[node,j]>0:
                jiedianshu=jiedianshu+1
                linjiedianlist.append(j)
        for i in linjiedianlist:
            for j in linjiedianlist:
                if matrix[i,j]>0:
                    bianshu=bianshu+1
        try:
            juleixishu=2*bianshu/jiedianshu/(jiedianshu-1)
        except:
            juleixishu=0
        return juleixishu

    juleilist = []
    for i in range(matrix.shape[0]):
        julei2 = julei(i, matrix)
        juleilist.append(julei2)
    pingjunjulei = np.mean(juleilist)
    return pingjunjulei


#网络指标计算
# G为networkx生成的图。
def maingraph(G):
    d = nx.to_pandas_edgelist(G).values
    g = ig.Graph(d)
    jiedianshu= g.vcount()#节点数
    #print('节点数:',jiedianshu)
    bianshu= g.ecount()#边数
    #print('边数:',bianshu)
    #平均度计算
    jiediandu=pd.Dataframe(columns=['节点名称','度','入度','出度'])
    du=0
    for v in g.vs:
        deg = g.degree(v)#度
        degin = g.indegree(v)#入度
        degout = g.outdegree(v)#出度
        jiedian2 = str(v)
        n2 = jiedian2.index("{")
        n3 = jiedian2.index("}")
        jiedian3 = jiedian2[n2 + 1:n3]
        jiedian4 = jiedian3.replace("'name':", "")
        jiedian5 = jiedian4.replace(" '", "")
        jiedian6 = jiedian5.replace("'", "")
        jiedian = str(jiedian6)#节点名称
        du=du+deg
    #平均度
    try:
        maindeg=du/jiedianshu/2
    except:
        maindeg=0
    #print('平均度:', maindeg)

    #平均路径长度
    averagepath=g.average_path_length()
    #print('平均路径长度',averagepath)
    #网络密度
    midu=g.density()
    #print('网络密度',midu)
    #网络直径
    zhijing=g.diameter()
    #平均聚类系数
    matrix=g.get_adjacency()
    #print(matrix)
    #matrix=np.array(matrix)
    pingjunjulei=juleimain(matrix)
    # 同配系数
    try:
        tongxi= nx.degree_assortativity_coefficient(G)
    except:
        tongxi ='2'
    # 计算模块度
    part = community.best_partition(G)
    mod = community.modularity(part, G)
    return jiedianshu,bianshu,maindeg,averagepath,midu,zhijing,pingjunjulei,tongxi,mod

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5721397.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存