Stellargraph Node2Vec встраивание UFuncTypeError

Я пытаюсь сделать прогноз линии связи с stellargraph после справки о руководстве .
Когда я дойду до этой части:

      def node2vec_embedding(graph, name):
    rw = BiasedRandomWalk(graph)
    walks = rw.run(graph.nodes(), n=num_walks, length=walk_length, p=p, q=q)
    print(f"Number of random walks for '{name}': {len(walks)}")

    model = Word2Vec(
        walks,
        size=dimensions,
        window=window_size,
        min_count=0,
        sg=1,
        workers=workers,
        iter=num_iter,
    )

    def get_embedding(u):
        return model.wv[u]

    return get_embedding

embedding_train = node2vec_embedding(graph_train, "Train Graph")

я получаю UFuncTypeError:

UFuncTypeError: ufunc 'add' did not contain a loop with signature matching types (dtype('<U21'), dtype('<U21')) -> dtype('<U21')

Понятия не имею, чем это было вызвано ...

Я подумал о том, чтобы сделать что-то вроде этого:

      from node2vec import Node2Vec
graph_train = StellarGraph.to_networkx(graph_train)
node2vec = Node2Vec(graph_train)
model = node2vec.fit()

Но я боюсь, что потеряю черты ребер, если конвертирую свой график в networkX...

Любая помощь будет принята с благодарностью :)

РЕДАКТИРОВАТЬ: Я попробовал учебный метод на другом наборе данных, более простом, без краевых функций, и получил ту же ошибку.

1 ответ

Решение

Наконец-то я нашел решение. Из документации было довольно непонятно (по крайней мере, для меня), но метки ваших узлов должны быть строковыми, а не целыми. Так что простой .astype(str)в моем фреймворке это исправлено. Надеюсь, это поможет другим в будущем!

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