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)
в моем фреймворке это исправлено. Надеюсь, это поможет другим в будущем!