Я очень, очень посредственный программист, но я все еще стремлюсь использовать библиотеку Python igraph , чтобы определить влияние центральности пользователя на данном форуме, чтобы предсказать его последующий вклад в этот форум.
Я связался с кем-то, кто использовал библиотеку NetworkX для чего-то похожего, но, учитывая текущий размер форума, вычислить точные индексы центральности практически невозможно - это просто слишкоммного времени.
Это был его код:
import networkx as netx
import sys, csv
if len(sys.argv) is not 2:
print 'Please specify an input graph.'
sys.exit(1)
ingraph = sys.argv[1]
graph = netx.readwrite.gpickle.read_gpickle(ingraph)
num_nodes = len(graph.nodes())
print '%s nodes found in input graph.' % num_nodes
print 'Recording data in centrality.csv'
# Calculate all of the betweenness measures
betweenness = netx.algorithms.centrality.betweenness_centrality(graph)
print 'Betweenness computations complete.'
closeness = netx.algorithms.centrality.closeness_centrality(graph)
print 'Closeness computations complete.'
outcsv = csv.writer(open('centrality.csv', 'wb'))
for node in graph.nodes():
outcsv.writerow([node, betweenness[node], closeness[node]])
print 'Complete!'
Я пытался написать что-то похожее с библиотекой igraph (которая позволяет делать быстрые оценки, а не точные вычисления), но я не могукажется, что данные записываются в файл CSV.
Мой код:
import igraph
import sys, csv
from igraph import *
graph = Graph.Read_Pajek("C:\karate.net")
print igraph.summary(graph)
estimate = graph.betweenness(vertices=None, directed=True, cutoff=2)
print 'Betweenness computation complete.'
outcsv = csv.writer(open('estimate.csv', 'wb'))
for v in graph.vs():
outcsv.writerow([v, estimate[vs]])
print 'Complete!'
Я не могу найти способ вызова отдельных вершин (или узлов, в жаргоне NetworkX) в документации igraph,так вот где я получаю сообщения об ошибках).Возможно, я забыл еще кое-что;Я, наверное, слишком плохой программист, чтобы замечать: P
Что я делаю не так?