平均中心网络x

时间:2017-11-11 02:45:09

标签: python networkx

我有一个有节点和边缘(加权)的有向图G和Im计算每个节点的in_degree_centrality(G)和out_degree_centrality(G),当我单独平均它们时我不知道为什么但是对于所有的图形平均值indegree与avg outdegree相同。我认为add_edge有问题。在我的图中,相同的2个节点之间可能存在多个边缘,其权重是csv边缘文件中该边缘的边界。

for path in files:

dirname, filename = os.path.split(path)   
with open ('C:/Users/Sebastian/Desktop/nodos/%s' %filename) as csvfile,open ('C:/Users/Sebastian/Desktop/aristasPeso/%s' %filename) as csvfile2,open('C:/Users/Sebastian/Desktop/resultados/%s' %filename,'w') as output,open('C:/Users/Sebastian/Desktop/vectores/aristas.csv','a') as output3:       
    csv_reader = csv.reader(csvfile, delimiter=',')
    cont=0
    G=nx.DiGraph()
    for row in csv_reader:
        new_node = row[1]                
        new_attributes = row[:1]
        G.add_node(new_node, my_attributes=new_attributes)     
    csv_reader = csv.reader(csvfile2, delimiter=',')
    for row in csv_reader:
        source=row[0]
        target=row[1]
        peso=row[2]           
        #if int(peso)>1:
        G.add_edge(source,target,weight=int(peso))
        cont=cont+1


    #centrality
    cercania=nx.closeness_centrality(G,normalized=True)
    bet_cen = nx.betweenness_centrality(G,normalized=True)
    eig_cen = nx.eigenvector_centrality(G,max_iter=100)
    centralidad_grado=nx.degree_centrality(G)
    indegree = nx.in_degree_centrality(G)
    out = nx.out_degree_centrality(G)
    pr = nx.pagerank(G,alpha=0.85)


    #calculo promedio de metricas en G
    avg_cer=round((sum(cercania.values())/len(cercania)),4)
    avg_bet=round((sum(bet_cen.values())/len(bet_cen)),4)
    avg_eig=round((sum(eig_cen.values())/len(eig_cen)),4)
    avg_cent=round((sum(centralidad_grado.values())/len(centralidad_grado)),4)
    avg_pr=round((sum(pr.values())/len(pr)),4)
    avg_in=round((sum(indegree.values())/len(indegree)),4)
    avg_out=round((sum(out.values())/len(out)),4)

    #convert to undirected
    G_ud = G.to_undirected()
    cluster=nx.average_clustering(G_ud)
    cluster_redondeado=round(cluster,4)


    #resultados metricas de todos los autores en 1 solo archivo csv
    #busco id de autores
    search(autores,filename)
    id=search(autores,filename)
    output3.write(str(avg_cer)+';'+str(avg_bet)+';'+str(avg_eig)+';'+str(cluster_redondeado)+';'+str(avg_cent)+';'+str(avg_pr)+';'+str(avg_in)+';'+str(avg_out)+';'+str(id)+'\n')

前4个图表的输出

                                               indeg    outdeg  
0.5253  0.0327  0.1044  0.7251  0.5302  0.0312  0.2651  0.2651  1
0.5342  0.0304  0.102   0.7745  0.536   0.0303  0.268   0.268   1
0.5134  0.0378  0.12    0.6598  0.4778  0.0345  0.2389  0.2389  1
0.5657  0.0302  0.1128  0.6739  0.6527  0.0345  0.3264  0.3264  1

我的节点格式(word,postag)csv文件:

What, WP
makes, VBZ
them, PRP
do, VB
it, PRP
Abject, NNP
need, NN

边缘格式(源,目标,权重)csv文件:

 WP, VBZ,2
 VBZ, PRP,2
 PRP, VB,3
 VB, PRP,3
 PRP, NNP,1
 NNP, NN,8

但如果我打印出indegree和outdegree值,它们就不相等(第一张图)

{' WP': 0.1935483870967742, ' VBZ': 0.29032258064516125, ' PRP': 
 0.45161290322580644, ' VB': 0.22580645161290322, ' NNP': 
 0.45161290322580644, ' NN': 0.5161290322580645, ' CC': 0.1935483870967742, 
' IN': 0.6129032258064516, ' DT': 0.6129032258064516, ' JJ': 
 0.5806451612903225, ' TO': 0.45161290322580644, ' RB': 0.5806451612903225, 
' WRB': 0.12903225806451613, ' NNS': 0.5483870967741935, ' VBN': 
0.3548387096774194, ' WDT': 0.1935483870967742, ' VBP': 0.16129032258064516, 
' PRP$': 0.3225806451612903, ' MD': 0.22580645161290322, ' EX': 
0.06451612903225806, ' CD': 0.25806451612903225, ' POS': 0.0967741935483871, 
' WP$': 0.06451612903225806, ' VBG': 0.3225806451612903, ' VBD': 
 0.29032258064516125, ' RBR': 0.0967741935483871, '000': 
0.03225806451612903, ' RBS': 0.03225806451612903, ' RP': 
0.03225806451612903, ' FW': 0.03225806451612903, ' JJS': 
0.03225806451612903, ' JJR': 0.03225806451612903}

{' WP': 0.22580645161290322, ' VBZ': 0.29032258064516125, ' PRP': 
0.4193548387096774, ' VB': 0.3870967741935484, ' NNP': 0.7096774193548387, ' 
NN': 0.7741935483870968, ' CC': 0.3870967741935484, ' IN': 
0.5161290322580645, ' DT': 0.3225806451612903, ' JJ': 0.4838709677419355, ' 
TO': 0.1935483870967742, ' RB': 0.4838709677419355, ' WRB': 
0.0967741935483871, ' NNS': 0.5806451612903225, ' VBN': 0.3225806451612903, 
' WDT': 0.12903225806451613, ' VBP': 0.25806451612903225, ' PRP$': 
0.12903225806451613, ' MD': 0.12903225806451613, ' EX': 0.06451612903225806, 
' CD': 0.25806451612903225, ' POS': 0.1935483870967742, ' WP$': 
0.06451612903225806, ' VBG': 0.3870967741935484, ' VBD': 0.3548387096774194, 
' RBR': 0.0967741935483871, '000': 0.06451612903225806, ' RBS': 
0.03225806451612903, ' RP': 0.03225806451612903, ' FW': 0.03225806451612903, 
' JJS': 0.03225806451612903, ' JJR': 0.03225806451612903}

0 个答案:

没有答案