scikit-network 0.31.0__cp38-cp38-win_amd64.whl → 0.32.1__cp38-cp38-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of scikit-network might be problematic. Click here for more details.
- {scikit_network-0.31.0.dist-info → scikit_network-0.32.1.dist-info}/AUTHORS.rst +3 -0
- {scikit_network-0.31.0.dist-info → scikit_network-0.32.1.dist-info}/METADATA +19 -3
- {scikit_network-0.31.0.dist-info → scikit_network-0.32.1.dist-info}/RECORD +112 -105
- {scikit_network-0.31.0.dist-info → scikit_network-0.32.1.dist-info}/WHEEL +1 -1
- sknetwork/__init__.py +1 -1
- sknetwork/classification/base.py +1 -1
- sknetwork/classification/base_rank.py +3 -3
- sknetwork/classification/diffusion.py +21 -13
- sknetwork/classification/knn.py +19 -13
- sknetwork/classification/metrics.py +1 -1
- sknetwork/classification/pagerank.py +12 -8
- sknetwork/classification/propagation.py +22 -15
- sknetwork/classification/tests/test_diffusion.py +10 -0
- sknetwork/classification/vote.cp38-win_amd64.pyd +0 -0
- sknetwork/classification/vote.cpp +14549 -8668
- sknetwork/clustering/__init__.py +3 -1
- sknetwork/clustering/base.py +1 -1
- sknetwork/clustering/kcenters.py +253 -0
- sknetwork/clustering/leiden.py +241 -0
- sknetwork/clustering/leiden_core.cp38-win_amd64.pyd +0 -0
- sknetwork/clustering/leiden_core.cpp +31564 -0
- sknetwork/clustering/leiden_core.pyx +124 -0
- sknetwork/clustering/louvain.py +118 -83
- sknetwork/clustering/louvain_core.cp38-win_amd64.pyd +0 -0
- sknetwork/clustering/louvain_core.cpp +21876 -16332
- sknetwork/clustering/louvain_core.pyx +86 -94
- sknetwork/clustering/postprocess.py +2 -2
- sknetwork/clustering/propagation_clustering.py +4 -4
- sknetwork/clustering/tests/test_API.py +7 -3
- sknetwork/clustering/tests/test_kcenters.py +92 -0
- sknetwork/clustering/tests/test_leiden.py +34 -0
- sknetwork/clustering/tests/test_louvain.py +2 -3
- sknetwork/data/load.py +2 -4
- sknetwork/data/parse.py +41 -20
- sknetwork/data/tests/test_parse.py +9 -12
- sknetwork/embedding/__init__.py +0 -1
- sknetwork/embedding/base.py +20 -19
- sknetwork/embedding/force_atlas.py +3 -2
- sknetwork/embedding/louvain_embedding.py +1 -1
- sknetwork/embedding/random_projection.py +5 -3
- sknetwork/embedding/spectral.py +0 -73
- sknetwork/embedding/tests/test_API.py +4 -28
- sknetwork/embedding/tests/test_louvain_embedding.py +4 -9
- sknetwork/embedding/tests/test_spectral.py +2 -5
- sknetwork/embedding/tests/test_svd.py +1 -1
- sknetwork/gnn/base_layer.py +3 -3
- sknetwork/gnn/gnn_classifier.py +40 -86
- sknetwork/gnn/layer.py +1 -1
- sknetwork/gnn/loss.py +1 -1
- sknetwork/gnn/optimizer.py +4 -3
- sknetwork/gnn/tests/test_base_layer.py +4 -4
- sknetwork/gnn/tests/test_gnn_classifier.py +12 -39
- sknetwork/gnn/utils.py +8 -8
- sknetwork/hierarchy/base.py +27 -0
- sknetwork/hierarchy/louvain_hierarchy.py +45 -41
- sknetwork/hierarchy/paris.cp38-win_amd64.pyd +0 -0
- sknetwork/hierarchy/paris.cpp +27719 -20959
- sknetwork/hierarchy/paris.pyx +7 -7
- sknetwork/hierarchy/postprocess.py +16 -16
- sknetwork/hierarchy/tests/test_algos.py +5 -0
- sknetwork/linalg/__init__.py +1 -1
- sknetwork/linalg/diteration.cp38-win_amd64.pyd +0 -0
- sknetwork/linalg/diteration.cpp +13916 -8050
- sknetwork/linalg/{normalization.py → normalizer.py} +17 -14
- sknetwork/linalg/operators.py +1 -1
- sknetwork/linalg/ppr_solver.py +1 -1
- sknetwork/linalg/push.cp38-win_amd64.pyd +0 -0
- sknetwork/linalg/push.cpp +23144 -16920
- sknetwork/linalg/tests/test_normalization.py +3 -7
- sknetwork/linalg/tests/test_operators.py +2 -6
- sknetwork/linalg/tests/test_ppr.py +1 -1
- sknetwork/linkpred/base.py +12 -1
- sknetwork/linkpred/nn.py +6 -6
- sknetwork/path/distances.py +11 -4
- sknetwork/path/shortest_path.py +1 -1
- sknetwork/path/tests/test_distances.py +7 -0
- sknetwork/path/tests/test_search.py +2 -2
- sknetwork/ranking/base.py +11 -6
- sknetwork/ranking/betweenness.cp38-win_amd64.pyd +0 -0
- sknetwork/ranking/betweenness.cpp +5256 -2190
- sknetwork/ranking/pagerank.py +13 -12
- sknetwork/ranking/tests/test_API.py +0 -2
- sknetwork/ranking/tests/test_betweenness.py +1 -1
- sknetwork/ranking/tests/test_pagerank.py +11 -5
- sknetwork/regression/base.py +18 -1
- sknetwork/regression/diffusion.py +24 -10
- sknetwork/regression/tests/test_diffusion.py +8 -0
- sknetwork/topology/__init__.py +3 -1
- sknetwork/topology/cliques.cp38-win_amd64.pyd +0 -0
- sknetwork/topology/cliques.cpp +23147 -16457
- sknetwork/topology/core.cp38-win_amd64.pyd +0 -0
- sknetwork/topology/core.cpp +22854 -16576
- sknetwork/topology/cycles.py +243 -0
- sknetwork/topology/minheap.cp38-win_amd64.pyd +0 -0
- sknetwork/topology/minheap.cpp +19495 -13469
- sknetwork/topology/structure.py +2 -42
- sknetwork/topology/tests/test_cycles.py +65 -0
- sknetwork/topology/tests/test_structure.py +2 -16
- sknetwork/topology/triangles.cp38-win_amd64.pyd +0 -0
- sknetwork/topology/triangles.cpp +5283 -1397
- sknetwork/topology/triangles.pyx +7 -4
- sknetwork/topology/weisfeiler_lehman_core.cp38-win_amd64.pyd +0 -0
- sknetwork/topology/weisfeiler_lehman_core.cpp +14781 -8915
- sknetwork/utils/format.py +1 -1
- sknetwork/utils/membership.py +2 -2
- sknetwork/visualization/__init__.py +2 -2
- sknetwork/visualization/dendrograms.py +55 -7
- sknetwork/visualization/graphs.py +261 -44
- sknetwork/visualization/tests/test_dendrograms.py +9 -9
- sknetwork/visualization/tests/test_graphs.py +63 -57
- sknetwork/embedding/louvain_hierarchy.py +0 -142
- sknetwork/embedding/tests/test_louvain_hierarchy.py +0 -19
- {scikit_network-0.31.0.dist-info → scikit_network-0.32.1.dist-info}/LICENSE +0 -0
- {scikit_network-0.31.0.dist-info → scikit_network-0.32.1.dist-info}/top_level.txt +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
2
|
# -*- coding: utf-8 -*-
|
|
3
3
|
"""
|
|
4
|
-
Created
|
|
4
|
+
Created in March 2020
|
|
5
5
|
@author: Nathan de Lara <nathan.delara@polytechnique.org>
|
|
6
6
|
"""
|
|
7
7
|
from typing import Optional
|
|
@@ -17,9 +17,9 @@ class PageRankClassifier(RankClassifier):
|
|
|
17
17
|
|
|
18
18
|
Parameters
|
|
19
19
|
----------
|
|
20
|
-
damping_factor:
|
|
20
|
+
damping_factor: float
|
|
21
21
|
Probability to continue the random walk.
|
|
22
|
-
solver :
|
|
22
|
+
solver : str
|
|
23
23
|
Which solver to use: 'piteration', 'diteration', 'bicgstab', 'lanczos'.
|
|
24
24
|
n_iter : int
|
|
25
25
|
Number of iterations for some solvers such as ``'piteration'`` or ``'diteration'``.
|
|
@@ -29,13 +29,17 @@ class PageRankClassifier(RankClassifier):
|
|
|
29
29
|
Attributes
|
|
30
30
|
----------
|
|
31
31
|
labels_ : np.ndarray, shape (n_labels,)
|
|
32
|
-
|
|
32
|
+
Labels of nodes.
|
|
33
33
|
probs_ : sparse.csr_matrix, shape (n_row, n_labels)
|
|
34
34
|
Probability distribution over labels.
|
|
35
|
-
labels_row_
|
|
36
|
-
Labels of rows
|
|
37
|
-
|
|
38
|
-
|
|
35
|
+
labels_row_ : np.ndarray
|
|
36
|
+
Labels of rows, for bipartite graphs.
|
|
37
|
+
labels_col_ : np.ndarray
|
|
38
|
+
Labels of columns, for bipartite graphs.
|
|
39
|
+
probs_row_ : sparse.csr_matrix, shape (n_row, n_labels)
|
|
40
|
+
Probability distributions over labels of rows, for bipartite graphs.
|
|
41
|
+
probs_col_ : sparse.csr_matrix, shape (n_col, n_labels)
|
|
42
|
+
Probability distributions over labels of columns, for bipartite graphs.
|
|
39
43
|
|
|
40
44
|
Example
|
|
41
45
|
-------
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
2
|
# coding: utf-8
|
|
3
3
|
"""
|
|
4
|
-
Created
|
|
4
|
+
Created in April 2020
|
|
5
5
|
@author: Thomas Bonald <tbonald@enst.fr>
|
|
6
6
|
"""
|
|
7
7
|
|
|
@@ -12,7 +12,7 @@ from scipy import sparse
|
|
|
12
12
|
|
|
13
13
|
from sknetwork.classification.base import BaseClassifier
|
|
14
14
|
from sknetwork.classification.vote import vote_update
|
|
15
|
-
from sknetwork.linalg.
|
|
15
|
+
from sknetwork.linalg.normalizer import normalize
|
|
16
16
|
from sknetwork.utils.format import get_adjacency_values
|
|
17
17
|
from sknetwork.utils.membership import get_membership
|
|
18
18
|
|
|
@@ -25,9 +25,9 @@ class Propagation(BaseClassifier):
|
|
|
25
25
|
n_iter : float
|
|
26
26
|
Maximum number of iterations (-1 for infinity).
|
|
27
27
|
node_order : str
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
28
|
+
* ``'random'``: node labels are updated in random order.
|
|
29
|
+
* ``'increasing'``: node labels are updated by increasing order of (in-) weight.
|
|
30
|
+
* ``'decreasing'``: node labels are updated by decreasing order of (in-) weight.
|
|
31
31
|
* Otherwise, node labels are updated by index order.
|
|
32
32
|
weighted : bool
|
|
33
33
|
If ``True``, the vote of each neighbor is proportional to the edge weight.
|
|
@@ -36,13 +36,17 @@ class Propagation(BaseClassifier):
|
|
|
36
36
|
Attributes
|
|
37
37
|
----------
|
|
38
38
|
labels_ : np.ndarray, shape (n_labels,)
|
|
39
|
-
|
|
39
|
+
Labels of nodes.
|
|
40
40
|
probs_ : sparse.csr_matrix, shape (n_row, n_labels)
|
|
41
41
|
Probability distribution over labels.
|
|
42
|
-
labels_row_
|
|
43
|
-
Labels of rows
|
|
44
|
-
|
|
45
|
-
|
|
42
|
+
labels_row_ : np.ndarray
|
|
43
|
+
Labels of rows, for bipartite graphs.
|
|
44
|
+
labels_col_ : np.ndarray
|
|
45
|
+
Labels of columns, for bipartite graphs.
|
|
46
|
+
probs_row_ : sparse.csr_matrix, shape (n_row, n_labels)
|
|
47
|
+
Probability distributions over labels of rows, for bipartite graphs.
|
|
48
|
+
probs_col_ : sparse.csr_matrix, shape (n_col, n_labels)
|
|
49
|
+
Probability distributions over labels of columns, for bipartite graphs.
|
|
46
50
|
|
|
47
51
|
Example
|
|
48
52
|
-------
|
|
@@ -93,12 +97,15 @@ class Propagation(BaseClassifier):
|
|
|
93
97
|
|
|
94
98
|
Parameters
|
|
95
99
|
----------
|
|
96
|
-
input_matrix :
|
|
100
|
+
input_matrix : sparse.csr_matrix, np.ndarray
|
|
97
101
|
Adjacency matrix or biadjacency matrix of the graph.
|
|
98
|
-
labels :
|
|
99
|
-
Known labels
|
|
100
|
-
labels_row,
|
|
101
|
-
Known labels of rows
|
|
102
|
+
labels : np.ndarray, dict
|
|
103
|
+
Known labels. Negative values ignored.
|
|
104
|
+
labels_row : np.ndarray, dict
|
|
105
|
+
Known labels of rows, for bipartite graphs.
|
|
106
|
+
labels_col : np.ndarray, dict
|
|
107
|
+
Known labels of columns, for bipartite graphs.
|
|
108
|
+
|
|
102
109
|
Returns
|
|
103
110
|
-------
|
|
104
111
|
self: :class:`Propagation`
|
|
@@ -36,6 +36,7 @@ class TestDiffusionClassifier(unittest.TestCase):
|
|
|
36
36
|
algo.fit(biadjacency, labels_row=labels_row, labels_col=labels_col)
|
|
37
37
|
self.assertTrue(len(algo.labels_row_) == n_row)
|
|
38
38
|
self.assertTrue(len(algo.labels_col_) == n_col)
|
|
39
|
+
self.assertTrue(all(algo.labels_col_ == algo.predict(columns=True)))
|
|
39
40
|
|
|
40
41
|
def test_predict(self):
|
|
41
42
|
adjacency = test_graph()
|
|
@@ -65,3 +66,12 @@ class TestDiffusionClassifier(unittest.TestCase):
|
|
|
65
66
|
self.assertTrue(membership.shape == (n_row, 2))
|
|
66
67
|
membership = algo.transform(columns=True)
|
|
67
68
|
self.assertTrue(membership.shape == (n_col, 2))
|
|
69
|
+
|
|
70
|
+
def test_reindex_label(self):
|
|
71
|
+
adjacency = test_graph()
|
|
72
|
+
n_nodes = adjacency.shape[0]
|
|
73
|
+
labels = {0: 0, 1: 2, 2: 3}
|
|
74
|
+
algo = DiffusionClassifier()
|
|
75
|
+
labels_pred = algo.fit_predict(adjacency, labels=labels)
|
|
76
|
+
self.assertTrue(len(labels_pred) == n_nodes)
|
|
77
|
+
self.assertTrue(set(list(labels_pred)) == {0, 2, 3})
|
|
Binary file
|