Межцентричность измеряет долю кратчайших путей , которые проходят через узел. Поскольку значение кратчайшего пути немного отличается между направленными и неориентированными графами , вам следует сначала подумать о том, как вы хотите представить данные в виде графика.
Без дополнительного контекста для вашего конкретного случая использования более естественно представить график Twitter в виде направленного графика, где каждый пользователь представлен как узел, а ребра переходят от каждого пользователя ко всем пользователи, за которыми следует этот пользователь. Конечно, учитывая 2 узла u и v , можно иметь 2 направленных ребра ( u , v ) и () v , u ), если оба пользователя следуют друг за другом. Надеюсь, что это объясняет значение края.
При ссылке на термин "путь" в контексте вычисления центральности между значениями, это означает один кратчайший путь между двумя узлами в этом ориентированном графе.
Пример:
Допустим, у нас 4 пользователя Twitter, идентифицированных как 1, 2, 3 и 4.
Скажем 1 следует 2 и 4, а 2 следует 3:
Тогда, если мы используем networkx , мы можем вычислить центральность промежуточности следующим образом:
import networkx as nx
DG = nx.DiGraph()
DG.add_edges_from([(1, 2), (2, 3), (1, 4)])
print(nx.betweenness_centrality(DG))
И получите:
{1: 0.0, 2: 0.16666666666666666, 3: 0.0, 4: 0.0}
То есть все узлы, кроме узла 2, имеют нулевую центральность, а узел 2 имеет значение 0,16667.
Это значение мы получаем, потому что у нас ровно один кратчайший путь, который проходит через узел 2 (от 1 до 3), N = 4 и (N-1)(N-2) = 6
.
Чтобы лучше понять, как работает nx.betweenness_centrality
, посмотрите здесь в документации.