chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
import unittest
|
||||
|
||||
import easygraph as eg
|
||||
import numpy as np
|
||||
|
||||
|
||||
class Test_Deepwalk(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.ds = eg.datasets.get_graph_karateclub()
|
||||
self.edges = [(1, 4), (2, 4)]
|
||||
self.test_graphs = []
|
||||
self.test_graphs.append(eg.classes.DiGraph(self.edges))
|
||||
self.shs = eg.common_greedy(self.ds, int(len(self.ds.nodes) / 3))
|
||||
|
||||
self.graph = eg.Graph()
|
||||
self.graph.add_edges_from([(0, 1), (1, 2), (2, 3), (3, 4), (4, 0)])
|
||||
|
||||
self.empty_graph = eg.Graph()
|
||||
|
||||
self.single_node_graph = eg.Graph()
|
||||
self.single_node_graph.add_node(0)
|
||||
|
||||
def test_deepwalk(self):
|
||||
for i in self.test_graphs:
|
||||
print(eg.deepwalk(i))
|
||||
|
||||
def test_deepwalk_output_structure(self):
|
||||
emb, sim = eg.deepwalk(
|
||||
self.graph,
|
||||
dimensions=16,
|
||||
walk_length=5,
|
||||
num_walks=3,
|
||||
window=2,
|
||||
min_count=1,
|
||||
batch_words=4,
|
||||
epochs=5,
|
||||
)
|
||||
self.assertIsInstance(emb, dict)
|
||||
self.assertIsInstance(sim, dict)
|
||||
for k, v in emb.items():
|
||||
self.assertEqual(len(v), 16)
|
||||
self.assertTrue(isinstance(v, np.ndarray))
|
||||
|
||||
def test_deepwalk_similarity_keys_match_nodes(self):
|
||||
emb, sim = eg.deepwalk(
|
||||
self.graph,
|
||||
dimensions=8,
|
||||
walk_length=3,
|
||||
num_walks=2,
|
||||
window=2,
|
||||
min_count=1,
|
||||
batch_words=2,
|
||||
epochs=3,
|
||||
)
|
||||
self.assertEqual(set(emb.keys()), set(sim.keys()))
|
||||
self.assertEqual(set(emb.keys()), set(self.graph.nodes))
|
||||
|
||||
def test_deepwalk_on_single_node(self):
|
||||
emb, sim = eg.deepwalk(
|
||||
self.single_node_graph,
|
||||
dimensions=4,
|
||||
walk_length=2,
|
||||
num_walks=1,
|
||||
window=1,
|
||||
min_count=1,
|
||||
batch_words=2,
|
||||
epochs=2,
|
||||
)
|
||||
self.assertEqual(len(emb), 1)
|
||||
self.assertEqual(list(emb.keys()), [0])
|
||||
self.assertEqual(len(emb[0]), 4)
|
||||
|
||||
def test_deepwalk_on_empty_graph(self):
|
||||
with self.assertRaises(RuntimeError):
|
||||
eg.deepwalk(
|
||||
self.empty_graph,
|
||||
dimensions=4,
|
||||
walk_length=2,
|
||||
num_walks=1,
|
||||
window=1,
|
||||
min_count=1,
|
||||
batch_words=2,
|
||||
epochs=2,
|
||||
)
|
||||
|
||||
def test_deepwalk_walk_length_zero(self):
|
||||
emb, sim = eg.deepwalk(
|
||||
self.graph,
|
||||
dimensions=4,
|
||||
walk_length=0,
|
||||
num_walks=2,
|
||||
window=1,
|
||||
min_count=1,
|
||||
batch_words=2,
|
||||
epochs=2,
|
||||
)
|
||||
self.assertEqual(len(emb), len(self.graph.nodes))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user