Я надеюсь рассчитать взвешенные меры центральности. Чем больше вес, тем прочнее соединение.
G=nx.Graph()
G.add_edge('a','b',weight=0.1)
G.add_edge('b','c',weight=1.5)
G.add_edge('a','c',weight=1.0)
G.add_edge('c','d',weight=22)
bet1=nx.betweenness_centrality(G, weight='weight', endpoints=False)
bet2=nx.betweenness_centrality(G, weight=None, endpoints=False)
print(bet1,bet2)
clo1=nx.closeness_centrality(G, distance='weight')
clo2=nx.closeness_centrality(G)
print(clo1,clo2)
Вот мои проблемы: 1. Нет разницы между взвешенной центральностью посредственности и невзвешенной центральностью посредственности. 2. Расстояние должно быть равно 1 / вес. Я попробовал следующий код, но он не работает. Я не знаю, как это исправить, кроме как создать новую сеть, где вес = 1 / вес.
clo1=nx.closeness_centrality(G, distance=1/'weight')
@DyZ Спасибо! Как насчет проблемы, заключающейся в том, что центральность промежуточности дает одинаковые результаты, независимо от того, взвешена она или нет?
Не в моем случае: print(bet1,bet2) >>> {'a': 0.6666666666666666, 'b': 0.0, 'c': 0.6666666666666666, 'd': 0.0} {'a': 0.0, 'b': 0.0, 'c': 0.6666666666666666, 'd': 0.0}
.
Ах да, ты прав! Не могу поверить, что пропустил это. Спасибо @DyZ
Расстояние должно быть равным название атрибута края. Перед использованием этого параметра вычислите значения атрибута и дайте ему имя. Кроме того, я делать вижу разницу между центральностями:
print(clo1,clo2) >> {'a': 0.12448132780082986, 'b': 0.12345679012345678, 'c': 0.12448132780082986, 'd': 0.04405286343612335} {'a': 0.75, 'b': 0.75, 'c': 1.0, 'd': 0.6}
. Пожалуйста, проверьте свои данные.