Ejemplo n.º 1
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)
Ejemplo n.º 2
0
    def test_keywords(self):
        biadjacency = test_bigraph()
        n_row, n_col = biadjacency.shape

        hits = HITS()
        hits.fit(biadjacency)
        self.assertEqual(hits.scores_row_.shape, (n_row, ))
        self.assertEqual(hits.scores_col_.shape, (n_col, ))
Ejemplo n.º 3
0
    def test_keywords(self):
        biadjacency = test_bigraph()
        n_row, n_col = biadjacency.shape

        for hits in [HITS(solver='lanczos', tol=0.1), HITS(solver='halko', n_oversamples=1)]:
            hits.fit(biadjacency)
            self.assertEqual(hits.scores_row_.shape, (n_row,))
            self.assertEqual(hits.scores_col_.shape, (n_col,))
Ejemplo n.º 4
0
 def test_birandom_projection(self):
     for algo in [
             BiRandomProjection(),
             BiRandomProjection(random_walk=True)
     ]:
         biadjacency = test_bigraph()
         embedding = algo.fit_transform(biadjacency)
         self.assertEqual(embedding.shape[1], 2)
         self.assertEqual(algo.embedding_col_.shape[1], 2)
Ejemplo n.º 5
0
 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_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))
Ejemplo n.º 7
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)
Ejemplo n.º 8
0
    def test_bipartite(self):
        biadjacency = test_bigraph()
        n_row, n_col = biadjacency.shape

        methods = [PageRank(), Diffusion(), HITS(), Katz(), Dirichlet()]
        for method in methods:
            method.fit(biadjacency)
            scores_row = method.scores_row_
            scores_col = method.scores_col_

            self.assertEqual(scores_row.shape, (n_row, ))
            self.assertEqual(scores_col.shape, (n_col, ))
Ejemplo n.º 9
0
    def test_predict(self):
        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 = BiLouvainEmbedding(isolated_nodes=method)
            bilouvain.fit(test_bigraph())
            embedding_vector = bilouvain.predict(np.array([1, 0, 0, 0, 1, 1]))
            self.assertEqual(embedding_vector.shape[0], 1)
Ejemplo n.º 10
0
    def test_copagerank(self):
        seeds = {0: 1}
        biadjacency = test_bigraph()

        adjacency = co_neighbor_graph(biadjacency,
                                      method='exact',
                                      normalized=True)
        scores1 = BiPageRank(damping_factor=0.85,
                             solver='lanczos').fit_transform(
                                 biadjacency, seeds)
        scores2 = PageRank(damping_factor=0.85**2,
                           solver='lanczos').fit_transform(adjacency, seeds)
        self.assertAlmostEqual(np.linalg.norm(scores1 - scores2), 0., places=6)
 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)
         biadjacency = test_bigraph()
         embedding = algo.fit_transform(biadjacency)
         self.assertEqual(embedding.shape[1], 2)
         self.assertEqual(algo.embedding_col_.shape[1], 2)
Ejemplo n.º 12
0
    def test_copagerank(self):
        seeds = {0: 1}
        biadjacency = test_bigraph()

        adjacency = co_neighbors_graph(biadjacency, method='exact')
        scores1 = CoPageRank().fit_transform(biadjacency, seeds)
        scores2 = PageRank().fit_transform(adjacency, seeds)
        self.assertAlmostEqual(np.linalg.norm(scores1 - scores2), 0.)

        adjacency = co_neighbors_graph(biadjacency.T.tocsr(), method='exact')
        scores1 = CoPageRank().fit(biadjacency, seeds_col=seeds).scores_col_
        scores2 = PageRank().fit_transform(adjacency, seeds)
        self.assertAlmostEqual(np.linalg.norm(scores1 - scores2), 0.)

        with self.assertRaises(ValueError):
            CoPageRank(solver='diteration').fit_transform(biadjacency, seeds)
Ejemplo n.º 13
0
    def test_laplacian(self):
        # regular Laplacian
        spectral = LaplacianEmbedding(self.k, normalized=False)
        embedding = spectral.fit_transform(self.adjacency)
        self.assertAlmostEqual(np.linalg.norm(embedding.mean(axis=0)), 0)

        spectral = LaplacianEmbedding(self.k, regularization=0)
        with self.assertRaises(ValueError):
            spectral.fit(test_bigraph())
        with self.assertRaises(ValueError):
            spectral.fit(test_digraph())
        with self.assertRaises(ValueError):
            spectral.fit(test_graph_disconnect())

        with self.assertWarns(Warning):
            n = self.k - 1
            spectral.fit_transform(np.ones((n, n)))
Ejemplo n.º 14
0
    def test_regular(self):
        # regular Laplacian
        spectral = Spectral(self.k, normalized_laplacian=False, barycenter=False, normalized=False)
        embedding = spectral.fit_transform(self.adjacency)
        self.assertAlmostEqual(np.linalg.norm(embedding.mean(axis=0)), 0)
        error = np.abs(spectral.predict(self.adjacency[1]) - embedding[1]).sum()
        self.assertAlmostEqual(error, 0)

        spectral = Spectral(self.k, normalized_laplacian=False, regularization=0, equalize=True)
        with self.assertRaises(ValueError):
            spectral.fit(test_bigraph())
        with self.assertRaises(ValueError):
            spectral.fit(test_digraph())
        with self.assertRaises(ValueError):
            spectral.fit(test_graph_disconnect())

        with self.assertWarns(Warning):
            n = self.k - 1
            spectral.fit_transform(np.ones((n, n)))
 def test_bilouvain_hierarchy(self):
     blne = BiHLouvainEmbedding()
     blne.fit(test_bigraph())
     self.assertTupleEqual(blne.embedding_.shape, (6, 2))