Поддерживает ли node2vec отрицательные веса ребер?

Обеспечивает ли node2vec поддержку ребер с отрицательным весом? У меня есть список ребер с несколькими ребрами, которые имеют отрицательное значение, но я странно получаю ZeroDivisionError при запуске кода. Однако нулевых ребер нет, я проверял.

Обновлено: попросили поделиться кодом. Я не вносил изменений в исходное репо, поэтому вставляю сюда точные строки, выдающие ошибку.

unnormalized_probs = []
    for dst_nbr in sorted(G.neighbors(dst)):
        if dst_nbr == src:
            unnormalized_probs.append(G[dst][dst_nbr]['weight']/p)
        elif G.has_edge(dst_nbr, src):
            unnormalized_probs.append(G[dst][dst_nbr]['weight'])
        else:
            unnormalized_probs.append(G[dst][dst_nbr]['weight']/q)
    norm_const = sum(unnormalized_probs)
    normalized_probs =  [float(u_prob)/norm_const for u_prob in unnormalized_probs]

Получение ошибки ZeroDivisionError в последней строке. Мой список краев, который является входом для этого, написан следующим образом:

0 0 1
234 11 -2
12 0 -1

Узлы с нулевым значением не являются проблемой, их не было раньше, когда я запускал код с положительными значениями узлов.

Можете ли вы опубликовать свой код, который поможет нам отладить.

rdas 08.04.2019 06:00

Конечно, добавили.

Anjali Bhavan 08.04.2019 06:05
Почему в 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 может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
3
2
291
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я понял это. Значения веса (хранящиеся в ненормализованных вероятностях) добавляются, чтобы получить значение, называемое 'norm_const', которое затем делит ненормализованные вероятности. Таким образом, поскольку они добавляются, возникает возможность возникновения нуля, следовательно, ошибка деления на ноль.

Привет, я автор node2vec, нет поддержки отрицательных весов :)

bluesummers 22.04.2019 19:38

Да, я понял. Спасибо!

Anjali Bhavan 19.09.2019 13:21

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