def get_embeddings(self, inst, th=1): G = nx.parse_edgelist(self._compose_edge_list(inst.dist_mat, th), create_using=nx.DiGraph(), nodetype=None, data=[('weight', float)]) if self._embedding == 'deepwalk': model = DeepWalk(G, walk_length=10, num_walks=80, workers=1) model.train(window_size=5, iter=3) elif self._embedding == 'node2vec': model = Node2Vec(G, walk_length=10, num_walks=80, p=0.25, q=4, workers=1) # init model model.train(window_size=5, iter=3) # train model elif self._embedding == 'line': model = LINE(G, embedding_size=128, order='second') # init model,order can be ['first','second','all'] model.train(batch_size=1024, epochs=50, verbose=2) # train model elif self._embedding == 'sdne': model = SDNE(G, hidden_size=[256, 128]) # init model model.train(batch_size=3000, epochs=40, verbose=2) # train model elif self._embedding == 'struc2vec': model = Struc2Vec(G, 10, 80, workers=4, verbose=40, ) # init model model.train(window_size=5, iter=3) # train model else: return self._normalise(inst) ebds = model.get_embeddings() coords = [] for i in range(inst.n): coords.append(ebds[str(i)]) return np.array(coords)
color_idx = {} for i in range(len(X)): color_idx.setdefault(Y[i][0], []) color_idx[Y[i][0]].append(i) for c, idx in color_idx.items(): plt.scatter(node_pos[idx, 0], node_pos[idx, 1], label=c) # c=node_colors) plt.legend() plt.show() if __name__ == "__main__": G = nx.read_edgelist('../data/flight/brazil-airports.edgelist', create_using=nx.DiGraph(), nodetype=None, data=[('weight', int)]) # nx.draw(G, node_size=10, font_size=10, font_color='blue', font_weight='bold') # plt.show() model = Struc2Vec( G, 10, 80, workers=4, verbose=40, ) model.train(embed_size=64) embeddings = model.get_embeddings() evaluate_embeddings(embeddings) plot_embeddings(embeddings)
f'../save/graph_embedding_{name}_{graph_name}_svd{svd_dim}.csv') if __name__ == "__main__": G = nx.read_edgelist(graph_path, create_using=nx.DiGraph(), nodetype=None, data=[('weight', int)]) model = DeepWalk(G, walk_length=dw_walk_length, num_walks=dw_num_walks, workers=NUM_WORKER) # init model model.train(window_size=dw_window_size, iter=dw_iter) # train model embeddings = model.get_embeddings() # get embedding vectors save_embedding(embeddings, name='dw') save_embedding_svd(embeddings, name='dw', svd_dim=svd_dim) model = model = Struc2Vec(G, walk_length=s2v_walk_length, num_walks=s2v_num_walks, workers=NUM_WORKER, verbose=40) # init model model.train(window_size=s2v_window_size, iter=s2v_iter) # train model embeddings = model.get_embeddings() # get embedding vectors save_embedding(embeddings, name='s2v') save_embedding_svd(embeddings, name='s2v', svd_dim=svd_dim)