我有一个有节点和边缘(加权)的有向图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}