def test_louvain_hierarchy(self):
     louvain = LouvainNE()
     for adjacency in [
             test_graph(),
             test_graph_disconnect(),
             test_digraph()
     ]:
         self.assertTupleEqual(
             louvain.fit_transform(adjacency).shape, (10, 2))
     louvain.fit(test_bigraph())
     self.assertTupleEqual(louvain.embedding_.shape, (6, 2))
     louvain.fit(test_graph(), force_bipartite=True)
     self.assertTupleEqual(louvain.embedding_.shape, (10, 2))
    def test_options(self):
        louvain = LouvainHierarchy(resolution=2)
        adjacency = test_graph()
        dendrogram = louvain.fit_transform(adjacency)
        n = adjacency.shape[0]
        self.assertEqual(dendrogram.shape, (n - 1, 4))

        louvain = LouvainHierarchy(depth=1)
        adjacency = test_graph()
        dendrogram = louvain.fit_transform(adjacency)
        n = adjacency.shape[0]
        self.assertEqual(dendrogram.shape, (n - 1, 4))
        self.assertEqual(dendrogram[:, 2].max(), 1)
Exemple #3
0
    def test_cosine(self):
        biadjacency = test_bigraph()
        method = GSVD(3, solver='lanczos')

        embedding = method.fit_transform(biadjacency)
        embedding_col = method.embedding_col_
        fit, div, modularity = cosine_modularity(biadjacency,
                                                 embedding,
                                                 embedding_col,
                                                 return_all=True)
        modularity = cosine_modularity(biadjacency,
                                       embedding,
                                       embedding_col,
                                       return_all=False)
        self.assertAlmostEqual(modularity, fit - div)

        adjacency = test_graph()
        embedding = method.fit_transform(adjacency)
        fit, div, modularity = cosine_modularity(adjacency,
                                                 embedding,
                                                 return_all=True)
        self.assertAlmostEqual(modularity, fit - div)

        with self.assertRaises(ValueError):
            cosine_modularity(biadjacency, embedding)

        louvain = LouvainEmbedding()
        embedding = louvain.fit_transform(adjacency)
        fit, div, modularity = cosine_modularity(adjacency,
                                                 embedding,
                                                 return_all=True)
        self.assertAlmostEqual(modularity, fit - div)
 def setUp(self):
     """Basic graph for tests"""
     self.adjacency = test_graph()
     n = self.adjacency.shape[0]
     labels = np.zeros(n)
     labels[0] = 1
     self.labels = labels.astype(int)
     self.unique_cluster = np.zeros(n, dtype=int)
Exemple #5
0
 def test_basic(self):
     methods = [PageRank(), Diffusion(), Closeness(), HITS(), Harmonic()]
     for adjacency in [test_graph(), test_digraph()]:
         n = adjacency.shape[0]
         for method in methods:
             score = method.fit_transform(adjacency)
             self.assertEqual(score.shape, (n, ))
             self.assertTrue(score.min() >= 0)
    def test_operations(self):
        adjacency = test_graph()
        n = adjacency.shape[0]
        polynome = Polynome(adjacency, np.arange(3))
        x = np.random.randn(n)

        y1 = (polynome * 2).dot(x)
        y2 = (-polynome).dot(x)
        self.assertAlmostEqual(np.linalg.norm(0.5 * y1 + y2), 0)
Exemple #7
0
 def test_random_projection(self):
     for algo in [RandomProjection(), RandomProjection(random_walk=True)]:
         adjacency = test_graph()
         embedding = algo.fit_transform(adjacency)
         self.assertEqual(embedding.shape[1], 2)
         adjacency = test_digraph()
         embedding = algo.fit_transform(adjacency)
         self.assertEqual(embedding.shape[1], 2)
         adjacency = test_graph_disconnect()
         embedding = algo.fit_transform(adjacency)
         self.assertEqual(embedding.shape[1], 2)
