Хобрук: Ваш путь к мастерству в программировании

Создание вложений с помощью node2vec

Я пытаюсь создать вложения для списка краев, который у меня есть, используя networkx и node2vec. Мой список ребер выглядит следующим образом:

1 2
1 6
...
450 230
...
601 602 

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

nx_G = nx.read_edgelist(args.input, delimiter=' ', create_using=nx.DiGraph())
G = node2vec.Graph(nx_G, args.directed, args.p, args.q, args.seed)
G.preprocess_transition_probs()
walks = G.simulate_walks(args.num_walks, args.walk_length)
walks = [str(walk) for walk in walks]
model = Word2Vec(walks, size=args.dimensions, window=args.window_size, min_count=0, sg=1, workers=args.workers, iter=args.iter)
model.wv.save_word2vec_format(args.output)

где args.input предоставляет текстовый файл. Функции read_edgelist правильно считывают узлы, и создаются вложения. Однако в файле встраивания узлы не нумеруются от 1 до 606 (это значения узлов в моем списке ребер): вместо этого их 14, с цифрами от 0 до 9 и некоторыми специальными символами в качестве значений узлов. вместо этого для которых были созданы вложения. То есть вместо того, чтобы читать целое число из более чем одной цифры (скажем, 29) как один узел, он просто читает 2 и вычисляет для него вложения. Я не понимаю, почему это происходит, и был бы признателен за некоторое понимание.


Ответы:


1

Я решил эту проблему, закомментировав следующую строку кода в файле main.py репозитория node2vec:

walks = [map(str, walk) for walk in walks]
01.04.2019

2

Я предлагаю вам библиотеку stellargraph, которая предоставляет отличные графовые алгоритмы для машинного обучения. Например, базовый Node2Vec...

from stellargraph.data import BiasedRandomWalk
from stellargraph import StellarGraph
from gensim.models import Word2Vec

rw = BiasedRandomWalk(StellarGraph(g_nx))

walks = rw.run(
      nodes=list(g_nx.nodes()), # root nodes
      length=100,  # maximum length of a random walk
      n=10,        # number of random walks per root node 
      p=0.5,       # Defines (unormalised) probability, 1/p, of returning to source node
      q=2.0        # Defines (unormalised) probability, 1/q, for moving away from source node
)

model = Word2Vec(walks, size=128, window=5, min_count=0, sg=1, workers=2, iter=1)

model.wv['29']
02.09.2019
Новые материалы

Аргументы прогрессивного улучшения почти всегда упускают суть
В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

Введение в Джанго Фреймворк
Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..

Настольный ПК как «одно кольцо, чтобы править всеми» домашних компьютеров
Вид после 9 месяцев использования С настольных компьютеров все началось, но в какой-то момент они стали «серверами», и мы все перешли на ноутбуки. В прошлом году я столкнулся с идеей настольных..

Расширенные методы безопасности для VueJS: реализация аутентификации без пароля
Руководство, которое поможет вам создавать безопасные приложения в долгосрочной перспективе Безопасность приложений часто упускается из виду в процессе разработки, потому что основная..

стройный-i18следующий
Представляем стройную оболочку для i18next. Эта библиотека, основанная на i18next, заключает экземпляр i18next в хранилище svelte и отслеживает события i18next, такие как languageChanged,..

Обзор 20 основных и современных методов работы с массивами в JavaScript
Вы знаете их всех? В этом коротком посте я покажу сводку методов, доступных в JavaScript для работы с массивами. Я надеюсь, что вы найдете это полезным! В конце поста вы найдете ссылку на..

Да, но я чувствую необходимость указать, что это или не единственные два.
Да, но я чувствую необходимость указать, что это или не единственные два. Обучение с подкреплением (в качестве примера) также является важным.