MCPcopy
hub / github.com/shenweichen/GraphEmbedding / Node2Vec

Class Node2Vec

ge/models/node2vec.py:26–68  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

24
25
26class Node2Vec:
27
28 def __init__(self, graph, walk_length, num_walks, p=1.0, q=1.0, workers=1, use_rejection_sampling=False):
29
30 self.graph = graph
31 self._embeddings = {}
32 self.walker = RandomWalker(
33 graph, p=p, q=q, use_rejection_sampling=use_rejection_sampling)
34
35 print("Preprocess transition probs...")
36 self.walker.preprocess_transition_probs()
37
38 self.sentences = self.walker.simulate_walks(
39 num_walks=num_walks, walk_length=walk_length, workers=workers, verbose=1)
40
41 def train(self, embed_size=128, window_size=5, workers=3, iter=5, **kwargs):
42 kwargs["sentences"] = self.sentences
43 kwargs["min_count"] = kwargs.get("min_count", 0)
44 kwargs["vector_size"] = embed_size
45 kwargs["sg"] = 1
46 kwargs["hs"] = 0 # node2vec not use Hierarchical Softmax
47 kwargs["workers"] = workers
48 kwargs["window"] = window_size
49 kwargs["epochs"] = iter
50
51 print("Learning embedding vectors...")
52 model = Word2Vec(**kwargs)
53 print("Learning embedding vectors done!")
54
55 self.w2v_model = model
56
57 return model
58
59 def get_embeddings(self, ):
60 if self.w2v_model is None:
61 print("model not train")
62 return {}
63
64 self._embeddings = {}
65 for word in self.graph.nodes():
66 self._embeddings[word] = self.w2v_model.wv[word]
67
68 return self._embeddings

Callers 3

test_Node2VecFunction · 0.90
mainFunction · 0.90
mainFunction · 0.90

Calls

no outgoing calls

Tested by 1

test_Node2VecFunction · 0.72