繁体   English   中英

Node2vec和networkx

[英]Node2vec and networkx

我试图在我创建的有向networkx网络上运行node2vec。 网络看起来像这样:

OutEdgeDataView([(7, 1, {'senderId': 7, 'weight': 273}), (7, 8, {'senderId': 7, 'weight': 319}), (7, 9, {'senderId': 7, 'weight': 137})....

每个节点都有一个整数ID,权重将一个节点链接到另一个节点。

我正在尝试将此网络上的node2vec模块用作:

from node2vec import Node2Vec
node2vec = Node2Vec(mail_n_basic, dimensions=64, walk_length=30, num_walks=200, workers=4) 

并返回此错误,非常感谢您对错误的任何帮助:

---------------------------------------------------------------------------
_RemoteTraceback                          Traceback (most recent call last)
_RemoteTraceback: 
"""
Traceback (most recent call last):
  File "C:\Users\Andrew\Anaconda3\lib\site-packages\joblib\externals\loky\process_executor.py", line 398, in _process_worker
    r = call_item.fn(*call_item.args, **call_item.kwargs)
  File "C:\Users\Andrew\Anaconda3\lib\site-packages\joblib\_parallel_backends.py", line 561, in __call__
    return self.func(*args, **kwargs)
  File "C:\Users\Andrew\Anaconda3\lib\site-packages\joblib\parallel.py", line 224, in __call__
    for func, args, kwargs in self.items]
  File "C:\Users\Andrew\Anaconda3\lib\site-packages\joblib\parallel.py", line 224, in <listcomp>
    for func, args, kwargs in self.items]
  File "C:\Users\Andrew\Anaconda3\lib\site-packages\node2vec\node2vec.py", line 51, in parallel_generate_walks
    walk_to = np.random.choice(walk_options, size=1)[0]
  File "mtrand.pyx", line 1126, in mtrand.RandomState.choice
ValueError: a must be non-empty
"""

The above exception was the direct cause of the following exception:

ValueError                                Traceback (most recent call last)
<ipython-input-58-3ac160061528> in <module>()
      1 
----> 2 node2vec = Node2Vec(mail_n_basic, dimensions=64, walk_length=30, num_walks=200, workers=4)

~\Anaconda3\lib\site-packages\node2vec\node2vec.py in __init__(self, graph, dimensions, walk_length, num_walks, p, q, weight_key, workers, sampling_strategy)
    111 
    112         self.d_graph = self._precompute_probabilities()
--> 113         self.walks = self._generate_walks()
    114 
    115     def _precompute_probabilities(self):

~\Anaconda3\lib\site-packages\node2vec\node2vec.py in _generate_walks(self)
    178                                                                                       self.NEIGHBORS_KEY,
    179                                                                                       self.PROBABILITIES_KEY) for idx, num_walks
--> 180                                                      in enumerate(num_walks_lists, 1))
    181 
    182         walks = flatten(walk_results)

~\Anaconda3\lib\site-packages\joblib\parallel.py in __call__(self, iterable)
    960 
    961             with self._backend.retrieval_context():
--> 962                 self.retrieve()
    963             # Make sure that we get a last message telling us we are done
    964             elapsed_time = time.time() - self._start_time

~\Anaconda3\lib\site-packages\joblib\parallel.py in retrieve(self)
    863             try:
    864                 if getattr(self._backend, 'supports_timeout', False):
--> 865                     self._output.extend(job.get(timeout=self.timeout))
    866                 else:
    867                     self._output.extend(job.get())

~\Anaconda3\lib\site-packages\joblib\_parallel_backends.py in wrap_future_result(future, timeout)
    513         AsyncResults.get from multiprocessing."""
    514         try:
--> 515             return future.result(timeout=timeout)
    516         except LokyTimeoutError:
    517             raise TimeoutError()

~\Anaconda3\lib\site-packages\joblib\externals\loky\_base.py in result(self, timeout)
    429                 raise CancelledError()
    430             elif self._state == FINISHED:
--> 431                 return self.__get_result()
    432             else:
    433                 raise TimeoutError()

~\Anaconda3\lib\site-packages\joblib\externals\loky\_base.py in __get_result(self)
    380     def __get_result(self):
    381         if self._exception:
--> 382             raise self._exception
    383         else:
    384             return self._result

ValueError: a must be non-empty

我是这个图书馆的作者。

如果您使用的是Windows,则由于joblib和Windows问题,并行执行将不起作用。

使用更新的版本pip install -U node2vec运行相同的代码,并在构造Node2Vec类时传递workers=1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM