Взвешенные меры центральности в python networkx

Я надеюсь рассчитать взвешенные меры центральности. Чем больше вес, тем прочнее соединение.

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')

Расстояние должно быть равным название атрибута края. Перед использованием этого параметра вычислите значения атрибута и дайте ему имя. Кроме того, я делать вижу разницу между центральностями: 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}. Пожалуйста, проверьте свои данные.

DYZ 25.03.2018 09:10

@DyZ Спасибо! Как насчет проблемы, заключающейся в том, что центральность промежуточности дает одинаковые результаты, независимо от того, взвешена она или нет?

Claire Cui 25.03.2018 09:14

Не в моем случае: 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 25.03.2018 09:14

Ах да, ты прав! Не могу поверить, что пропустил это. Спасибо @DyZ

Claire Cui 25.03.2018 09:22
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
4
694
0

Другие вопросы по теме