Exemple #8
0
    def test_predict(self):
        louvain = LouvainEmbedding()
        louvain.fit(test_graph())
        embedding_vector = louvain.predict(
            np.array([1, 0, 0, 0, 1, 1, 0, 0, 0, 1]))
        self.assertEqual(embedding_vector.shape[0], 1)

        bilouvain = BiLouvainEmbedding()
        bilouvain.fit(test_bigraph())
        embedding_vector = bilouvain.predict(np.array([1, 0, 0, 0, 1, 1]))
        self.assertEqual(embedding_vector.shape[0], 1)
 def test_options(self):
     ward = Ward()
     ward_options = Ward(embedding_method=Spectral(3), co_cluster=True)
     for algo in [ward, ward_options]:
         for input_matrix in [test_graph(), test_digraph(), test_bigraph()]:
             dendrogram = algo.fit_transform(input_matrix)
             self.assertEqual(dendrogram.shape,
                              (input_matrix.shape[0] - 1, 4))
             if algo.co_cluster:
                 self.assertEqual(algo.dendrogram_full_.shape,
                                  (sum(input_matrix.shape) - 1, 4))
    def test_predict(self):
        louvain = LouvainEmbedding()
        louvain.fit(test_graph())
        self.assertEqual(louvain.embedding_.shape[0], 10)
        louvain.fit(test_graph(), force_bipartite=True)
        self.assertEqual(louvain.embedding_.shape[0], 10)

        for method in ['remove', 'merge', 'keep']:
            louvain = LouvainEmbedding(isolated_nodes=method)
            louvain.fit(test_graph())
            embedding_vector = louvain.predict(
                np.array([1, 0, 0, 0, 1, 1, 0, 0, 0, 1]))
            self.assertEqual(embedding_vector.shape[0], 1)

        for method in ['remove', 'merge', 'keep']:
            bilouvain = LouvainEmbedding(isolated_nodes=method)
            bilouvain.fit(test_bigraph())
            embedding_vector = bilouvain.predict(
                np.array([1, 0, 0, 0, 1, 1, 0, 1]))
            self.assertEqual(embedding_vector.shape[0], 1)
Exemple #11
0
    def test_decomposition(self):
        adjacency = test_graph()
        n = adjacency.shape[0]
        polynome = Polynome(adjacency, np.arange(3))

        eigenvalues, eigenvectors = randomized_eig(polynome,
                                                   n_components=2,
                                                   which='LM')
        self.assertEqual(eigenvalues.shape, (2, ))
        self.assertEqual(eigenvectors.shape, (n, 2))

        left_sv, sv, right_sv = randomized_svd(polynome, n_components=2)
        self.assertEqual(left_sv.shape, (n, 2))
        self.assertEqual(sv.shape, (2, ))
        self.assertEqual(right_sv.shape, (2, n))
    def test_options(self):
        for adjacency in [test_graph(), test_digraph()]:
            n = adjacency.shape[0]

            force_atlas = ForceAtlas()
            layout = force_atlas.fit_transform(adjacency)
            self.assertEqual((n, 2), layout.shape)

            force_atlas = ForceAtlas(lin_log=True)
            layout = force_atlas.fit_transform(adjacency)
            self.assertEqual((n, 2), layout.shape)

            force_atlas = ForceAtlas(approx_radius=1.)
            layout = force_atlas.fit_transform(adjacency)
            self.assertEqual((n, 2), layout.shape)

            force_atlas.fit(adjacency, pos_init=layout, n_iter=1)
Exemple #13
0
 def test_basic(self):
     adjacency = test_graph()
     betweenness = Betweenness()
     scores = betweenness.fit_transform(adjacency)
     self.assertEqual(len(scores), adjacency.shape[0])
 def setUp(self) -> None:
     """Simple case for testing"""
     self.adjacency = test_graph()
     self.n = self.adjacency.shape[0]
     self.k = 5
Exemple #15
0
 def test_options(self):
     paris = Paris(weights='uniform')
     adjacency = test_graph()
     dendrogram = paris.fit_transform(adjacency)
     n = adjacency.shape[0]
     self.assertEqual(dendrogram.shape, (n - 1, 4))
 def test_errors(self):
     adjacency = test_graph()
     with self.assertRaises(ValueError):
         ForceAtlas().fit(adjacency, pos_init=np.ones((5, 7)))
 def test_louvain_hierarchy(self):
     lne = HLouvainEmbedding()
     lne.fit(test_graph())
     self.assertTupleEqual(lne.embedding_.shape, (10, 2))
 def test_init(self):
     adjacency = test_graph()
     with self.assertRaises(ValueError):
         Polynome(adjacency, np.array([]))
 def test_options(self):
     adjacency = test_graph()
     ward = Ward(embedding_method=Spectral(3))
     dendrogram = ward.fit_transform(adjacency)
     self.assertEqual(dendrogram.shape, (adjacency.shape[0] - 1, 4))