scikit-network 0.31.0__cp311-cp311-macosx_11_0_arm64.whl → 0.33.0__cp311-cp311-macosx_11_0_arm64.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.

Files changed (114) hide show
  1. {scikit_network-0.31.0.dist-info → scikit_network-0.33.0.dist-info}/AUTHORS.rst +3 -1
  2. {scikit_network-0.31.0.dist-info → scikit_network-0.33.0.dist-info}/METADATA +27 -5
  3. scikit_network-0.33.0.dist-info/RECORD +216 -0
  4. {scikit_network-0.31.0.dist-info → scikit_network-0.33.0.dist-info}/WHEEL +1 -1
  5. sknetwork/__init__.py +1 -1
  6. sknetwork/classification/base.py +1 -1
  7. sknetwork/classification/base_rank.py +3 -3
  8. sknetwork/classification/diffusion.py +25 -16
  9. sknetwork/classification/knn.py +23 -16
  10. sknetwork/classification/metrics.py +4 -4
  11. sknetwork/classification/pagerank.py +12 -8
  12. sknetwork/classification/propagation.py +25 -17
  13. sknetwork/classification/tests/test_diffusion.py +10 -0
  14. sknetwork/classification/vote.cpython-311-darwin.so +0 -0
  15. sknetwork/clustering/__init__.py +3 -1
  16. sknetwork/clustering/base.py +1 -1
  17. sknetwork/clustering/kcenters.py +253 -0
  18. sknetwork/clustering/leiden.py +242 -0
  19. sknetwork/clustering/leiden_core.cpython-311-darwin.so +0 -0
  20. sknetwork/clustering/leiden_core.pyx +124 -0
  21. sknetwork/clustering/louvain.py +118 -83
  22. sknetwork/clustering/louvain_core.cpython-311-darwin.so +0 -0
  23. sknetwork/clustering/louvain_core.pyx +86 -94
  24. sknetwork/clustering/postprocess.py +2 -2
  25. sknetwork/clustering/propagation_clustering.py +4 -4
  26. sknetwork/clustering/tests/test_API.py +7 -3
  27. sknetwork/clustering/tests/test_kcenters.py +60 -0
  28. sknetwork/clustering/tests/test_leiden.py +34 -0
  29. sknetwork/clustering/tests/test_louvain.py +2 -3
  30. sknetwork/data/__init__.py +1 -1
  31. sknetwork/data/base.py +7 -2
  32. sknetwork/data/load.py +20 -25
  33. sknetwork/data/models.py +15 -15
  34. sknetwork/data/parse.py +57 -34
  35. sknetwork/data/tests/test_API.py +3 -3
  36. sknetwork/data/tests/test_base.py +2 -2
  37. sknetwork/data/tests/test_parse.py +9 -12
  38. sknetwork/data/tests/test_toy_graphs.py +33 -33
  39. sknetwork/data/toy_graphs.py +35 -43
  40. sknetwork/embedding/__init__.py +0 -1
  41. sknetwork/embedding/base.py +23 -19
  42. sknetwork/embedding/force_atlas.py +3 -2
  43. sknetwork/embedding/louvain_embedding.py +1 -27
  44. sknetwork/embedding/random_projection.py +5 -3
  45. sknetwork/embedding/spectral.py +0 -73
  46. sknetwork/embedding/svd.py +0 -4
  47. sknetwork/embedding/tests/test_API.py +4 -28
  48. sknetwork/embedding/tests/test_louvain_embedding.py +13 -13
  49. sknetwork/embedding/tests/test_spectral.py +2 -5
  50. sknetwork/embedding/tests/test_svd.py +7 -1
  51. sknetwork/gnn/base_layer.py +3 -3
  52. sknetwork/gnn/gnn_classifier.py +41 -87
  53. sknetwork/gnn/layer.py +1 -1
  54. sknetwork/gnn/loss.py +1 -1
  55. sknetwork/gnn/optimizer.py +4 -3
  56. sknetwork/gnn/tests/test_base_layer.py +4 -4
  57. sknetwork/gnn/tests/test_gnn_classifier.py +12 -39
  58. sknetwork/gnn/utils.py +8 -8
  59. sknetwork/hierarchy/base.py +27 -0
  60. sknetwork/hierarchy/louvain_hierarchy.py +55 -47
  61. sknetwork/hierarchy/paris.cpython-311-darwin.so +0 -0
  62. sknetwork/hierarchy/paris.pyx +11 -10
  63. sknetwork/hierarchy/postprocess.py +16 -16
  64. sknetwork/hierarchy/tests/test_algos.py +5 -0
  65. sknetwork/hierarchy/tests/test_metrics.py +4 -4
  66. sknetwork/linalg/__init__.py +1 -1
  67. sknetwork/linalg/diteration.cpython-311-darwin.so +0 -0
  68. sknetwork/linalg/{normalization.py → normalizer.py} +17 -14
  69. sknetwork/linalg/operators.py +1 -1
  70. sknetwork/linalg/ppr_solver.py +1 -1
  71. sknetwork/linalg/push.cpython-311-darwin.so +0 -0
  72. sknetwork/linalg/tests/test_normalization.py +3 -7
  73. sknetwork/linalg/tests/test_operators.py +2 -6
  74. sknetwork/linalg/tests/test_ppr.py +1 -1
  75. sknetwork/linkpred/base.py +12 -1
  76. sknetwork/linkpred/nn.py +6 -6
  77. sknetwork/path/distances.py +11 -4
  78. sknetwork/path/shortest_path.py +1 -1
  79. sknetwork/path/tests/test_distances.py +7 -0
  80. sknetwork/path/tests/test_search.py +2 -2
  81. sknetwork/ranking/base.py +11 -6
  82. sknetwork/ranking/betweenness.cpython-311-darwin.so +0 -0
  83. sknetwork/ranking/pagerank.py +13 -12
  84. sknetwork/ranking/tests/test_API.py +0 -2
  85. sknetwork/ranking/tests/test_betweenness.py +1 -1
  86. sknetwork/ranking/tests/test_pagerank.py +11 -5
  87. sknetwork/regression/base.py +18 -1
  88. sknetwork/regression/diffusion.py +30 -14
  89. sknetwork/regression/tests/test_diffusion.py +8 -0
  90. sknetwork/topology/__init__.py +3 -1
  91. sknetwork/topology/cliques.cpython-311-darwin.so +0 -0
  92. sknetwork/topology/core.cpython-311-darwin.so +0 -0
  93. sknetwork/topology/cycles.py +243 -0
  94. sknetwork/topology/minheap.cpython-311-darwin.so +0 -0
  95. sknetwork/topology/structure.py +2 -42
  96. sknetwork/topology/tests/test_cycles.py +65 -0
  97. sknetwork/topology/tests/test_structure.py +2 -16
  98. sknetwork/topology/triangles.cpython-311-darwin.so +0 -0
  99. sknetwork/topology/triangles.pyx +7 -4
  100. sknetwork/topology/weisfeiler_lehman_core.cpython-311-darwin.so +0 -0
  101. sknetwork/utils/__init__.py +1 -1
  102. sknetwork/utils/format.py +1 -1
  103. sknetwork/utils/membership.py +2 -2
  104. sknetwork/utils/values.py +5 -3
  105. sknetwork/visualization/__init__.py +2 -2
  106. sknetwork/visualization/dendrograms.py +55 -7
  107. sknetwork/visualization/graphs.py +261 -44
  108. sknetwork/visualization/tests/test_dendrograms.py +9 -9
  109. sknetwork/visualization/tests/test_graphs.py +63 -57
  110. scikit_network-0.31.0.dist-info/RECORD +0 -210
  111. sknetwork/embedding/louvain_hierarchy.py +0 -142
  112. sknetwork/embedding/tests/test_louvain_hierarchy.py +0 -19
  113. {scikit_network-0.31.0.dist-info → scikit_network-0.33.0.dist-info}/LICENSE +0 -0
  114. {scikit_network-0.31.0.dist-info → scikit_network-0.33.0.dist-info}/top_level.txt +0 -0
@@ -13,7 +13,6 @@ Development Lead
13
13
  * Simon Delarue <simon.delarue@telecom-paris.fr>
14
14
  * Marc Jeanmougin <marc.jeanmougin@telecom-paris.fr>
15
15
 
16
-
17
16
  Former lead
18
17
  -----------
19
18
 
@@ -39,3 +38,6 @@ Contributors
39
38
  * Flávio Juvenal
40
39
  * Wenzhuo Zhao
41
40
  * Henry Carscadden
41
+ * Yiwen Peng
42
+ * Ahmed Zaiou
43
+ * Laurène David
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: scikit-network
3
- Version: 0.31.0
3
+ Version: 0.33.0
4
4
  Summary: Graph algorithms
5
5
  Home-page: https://github.com/sknetwork-team/scikit-network
6
6
  Author: Scikit-network team
@@ -15,16 +15,16 @@ Classifier: Intended Audience :: Science/Research
15
15
  Classifier: License :: OSI Approved :: BSD License
16
16
  Classifier: Natural Language :: English
17
17
  Classifier: Programming Language :: Cython
18
- Classifier: Programming Language :: Python :: 3.8
19
18
  Classifier: Programming Language :: Python :: 3.9
20
19
  Classifier: Programming Language :: Python :: 3.10
21
20
  Classifier: Programming Language :: Python :: 3.11
22
- Requires-Python: >=3.8
21
+ Classifier: Programming Language :: Python :: 3.12
22
+ Requires-Python: >=3.9
23
23
  Description-Content-Type: text/x-rst
24
24
  License-File: LICENSE
25
25
  License-File: AUTHORS.rst
26
- Requires-Dist: numpy (>=1.22.4)
27
- Requires-Dist: scipy (>=1.7.3)
26
+ Requires-Dist: numpy >=1.22.4
27
+ Requires-Dist: scipy >=1.7.3
28
28
 
29
29
  .. image:: https://perso.telecom-paristech.fr/bonald/logo_sknetwork.png
30
30
  :align: right
@@ -118,6 +118,28 @@ the `Journal of Machine Learning Research <https://jmlr.org>`_:
118
118
  History
119
119
  =======
120
120
 
121
+ 0.33.0 (2024-07-16)
122
+ -------------------
123
+
124
+ * Add Python 3.12
125
+ * Drop Python 3.8
126
+
127
+ 0.32.1 (2024-04-02)
128
+ -------------------
129
+
130
+ * Fix documentation
131
+ * Fix wheel upload
132
+
133
+ 0.32.0 (2024-03-29)
134
+ -------------------
135
+
136
+ * Add Leiden clustering algorithm
137
+ * Add k-center clustering algorithm
138
+ * Add functions to detect and break cycles
139
+ * Add damping factor in diffusion
140
+ * Fix F1 scores
141
+ * Remove hierarchical Louvain embedding
142
+ * Get clustering coefficient for directed graphs
121
143
 
122
144
  0.31.0 (2023-05-22)
123
145
  -------------------
@@ -0,0 +1,216 @@
1
+ sknetwork/log.py,sha256=ORInAVh_cWIfxwaFWSblSRxwT-jG05XPRnYTTAHSKy4,443
2
+ sknetwork/__init__.py,sha256=SZAI5otUFjW-KNf_HNvDY7g_mjFAcPTNg5SIcBjU4WM,533
3
+ sknetwork/test_log.py,sha256=V4t6Ggi_fh8px5Iq7CDLlJvbXfz24macQ43Ss0tPb5I,319
4
+ sknetwork/test_base.py,sha256=PB_kJ7cNvhBXmlL-KzyLu2hf6mG7b1OQY759aYplW4k,912
5
+ sknetwork/sknetwork.py,sha256=VYoI-gwqwBKPx84cA0KnYDRofrgIXs8xtASD2nu5fE0,44
6
+ sknetwork/base.py,sha256=XJJ6MicVcSiQBWQ9fYlmUJYkXq0PRldQzExhZKuaFBo,1951
7
+ sknetwork/classification/metrics.py,sha256=aaIfYddIAJsGXpXJ6TGcQScjzyJOo8kiWgcIE1kefSM,6806
8
+ sknetwork/classification/vote.pyx,sha256=Bbf74XCPH8uYDP-SrXRaA7k6Ax2x-wDzpbHMeg9le7A,1584
9
+ sknetwork/classification/diffusion.py,sha256=h4l43kA_MR_hMthc5mqW__5jTkQq9Ne9Q_H8bLPhM6Q,5564
10
+ sknetwork/classification/__init__.py,sha256=yVv7wSuUfNLxeNBF-AhWCJys3C-XatPtMzi1wyp9Bz4,475
11
+ sknetwork/classification/vote.cpython-311-darwin.so,sha256=eQ2XjJ0aq8-JiiPM5zv2dpSqi8NgBIa3wsKlsa-okKM,212840
12
+ sknetwork/classification/base_rank.py,sha256=RGElYD6PuP4nhnenNnzpOiBojs49Afg5ahjBFEi566I,4522
13
+ sknetwork/classification/propagation.py,sha256=0Cb1-mIMcPoes5oXR7BqhqEmlFMEMcTOMy_BNjX0lvY,5793
14
+ sknetwork/classification/pagerank.py,sha256=CBUeCqZisr6s5lh3VXYWA6rbiPdLyNzuSMbjazy80eA,2586
15
+ sknetwork/classification/base.py,sha256=WS-QHh4553Dr1VwJqjggSqO6hHFIAs50oPah_L23eFo,4290
16
+ sknetwork/classification/knn.py,sha256=fLRZF2jhHq105QHMeW328JcF71wTaGP-ukmbJdyiw44,5333
17
+ sknetwork/classification/tests/test_metrics.py,sha256=eBs-5uAEz2s8gukMyfhQ07GSFoyvxtsslLuc6VgUxBU,2303
18
+ sknetwork/classification/tests/__init__.py,sha256=sy9uRiPhYG2i7uqM3P07-VUf4UcZEHeOoH9BvKCpU3s,31
19
+ sknetwork/classification/tests/test_pagerank.py,sha256=5IJpYqnz31cWT0iXjTdo1xE8Kfj3YTK0cSZnnTlyJBs,620
20
+ sknetwork/classification/tests/test_diffusion.py,sha256=tp9qNYBcaI9T1HCC6bqMpG_-eM-na-fGNeGDzMZTu2A,3183
21
+ sknetwork/classification/tests/test_knn.py,sha256=sl5kxsaca3GUTvfdx6B9BRJ1SAdoDvxFOg9VyoA20IU,784
22
+ sknetwork/classification/tests/test_API.py,sha256=FA1d0NQz3vaNVVeFbhEljPe0fD_ryRwVP4G1hdv-u_s,1124
23
+ sknetwork/classification/tests/test_propagation.py,sha256=m0Jyq59k3taoikyBxcZGILzG7dWQV3SGE45MPm0RPao,850
24
+ sknetwork/visualization/dendrograms.py,sha256=m4FbBfvJUW_gXccZWF8OWxAsbhsEcKa1fXNNCp_y4MA,9901
25
+ sknetwork/visualization/__init__.py,sha256=8rLiR13WHSWLsEVTTL6lzOZms0LZf-ZujBqOI5VnKxk,216
26
+ sknetwork/visualization/graphs.py,sha256=kxFjEbg5b_bHpapLyf1L01CIwzxpWE6KLtS_ji2yZyY,41176
27
+ sknetwork/visualization/colors.py,sha256=DjcXt9aMgLan7bRg7TZI8m_8SLWQOZ-g2HoguB1-3qA,2509
28
+ sknetwork/visualization/tests/test_graphs.py,sha256=g2YPJn9m8wD-UHZ_BL37xuJqE7ygOx3EztKLVVqphYk,9421
29
+ sknetwork/visualization/tests/__init__.py,sha256=yOVrqUD9UuI_HdYuqRP5PS7QhS-pO4RE_Ls5PLiIC_w,30
30
+ sknetwork/visualization/tests/test_dendrograms.py,sha256=UuS3VZ5XnV1u5BtW-QKbFv0wavllQpbgtsOIe5XvTlg,2466
31
+ sknetwork/topology/cliques.pyx,sha256=BuezL9-zJOicL1zffkpcf8uIEgqhik6dgK_agXX4gaU,4510
32
+ sknetwork/topology/minheap.pyx,sha256=iFWpXPYSAmWjYphYByAM6auUj1XHly6QovZvuy2Lpyc,3310
33
+ sknetwork/topology/minheap.cpython-311-darwin.so,sha256=8rQmEe28kM8Ka_YfCSEuJxSx-L55VmNlKznwVGbo2SI,195280
34
+ sknetwork/topology/weisfeiler_lehman_core.pyx,sha256=fi0rRrXHVZuIQYzPDcPCamCRQLKquchjV3N9dNuQ1Pk,3034
35
+ sknetwork/topology/__init__.py,sha256=T2W2cWwcUdhfA86VuZAZqksbrgct4hiyp0HuizEnLg4,534
36
+ sknetwork/topology/cycles.py,sha256=EV2UMDktEGdJxEmAZyyjBMttJ6DqYvvfZ6mqwIQqFu0,9003
37
+ sknetwork/topology/weisfeiler_lehman.py,sha256=ACJDAmZbwDrZAvO-LsHnRaef-8KX7esM1LxVUglXtLw,4308
38
+ sknetwork/topology/cliques.cpython-311-darwin.so,sha256=COxC_t84RlIMB6Q8kD1WVW_vb3ZNtWTGgRu4oDBPtdo,249536
39
+ sknetwork/topology/core.cpython-311-darwin.so,sha256=uDFHVX6aSGZNPgtLTGjxOU3ZypcPKr6qrJGMpsQx1uo,210184
40
+ sknetwork/topology/minheap.pxd,sha256=Y_oRh8H-sNZYAWv0XM9T-ZLzYBhb5TrBM4VjlH-ZqPQ,564
41
+ sknetwork/topology/structure.py,sha256=CDfN7SL70wTHm2HPfqd7ncsZEaV1SQO3tJKYl1CdtNI,7285
42
+ sknetwork/topology/triangles.pyx,sha256=JOkA9k0CQTsT7zdPaEoW7-PdHYuoXHsB0XSuPKFLJSI,4349
43
+ sknetwork/topology/core.pyx,sha256=HwGbC84p9F9fkEw8ouNNMQtlYrAoEWhQS5hU9Cf1h94,2465
44
+ sknetwork/topology/triangles.cpython-311-darwin.so,sha256=aJ3ez12lZaQRZDg9vZRBo2Zz2xoZu0XZcAjU2w_mrlM,106224
45
+ sknetwork/topology/weisfeiler_lehman_core.cpython-311-darwin.so,sha256=dW9JH4XfiR0OBI751HxwenawSjNbDNrcdeTQDtn3DAs,214144
46
+ sknetwork/topology/tests/test_cycles.py,sha256=KZzMKS5ILfC_J0Fj5MFlEOL7Z9nOnlRfo4TnGdXEPWY,3150
47
+ sknetwork/topology/tests/test_structure.py,sha256=CzcZ1LxV-mI_buxz6LcTeCy3h5ofMLfOu2HUHwNSMi8,3948
48
+ sknetwork/topology/tests/test_wl.py,sha256=EJY_4xTi_-qzFsqZJkgnwLteoakdkpRAczzdMCGeXe0,2218
49
+ sknetwork/topology/tests/test_core.py,sha256=Zh9IYHGfqDqIlLycucLzqZbHvYmU-IB-J03-jlikPcI,551
50
+ sknetwork/topology/tests/__init__.py,sha256=9lKrPX4BnSJbK-VlDi9TsmAgDwqF3H423KhJ1u1Uaos,25
51
+ sknetwork/topology/tests/test_triangles.py,sha256=9g3nml3TNOiIFHLJDih5PTxWunDJemmpLQy2tmoQw4Y,1275
52
+ sknetwork/topology/tests/test_cliques.py,sha256=t97pKDMxT9RC-_YsgY-c8tQxrekyAE6i2_guvxAYHhQ,838
53
+ sknetwork/ranking/postprocess.py,sha256=-3wqBPvTM7jDdfTytINEXxM2eugJjbCZRLiLy9pkmac,919
54
+ sknetwork/ranking/__init__.py,sha256=UeYw8y0HFoBnPziqnVYXSt8jqFtkDgkCCMPhYTEIaF0,348
55
+ sknetwork/ranking/closeness.py,sha256=pETMD8uaXfADZhmzVaH4YIGX57S2vvhzVInONaAwBUM,2840
56
+ sknetwork/ranking/betweenness.cpython-311-darwin.so,sha256=moCAUNFJiuNt5KTgU11wdh3cqXomIp8Cpg3QBLhtKk8,127248
57
+ sknetwork/ranking/katz.py,sha256=uPyXkEL73_6MS4dP5XTSVSIrD5h5QJipVTVEa0L_y48,2535
58
+ sknetwork/ranking/hits.py,sha256=L39a9Ze3ITUbikmNhA_Lx-V5s_RQr0XnNkOsIgG8m98,2761
59
+ sknetwork/ranking/pagerank.py,sha256=Qt2SOUoLO76JVDnT4-x-b-hah9IlaHECsYNu45AnpY8,4749
60
+ sknetwork/ranking/base.py,sha256=Jo9LBK3TfXiYdxYqSmfeVC8O2D6fA5L-SRzQh3eqtnA,1512
61
+ sknetwork/ranking/betweenness.pyx,sha256=Pq9EqOHV0P8TDN_w9siP3h8HyechaAErysNwz0JT0ow,3087
62
+ sknetwork/ranking/tests/test_postprocess.py,sha256=jPLJKJYEltFpY2uct0JyJEkD1haOyNU8h_1KwiLMgZM,703
63
+ sknetwork/ranking/tests/test_closeness.py,sha256=ttBC8L_J1YDLCWhTIPhSFxu8jWuOWl_vupHFFaA_NP8,823
64
+ sknetwork/ranking/tests/__init__.py,sha256=ZVL3kCN-qV5ThJU58iaMvJKSIkZ7ke7liLtLwI4TCHY,24
65
+ sknetwork/ranking/tests/test_pagerank.py,sha256=5WHev0-d5nTOg6AEzIZyCmWSieTO3YNLNO2kB6RTYWE,2243
66
+ sknetwork/ranking/tests/test_API.py,sha256=PZ4Q5X1WT1HSAojZX72fUm4o9Y0PwocewJEoC1pfgMo,1003
67
+ sknetwork/ranking/tests/test_betweenness.py,sha256=8XA1ycLQQ7-Cm3CBfkcSDQOvD6xagAIP1--mPe9VFzo,1135
68
+ sknetwork/ranking/tests/test_hits.py,sha256=zStzrWZ-pv2Nsd-pB282FgW3KAn1TyKjz_l85tJaPJ0,491
69
+ sknetwork/linalg/diteration.pyx,sha256=gk9W6SwIxXgmjQujXWBUIoM_OwevjE3jTzFrIEkGnWI,1384
70
+ sknetwork/linalg/diteration.cpython-311-darwin.so,sha256=GMMR6l0X6DiBfhyrct6BK7CBTZEsE7KsToXDooUj96g,192608
71
+ sknetwork/linalg/__init__.py,sha256=awBDY2wWiO40L5eED3H8K1BM8qtHz7aQRv1p3PcSK94,533
72
+ sknetwork/linalg/laplacian.py,sha256=_gQr8YLqMUtK_IMNgvJoQX7-uODVlvCVmc-oTsgw7MA,401
73
+ sknetwork/linalg/eig_solver.py,sha256=yq_prP5p1jbALby69wkzzH0vYKc1btmRQoiVUtTh-eA,2700
74
+ sknetwork/linalg/push.pyx,sha256=caxCZa5h9zsHhxJgDBaaetqpB0wUbFLdOUwHwj0q_t0,2358
75
+ sknetwork/linalg/ppr_solver.py,sha256=mQkCnik-vvv_oFa9n1vtMzxgvi78qW-QQONdcmC9CXA,6533
76
+ sknetwork/linalg/push.cpython-311-darwin.so,sha256=rQ3BINfZ_TWVTe6S8VU818U7rpyP1GtyKtegP4fu-8A,212456
77
+ sknetwork/linalg/sparse_lowrank.py,sha256=LUhbqa01p51SYhoIb2Dmx2b9fMc-iOu69CAVHscR2Xs,5028
78
+ sknetwork/linalg/basics.py,sha256=8AFph_1G5SZP_24jrIv6qIWooO0UMglL4jMgx3ZdYIQ,1142
79
+ sknetwork/linalg/normalizer.py,sha256=kOFDPPdiGqG-KcWNiRwbS_y_nmw5fTKYTvuj_x8yBd0,2473
80
+ sknetwork/linalg/operators.py,sha256=fxitao4UYW4Hq7B258T_cAq2H3R2FN1-mwdy138w8fE,7432
81
+ sknetwork/linalg/polynome.py,sha256=_dP9Nu_6XCV0-WEQJ7E5nG6pxZWMtbj-LREu0vtxeWk,2125
82
+ sknetwork/linalg/svd_solver.py,sha256=vhcXwCsOar0cYDPZo7IF_ulRDsGGvZzePIeSpSCVgLk,2681
83
+ sknetwork/linalg/tests/test_svd.py,sha256=eLRmSiHt8uWzknImZtRSZmJC8OX0YDgUt9-8PePc3OA,1285
84
+ sknetwork/linalg/tests/test_operators.py,sha256=l_pBF7JZhjUSNfTReDX-lN2nA7HU7mkz7dznJ8I6lrY,2919
85
+ sknetwork/linalg/tests/__init__.py,sha256=l6yw2Ls1ndhVVcSYc059kAjQ2-VoDGZXxnBaglFZ4zo,23
86
+ sknetwork/linalg/tests/test_sparse_lowrank.py,sha256=LEDo6DChembm3xQ-vjeqqZi0ugWx7piucR9_LdDecrI,2276
87
+ sknetwork/linalg/tests/test_polynome.py,sha256=VYru9RlUIIN6dKNOiitSElPQqIxWI7mqx3dR5zd9Nv0,977
88
+ sknetwork/linalg/tests/test_ppr.py,sha256=Bh1n7W3We2N8u1RIWPyE5QQGE7esnNoUOLLRCL8Zye4,2093
89
+ sknetwork/linalg/tests/test_laplacian.py,sha256=B6UhJOmYUdNlXwNoxLLtb--nv9mx96Orl-W1Vl6PLyM,434
90
+ sknetwork/linalg/tests/test_eig.py,sha256=lUAgo4UfWuuSG5DhSk5SIT7ToLDgPG-5JCgmOe_M7Vw,1504
91
+ sknetwork/linalg/tests/test_normalization.py,sha256=nASuMYxKcsWj3gk9DF5uPKYOw93oJ-UQUWi99Fw3kmE,887
92
+ sknetwork/hierarchy/metrics.py,sha256=_wYGKx_VDE_sfbg-uUEFMhOjSLFqzC8rFHjJo1hdVL8,8046
93
+ sknetwork/hierarchy/paris.pyx,sha256=DX8p3LOtrNxyQ8pOZZE_Q2b5rBKjYwKArsmMZbvb0xY,11813
94
+ sknetwork/hierarchy/postprocess.py,sha256=d1Fll3eqDIjiMf1c5nGuKF6I0fN93elnglkp59LARGU,12072
95
+ sknetwork/hierarchy/__init__.py,sha256=YgE2eqnwS8Q2NWP9pNY-M1bpdxRn5-C-CdykydNW7iM,412
96
+ sknetwork/hierarchy/paris.cpython-311-darwin.so,sha256=PU-4hSjVRKxth0C9OKEUxWTHNdZr1iLxeAUE2O9Zz-o,292792
97
+ sknetwork/hierarchy/louvain_hierarchy.py,sha256=PhetHYpmsnI7yC-rbYAUXhNiBV9QNKMDbrfz9l0fskc,9846
98
+ sknetwork/hierarchy/base.py,sha256=MoxBiSsEJOq77YmXj_bpf4vUiPLSpQn8fnUX7YIqyd8,2693
99
+ sknetwork/hierarchy/tests/test_postprocess.py,sha256=OSrWE0gT0AcPI4LKmUL-Blfg5ErxnjS3d4rPNnA63_Y,2209
100
+ sknetwork/hierarchy/tests/test_metrics.py,sha256=IHlsdJXeHqPU8_SBm4eIXua5ZhyRIAUH4cAtVNNR7Ng,3160
101
+ sknetwork/hierarchy/tests/__init__.py,sha256=l2HHDiDLpoTQlwzh1mtCyp6bS8RxBdJK2DP1FGiQJMY,26
102
+ sknetwork/hierarchy/tests/test_algos.py,sha256=xMt2xzAYEm6MuK-8OKOqBwZS89aJspX2tr7T6QMHz6E,1361
103
+ sknetwork/hierarchy/tests/test_API.py,sha256=tLF-jLsfM2OFqbyVHK1o9jXVW_1PbTkMcxkAXuGjMO8,720
104
+ sknetwork/path/distances.py,sha256=8NJeL14UpGudTFCgQJaNDOXs2-aSHLCl5LHXexF_xuQ,3568
105
+ sknetwork/path/dag.py,sha256=Se5LSgQi-RwA-nXbJ1l_upjKw_MNIckeT_dh3TYWl6w,1668
106
+ sknetwork/path/shortest_path.py,sha256=_trQS__X71HQOOBXu0QTlzfOgb2ydoy-KooIKjIkpvs,2450
107
+ sknetwork/path/__init__.py,sha256=OQ7dWwlncIIsPo5kQu2akUhk_m73vQuF17LaH0siqo4,222
108
+ sknetwork/path/search.py,sha256=__63FqXFqhNTSyTGYj4yYx8ZDoew0_uCHHWhJlrIRoA,776
109
+ sknetwork/path/tests/test_dag.py,sha256=EYyghTXbHRr1Ia-8KoXoyumIFD_6q6bZx5DDcaa-ODQ,938
110
+ sknetwork/path/tests/test_search.py,sha256=mStK4ZiN1hVdZr8Q9R78AFBouuA9RIhnQ4nwGrfCjCY,1199
111
+ sknetwork/path/tests/test_shortest_path.py,sha256=Uwq4CzzjnMV6VsTlzgKnn_GwqUr2Cc0kZTgFtv_UisQ,1382
112
+ sknetwork/path/tests/__init__.py,sha256=_COAjci7RJ_XtBDGwy5aOgZ9dPSQH3j7d6qMlLHs55o,28
113
+ sknetwork/path/tests/test_distances.py,sha256=zItygI9cLMrQonLhOubvorElU5qaZumFfjMethx4rDw,2695
114
+ sknetwork/embedding/random_projection.py,sha256=NuJoPHYLjdb8dUdKOwGr7Q6lGZBSPbwmMuuY6CRzgoI,5002
115
+ sknetwork/embedding/__init__.py,sha256=ASeieiOc46EuKMUArW3kt_WJbsLxUzz0BVYycmag5Pw,410
116
+ sknetwork/embedding/svd.py,sha256=fK84a57Js4Hvh9Rtz2FDFA7eKhLThUO256e8xdIkJm4,14642
117
+ sknetwork/embedding/force_atlas.py,sha256=amYr0E08F8TDoIxjPx3lx35JFwEP41jc4KKed1PQeZs,7452
118
+ sknetwork/embedding/spring.py,sha256=5fyHQzmIp8gY9DdI-DFvMc37mjMb64bs22ZZZ9YFDXM,7151
119
+ sknetwork/embedding/spectral.py,sha256=ds91hH6JFBsfLcTS8QEz-gP5tZUcrrGqjfnL-xMIdU0,5548
120
+ sknetwork/embedding/louvain_embedding.py,sha256=Q51zN2yNVeUrwfF98nnozpSaB_vUSVUi4pi9KwNkUOA,6082
121
+ sknetwork/embedding/base.py,sha256=zIaj7TdsRzBXYdl3MCuiDf4ShV6T8sAtm22IzGajho4,2663
122
+ sknetwork/embedding/tests/test_spring.py,sha256=tanArc4vstNZ36CLr7S8uEVdXX0iP2K9UWKQLTcsPsQ,1643
123
+ sknetwork/embedding/tests/test_svd.py,sha256=xkfgHiQCDTRp8seWCdBvQFGwONoM6VYn6g9xp3FJIOs,1463
124
+ sknetwork/embedding/tests/test_louvain_embedding.py,sha256=XXz_2Jul1Rv3sILYFz4HLy2OWRsdZWRWWRnVBxOU68o,1116
125
+ sknetwork/embedding/tests/__init__.py,sha256=QkDQtTJReK7Ldp0Y4f5-tbTdcp224r1AF7jU26alSgQ,26
126
+ sknetwork/embedding/tests/test_API.py,sha256=2c0O8S0u0hF23iys7QLHJJOz2W79rHMeEO2OMDQbglk,1489
127
+ sknetwork/embedding/tests/test_force_atlas.py,sha256=-YM4HSF5Nvpm8e4SoCHiA2o7yAkm0h_ys7GRaJ1wloI,1120
128
+ sknetwork/embedding/tests/test_random_projection.py,sha256=2bUOCw66tUKP775pGPd5STj0UmRuwvBtI5CgY8HeHKI,1193
129
+ sknetwork/embedding/tests/test_spectral.py,sha256=CH-F8fM3cYoxhjpob1m7wZV-tEr8XFD6Lxa_bFsLv3A,3897
130
+ sknetwork/clustering/leiden_core.cpython-311-darwin.so,sha256=wO7hKO2v5GFGcF_x5H9YQiX6MjooOCA6cA4R1eorBsw,250976
131
+ sknetwork/clustering/leiden_core.pyx,sha256=7HGdeX6iMnSs52Px44-__kN9JhHueaQUvCmrkIGTalg,4300
132
+ sknetwork/clustering/metrics.py,sha256=VJPgmB1OvxA0SOaIQIGyJDUP1cgWFElnfdVaQ2krYrg,3060
133
+ sknetwork/clustering/leiden.py,sha256=yL5N-9ny6XAj6La2-PBcsieRl4SVx8wxwVGvS1tMr-o,9682
134
+ sknetwork/clustering/postprocess.py,sha256=4hx5VTQmqS2Ld2P2kvXoyvVanXVg3bMA619IHS2jWHM,2039
135
+ sknetwork/clustering/__init__.py,sha256=Ab-rmioxlaMoghrzd1RMr-L4zyrqIM8XznqrjBPGE28,435
136
+ sknetwork/clustering/kcenters.py,sha256=RFEx35vPUm9a4mzCbDwv-PmePCsdQwbuKAeaRizBMxY,8689
137
+ sknetwork/clustering/louvain.py,sha256=nFKEsrEuOH2k9iruT7SGo0kGDtcYzW2Xn7wBAxe767o,10825
138
+ sknetwork/clustering/propagation_clustering.py,sha256=ABZZtyojkrXfzsMwEcxqphzHgFC5q8sECOyanvK9D3o,3781
139
+ sknetwork/clustering/louvain_core.cpython-311-darwin.so,sha256=ljPJQ8zm24t8JjH-OJsi8CsIdUcYt8FFvtTRLUKOS54,250336
140
+ sknetwork/clustering/louvain_core.pyx,sha256=pMqt7WukTkBOpjofmiXMYHqRX69mkquEMapDdoskiQM,4089
141
+ sknetwork/clustering/base.py,sha256=dCF4K3nbKY24kzFeDAy7Fp-b9jDBzEoG3jj1ozuu_W8,5932
142
+ sknetwork/clustering/tests/test_postprocess.py,sha256=WSmAlqB-6Nw3eoL3NaOyNlpPr7GVnNnllkPVdyE9rXI,1378
143
+ sknetwork/clustering/tests/test_kcenters.py,sha256=laO1QSJ-yGlroB5XtrC15jbRK0krYZK5sIRDHBUZL30,1977
144
+ sknetwork/clustering/tests/test_metrics.py,sha256=fbVYg2s8DXQdiYHUNuVjFMtEJg4od1Vej25mgHhGDu0,1818
145
+ sknetwork/clustering/tests/__init__.py,sha256=Ta0XKY7pklRvHyUY3Jlow3A2V4REa5geZG74xPz80Tc,27
146
+ sknetwork/clustering/tests/test_leiden.py,sha256=3KSXvxUP9H4tCJQXUfWt-45-ltyD0FrVgYjXDvRN-yQ,1155
147
+ sknetwork/clustering/tests/test_louvain.py,sha256=6eQPoKodZLBafNgpX1_zBzPzGY5w7QKzWsLuoEVZEaE,4678
148
+ sknetwork/clustering/tests/test_API.py,sha256=Eez17EngcirVHVVoybClXS5314_Yz54JFzXldubEdgg,1528
149
+ sknetwork/linkpred/nn.py,sha256=tY-qYlp0j9WCvdoHkZ9EKzCD_GlDu7tQpKD7-aC20rE,4030
150
+ sknetwork/linkpred/__init__.py,sha256=pFtM52OhDK69ceeiRyH1MDse0EbD8fqyhOsWWih47gM,72
151
+ sknetwork/linkpred/base.py,sha256=aXgWqajDYjDE-YQcooI6j0qEByJxHQiQtSjmFiID3Qk,995
152
+ sknetwork/linkpred/tests/__init__.py,sha256=05sK8Ihh9Gi2_uobPC_ErMVE4KOt0761NzzV_vJh15U,32
153
+ sknetwork/linkpred/tests/test_nn.py,sha256=T79txY2DlPgnI4JqzC88EcwCobJiM9P9v_5_ZvBTDeU,983
154
+ sknetwork/utils/values.py,sha256=E-_gcqVOYjUPiG_iz9j2avVh1ENANVIZt7AydYzyeyg,2595
155
+ sknetwork/utils/check.py,sha256=tNOelam8GGdVjMzmk-7otNTyFBgJNKwq1z-zWmHOb9Y,12940
156
+ sknetwork/utils/neighbors.py,sha256=XNqwPM_PPpf_x-YhjEMVZJDxmazrVw9Eky3hNv9IGz0,3351
157
+ sknetwork/utils/__init__.py,sha256=z1kLaO6ZFBg9g3MoeuxV-6UPmcqKAxTs0fjqoYQOgc4,325
158
+ sknetwork/utils/format.py,sha256=qAa5jmp_fkQBlVL4LW14N7rrMPNk3yMApNFLxREPuiU,8766
159
+ sknetwork/utils/membership.py,sha256=dG2xJTWEjRcxyKTs5A7DFyNhO50-7UKpBIaWFfmyH_M,2162
160
+ sknetwork/utils/tfidf.py,sha256=C1qZCwZSwypi-C_II9D7lkfyxsOFefiDopTO3pBEwkc,956
161
+ sknetwork/utils/tests/test_membership.py,sha256=y4BiaCHUw5c1dJPOSJA6vgkBQlPxQ2bepL7hDV1es5U,748
162
+ sknetwork/utils/tests/__init__.py,sha256=y7PVVv2Wiz1msA5jqKOuB5BbB4UzCmDZ-pml9hIQyjo,22
163
+ sknetwork/utils/tests/test_tfidf.py,sha256=X69sepETWH1po9YXFubppvZlLeGdflqxoNEBinihp3A,445
164
+ sknetwork/utils/tests/test_values.py,sha256=BswuHPma0xCxr4gVkrkfPdMaIW6gw6ylCd5MTseo7tw,2268
165
+ sknetwork/utils/tests/test_check.py,sha256=WOLQ7J4eM4YHsSxyBNU5yPquq-0dB5FyD_tttZ1RgsQ,6764
166
+ sknetwork/utils/tests/test_neighbors.py,sha256=vF697D0cTfx4Limcmbre5JkJcLi1rUX0tS_JviX11Zg,1426
167
+ sknetwork/utils/tests/test_format.py,sha256=xSvz_IbxNnei8IrEysIOi8YpX_a6edxVE41g_lSx1mk,2245
168
+ sknetwork/gnn/base_layer.py,sha256=o5CbTVXY7Y1_TyNEMkp7P2va2HLLIq_MgnOxZ7PGQmg,3948
169
+ sknetwork/gnn/base_activation.py,sha256=XogZDdhl3QDyADvWJhMTGSnVYsKPI3PDHPu89yPL1VI,2306
170
+ sknetwork/gnn/__init__.py,sha256=m2lkDJoJZocJ18scpArsUHuzePZ8Q-ue7D3yXQ5H_RM,519
171
+ sknetwork/gnn/loss.py,sha256=P0un3iqbnFLrBbYODznVAoU_J2qAZuqHAPLiae0LCtI,5162
172
+ sknetwork/gnn/activation.py,sha256=D7o4FdbDMrBa2PQrWrvplCf14QOSzZ67d9eWN9bHY-M,3560
173
+ sknetwork/gnn/neighbor_sampler.py,sha256=TXdMRFwiT8sOdl6-S-flQZ5Rjrx1hwTzFqqiR_8PHTQ,1864
174
+ sknetwork/gnn/utils.py,sha256=A0kuBe29Eg90cEzRAgw4YmnShnzoq6ai_-01IBAf63g,4349
175
+ sknetwork/gnn/gnn_classifier.py,sha256=yvh5P3T3AmpEI8xNBERSkLumifBzz6gRLgQQ5aaASd0,12610
176
+ sknetwork/gnn/layer.py,sha256=i0XiAutNal9ImAGqMtSLVEq_QiqZoGAlAWwlSGrNY8Q,5526
177
+ sknetwork/gnn/optimizer.py,sha256=vsCgfPoJtYMWREnR4tBsfPb0Ed-rHR0poBr-75lE57s,5782
178
+ sknetwork/gnn/base.py,sha256=QZ_pNi2-edAUpu-2C93DWfooS_sHulO6HL6vK108lhc,5708
179
+ sknetwork/gnn/tests/test_optimizer.py,sha256=4NvHQf66cFKy500kA68IBVv_-_pf75Hqdbq2odhJMr4,1780
180
+ sknetwork/gnn/tests/test_utils.py,sha256=ExTZqAMT3joYU1RSQ-_d1YipysgnkLKePe7ZHuMoHeY,1843
181
+ sknetwork/gnn/tests/test_gnn_classifier.py,sha256=QRjXGJK2ghHtsGc9O-FwlKzG53IHocrWZuKTAVSFjFw,5743
182
+ sknetwork/gnn/tests/test_activation.py,sha256=HZdBaJ8P8LBJ-3_Typc8Qkvsho9gNSy1-CANEz8rQ-Q,2487
183
+ sknetwork/gnn/tests/test_layers.py,sha256=apPJGgMddw_-Qiw0OsTDL3cmMJ8GTMC08dLTmiYEWW8,3176
184
+ sknetwork/gnn/tests/__init__.py,sha256=SvFOB5nn_yN-JCaYFAtzesL0zU0OihQp0s0dOP1-MKE,20
185
+ sknetwork/gnn/tests/test_neigh_sampler.py,sha256=zc_6G3JhZvKrFLJAk2UJSOHZwN7sGojC8bXTCbmaUx4,698
186
+ sknetwork/gnn/tests/test_base_layer.py,sha256=1PXvS3338vu-fI77ZnGgHfY20zkPRv_GcZKxLQmyj7I,1381
187
+ sknetwork/gnn/tests/test_loss.py,sha256=W5DA6FRd-OppeRKFgj2gtLqNvjkXkCQPmV6lg3ENu-c,1045
188
+ sknetwork/gnn/tests/test_base.py,sha256=HVsz5zABud8ZlrIJIFuAKP6N7mu2ClrTaleZbPhGOR0,3393
189
+ sknetwork/regression/diffusion.py,sha256=p4o62jxuz3z3Kd2WizmV1GYM9MO_c3yp70_KQUim0jM,7905
190
+ sknetwork/regression/__init__.py,sha256=nRlbcR8bA2Lz-OmLPMIPhBzgDCol8oSA19qL3IninXA,141
191
+ sknetwork/regression/base.py,sha256=KIsVpnbACRH4h5W3ifMJOTlZNuztGbQP1QbZKj5aj_0,1496
192
+ sknetwork/regression/tests/__init__.py,sha256=BT8kCCMN_pv7znhIR5GSQ_XxU5brmrCYDwm4QJNRCV0,27
193
+ sknetwork/regression/tests/test_diffusion.py,sha256=-QBRgES_BF-QIgFevozLt9YXmGxJ6vxgLeYVZe92Wn8,2061
194
+ sknetwork/regression/tests/test_API.py,sha256=7fQulvKzF9yEBlLie7fL5G1ZdyiG4DAFZQZ4Lix96qs,1024
195
+ sknetwork/data/models.py,sha256=j3k2LKtxNjyihfJH3SyzA5jhFNBgaA17UCzihD59Lqo,13186
196
+ sknetwork/data/test_graphs.py,sha256=OM6-7CiBN4UEAQUtE_2k5e5I72zDBL3r5fj_C2JXzNw,2484
197
+ sknetwork/data/timeout.py,sha256=kwHOLZFnOTrRhiEjtcwATYhsXbf5e8zV1OCoEKuG8Zg,1047
198
+ sknetwork/data/__init__.py,sha256=xTK1qf-dIJomjDwSLXrYL6nUcNwo118YxN7b_6gozak,255
199
+ sknetwork/data/toy_graphs.py,sha256=8-QKuwURndJ1_KEWlDqs-lBWBeoFxU3V3oUui4PsSDY,24632
200
+ sknetwork/data/parse.py,sha256=Qrn2_i8XdVx7QNWhweI9Fu3i33C8PO_sOb8vPzReaYM,26995
201
+ sknetwork/data/load.py,sha256=zN0fhEjEm0Mxp0bsdc13CW1zkb877vbo3om25nwpKrY,14356
202
+ sknetwork/data/base.py,sha256=Jp0MJKcpfJCRZO_Nz18g1JqYFMMD1Rz8zLhnqlgO7tg,673
203
+ sknetwork/data/tests/test_test_graphs.py,sha256=dVRds-3P8JVnwfAp32fGif3zhocfPK0p2rgcYwJWsUQ,849
204
+ sknetwork/data/tests/test_parse.py,sha256=JOTFNWr77ZxKUKjw8TSbN-2dk-6YwmqN2OcrNkh7JVc,12717
205
+ sknetwork/data/tests/__init__.py,sha256=FSfkSYRKjDqIuEiEZ39Otve50qSxi7QObNnNrHHPx5s,19
206
+ sknetwork/data/tests/test_toy_graphs.py,sha256=lknaYy5AWJjiqKfhgWhQEolN8e4CDe5ilNDpC5lenww,2197
207
+ sknetwork/data/tests/test_models.py,sha256=oP-X_k0vbSB4CwlV4GQVVBAQ9uI_8frFicde5yhVYAc,1915
208
+ sknetwork/data/tests/test_API.py,sha256=LUWZX9pPpZLVuzgAz85sJk6tgKDaXKqc2Fhp91x-E6c,963
209
+ sknetwork/data/tests/test_base.py,sha256=b-0CM1ResLoJXg6-jGmBWFii5JtZrXAhfYiAG70dW1w,312
210
+ sknetwork/data/tests/test_load.py,sha256=9EXkw2TbDAUmpwE-kUTgxZieB4XDLF5drLVvyugX96M,3550
211
+ scikit_network-0.33.0.dist-info/RECORD,,
212
+ scikit_network-0.33.0.dist-info/LICENSE,sha256=zKbJMpbSKgGEUaNr_fKgvJrvw_3W4gnJs5XdLCK5Sxo,1622
213
+ scikit_network-0.33.0.dist-info/WHEEL,sha256=ANsQuXN11eSX1PFSD4UW7vUcpdaOm9VfCH5CSYqUC20,109
214
+ scikit_network-0.33.0.dist-info/AUTHORS.rst,sha256=MIEWJmfpIVmBPo03Xl_6j8kg7cjXicp9WVRQpuVDj9o,923
215
+ scikit_network-0.33.0.dist-info/top_level.txt,sha256=fkwspWQ9B3csqb5ENEOoVciRY6XftnMuz4MvTDQeSsg,10
216
+ scikit_network-0.33.0.dist-info/METADATA,sha256=KSryYoew7nGXScWKHnpxhItQbesZ7N1FBL7mKyZMg_U,14471
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.38.4)
2
+ Generator: setuptools (70.3.0)
3
3
  Root-Is-Purelib: false
4
4
  Tag: cp311-cp311-macosx_11_0_arm64
5
5
 
sknetwork/__init__.py CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  __author__ = """scikit-network team"""
6
6
  __email__ = "thomas.bonald@telecom-paris.fr"
7
- __version__ = '0.31.0'
7
+ __version__ = '0.33.0'
8
8
 
9
9
  import sknetwork.topology
10
10
  import sknetwork.path
@@ -38,7 +38,7 @@ class BaseClassifier(Algorithm, ABC):
38
38
  self.probs_row_ = None
39
39
  self.probs_col_ = None
40
40
 
41
- def predict(self, columns=False) -> np.ndarray:
41
+ def predict(self, columns: bool = False) -> np.ndarray:
42
42
  """Return the labels predicted by the algorithm.
43
43
 
44
44
  Parameters
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python3
2
2
  # -*- coding: utf-8 -*-
3
3
  """
4
- Created on March 2020
4
+ Created in March 2020
5
5
  @author: Nathan de Lara <nathan.delara@polytechnique.org>
6
6
  """
7
7
  from functools import partial
@@ -12,7 +12,7 @@ import numpy as np
12
12
  from scipy import sparse
13
13
 
14
14
  from sknetwork.classification.base import BaseClassifier
15
- from sknetwork.linalg.normalization import normalize
15
+ from sknetwork.linalg.normalizer import normalize
16
16
  from sknetwork.ranking.base import BaseRanking
17
17
  from sknetwork.utils.check import check_labels, check_n_jobs
18
18
  from sknetwork.utils.format import get_adjacency_values
@@ -114,7 +114,7 @@ class RankClassifier(BaseClassifier):
114
114
  seeds_labels = seeds_labels.astype(int)
115
115
  labels_unique, n_classes = check_labels(seeds_labels)
116
116
  seeds_all = self._process_labels(seeds_labels)
117
- local_function = partial(self.algorithm.fit_transform, adjacency)
117
+ local_function = partial(self.algorithm.fit_predict, adjacency)
118
118
  with Pool(self.n_jobs) as pool:
119
119
  scores = np.array(pool.map(local_function, seeds_all))
120
120
  scores = scores.T
@@ -11,7 +11,7 @@ from scipy import sparse
11
11
 
12
12
  from sknetwork.classification.base import BaseClassifier
13
13
  from sknetwork.path.distances import get_distances
14
- from sknetwork.linalg.normalization import normalize
14
+ from sknetwork.linalg.normalizer import normalize
15
15
  from sknetwork.utils.format import get_adjacency_values
16
16
  from sknetwork.utils.membership import get_membership
17
17
  from sknetwork.utils.neighbors import get_degrees
@@ -38,11 +38,14 @@ class DiffusionClassifier(BaseClassifier):
38
38
  Labels of nodes.
39
39
  probs_ : sparse.csr_matrix, shape (n_row, n_labels)
40
40
  Probability distribution over labels.
41
- labels_row_, labels_col_ : np.ndarray
42
- Labels of rows and columns, for bipartite graphs.
43
- probs_row_, probs_col_ : sparse.csr_matrix, shape (n_row, n_labels)
44
- Probability distributions over labels for rows and columns (for bipartite graphs).
45
-
41
+ labels_row_ : np.ndarray
42
+ Labels of rows, for bipartite graphs.
43
+ labels_col_ : np.ndarray
44
+ Labels of columns, for bipartite graphs.
45
+ probs_row_ : sparse.csr_matrix, shape (n_row, n_labels)
46
+ Probability distributions over labels of rows, for bipartite graphs.
47
+ probs_col_ : sparse.csr_matrix, shape (n_col, n_labels)
48
+ Probability distributions over labels of columns, for bipartite graphs.
46
49
  Example
47
50
  -------
48
51
  >>> from sknetwork.data import karate_club
@@ -52,7 +55,7 @@ class DiffusionClassifier(BaseClassifier):
52
55
  >>> labels_true = graph.labels
53
56
  >>> labels = {0: labels_true[0], 33: labels_true[33]}
54
57
  >>> labels_pred = diffusion.fit_predict(adjacency, labels)
55
- >>> np.round(np.mean(labels_pred == labels_true), 2)
58
+ >>> round(np.mean(labels_pred == labels_true), 2)
56
59
  0.97
57
60
 
58
61
  References
@@ -71,20 +74,23 @@ class DiffusionClassifier(BaseClassifier):
71
74
  self.scale = scale
72
75
 
73
76
  def fit(self, input_matrix: Union[sparse.csr_matrix, np.ndarray],
74
- labels: Optional[Union[dict, np.ndarray]] = None, labels_row: Optional[Union[dict, np.ndarray]] = None,
75
- labels_col: Optional[Union[dict, np.ndarray]] = None, force_bipartite: bool = False) \
77
+ labels: Optional[Union[dict, list, np.ndarray]] = None,
78
+ labels_row: Optional[Union[dict, list, np.ndarray]] = None,
79
+ labels_col: Optional[Union[dict, list, np.ndarray]] = None, force_bipartite: bool = False) \
76
80
  -> 'DiffusionClassifier':
77
81
  """Compute the solution to the Dirichlet problem (temperatures at equilibrium).
78
82
 
79
83
  Parameters
80
84
  ----------
81
- input_matrix :
85
+ input_matrix : sparse.csr_matrix, np.ndarray
82
86
  Adjacency matrix or biadjacency matrix of the graph.
83
- labels :
87
+ labels : dict, np.ndarray
84
88
  Known labels (dictionary or vector of int). Negative values ignored.
85
- labels_row, labels_col :
86
- Labels of rows and columns for bipartite graphs. Negative values ignored.
87
- force_bipartite :
89
+ labels_row : dict, np.ndarray
90
+ Labels of rows for bipartite graphs. Negative values ignored.
91
+ labels_col : dict, np.ndarray
92
+ Labels of columns for bipartite graphs. Negative values ignored.
93
+ force_bipartite : bool
88
94
  If ``True``, consider the input matrix as a biadjacency matrix (default = ``False``).
89
95
 
90
96
  Returns
@@ -98,7 +104,10 @@ class DiffusionClassifier(BaseClassifier):
98
104
  labels = values.astype(int)
99
105
  if (labels < 0).all():
100
106
  raise ValueError('At least one node must be given a non-negative label.')
101
- temperatures = get_membership(labels).toarray()
107
+ labels_reindex = labels.copy()
108
+ labels_unique, inverse = np.unique(labels[labels >= 0], return_inverse=True)
109
+ labels_reindex[labels >= 0] = inverse
110
+ temperatures = get_membership(labels_reindex).toarray()
102
111
  temperatures_seeds = temperatures[labels >= 0]
103
112
  temperatures[labels < 0] = 0.5
104
113
  diffusion = normalize(adjacency)
@@ -107,7 +116,7 @@ class DiffusionClassifier(BaseClassifier):
107
116
  temperatures[labels >= 0] = temperatures_seeds
108
117
  if self.centering:
109
118
  temperatures -= temperatures.mean(axis=0)
110
- labels_ = temperatures.argmax(axis=1)
119
+ labels_ = labels_unique[temperatures.argmax(axis=1)]
111
120
 
112
121
  # softmax
113
122
  if self.centering:
@@ -12,7 +12,7 @@ from scipy import sparse
12
12
 
13
13
  from sknetwork.classification.base import BaseClassifier
14
14
  from sknetwork.embedding.base import BaseEmbedding
15
- from sknetwork.linalg.normalization import get_norms, normalize
15
+ from sknetwork.linalg.normalizer import get_norms, normalize
16
16
  from sknetwork.utils.check import check_n_neighbors
17
17
  from sknetwork.utils.format import get_adjacency_values
18
18
 
@@ -22,12 +22,12 @@ class NNClassifier(BaseClassifier):
22
22
 
23
23
  Parameters
24
24
  ----------
25
- n_neighbors :
25
+ n_neighbors : int
26
26
  Number of nearest neighbors .
27
- embedding_method :
27
+ embedding_method : :class:`BaseEmbedding`
28
28
  Embedding method used to represent nodes in vector space.
29
29
  If ``None`` (default), use identity.
30
- normalize :
30
+ normalize : bool
31
31
  If ``True``, apply normalization so that all vectors have norm 1 in the embedding space.
32
32
 
33
33
  Attributes
@@ -36,10 +36,14 @@ class NNClassifier(BaseClassifier):
36
36
  Labels of nodes.
37
37
  probs_ : sparse.csr_matrix, shape (n_row, n_labels)
38
38
  Probability distribution over labels.
39
- labels_row_, labels_col_ : np.ndarray
40
- Labels of rows and columns, for bipartite graphs.
41
- probs_row_, probs_col_ : sparse.csr_matrix, shape (n_row, n_labels)
42
- Probability distributions over labels for rows and columns (for bipartite graphs).
39
+ labels_row_ : np.ndarray
40
+ Labels of rows, for bipartite graphs.
41
+ labels_col_ : np.ndarray
42
+ Labels of columns, for bipartite graphs.
43
+ probs_row_ : sparse.csr_matrix, shape (n_row, n_labels)
44
+ Probability distributions over labels of rows, for bipartite graphs.
45
+ probs_col_ : sparse.csr_matrix, shape (n_col, n_labels)
46
+ Probability distributions over labels of columns, for bipartite graphs.
43
47
 
44
48
  Example
45
49
  -------
@@ -51,7 +55,7 @@ class NNClassifier(BaseClassifier):
51
55
  >>> labels_true = graph.labels
52
56
  >>> labels = {0: labels_true[0], 33: labels_true[33]}
53
57
  >>> labels_pred = classifier.fit_predict(adjacency, labels)
54
- >>> np.round(np.mean(labels_pred == labels_true), 2)
58
+ >>> round(np.mean(labels_pred == labels_true), 2)
55
59
  0.82
56
60
  """
57
61
  def __init__(self, n_neighbors: int = 3, embedding_method: Optional[BaseEmbedding] = None, normalize: bool = True):
@@ -93,18 +97,21 @@ class NNClassifier(BaseClassifier):
93
97
 
94
98
  return probs, labels
95
99
 
96
- def fit(self, input_matrix: Union[sparse.csr_matrix, np.ndarray], labels: Union[np.ndarray, dict] = None,
97
- labels_row: Union[np.ndarray, dict] = None, labels_col: Union[np.ndarray, dict] = None) -> 'NNClassifier':
100
+ def fit(self, input_matrix: Union[sparse.csr_matrix, np.ndarray], labels: Union[np.ndarray, list, dict] = None,
101
+ labels_row: Union[np.ndarray, list, dict] = None,
102
+ labels_col: Union[np.ndarray, list, dict] = None) -> 'NNClassifier':
98
103
  """Node classification by k-nearest neighbors in the embedding space.
99
104
 
100
105
  Parameters
101
106
  ----------
102
- input_matrix :
107
+ input_matrix : sparse.csr_matrix, np.ndarray
103
108
  Adjacency matrix or biadjacency matrix of the graph.
104
- labels :
105
- Known labels (dictionary or array). Negative values ignored.
106
- labels_row, labels_col :
107
- Known labels of rows and columns (for bipartite graphs).
109
+ labels : np.ndarray, dict
110
+ Known labels. Negative values ignored.
111
+ labels_row : np.ndarray, dict
112
+ Known labels of rows, for bipartite graphs.
113
+ labels_col : np.ndarray, dict
114
+ Known labels of columns, for bipartite graphs.
108
115
 
109
116
  Returns
110
117
  -------
@@ -34,7 +34,7 @@ def get_accuracy_score(labels_true: np.ndarray, labels_pred: np.ndarray) -> floa
34
34
  >>> import numpy as np
35
35
  >>> labels_true = np.array([0, 0, 1, 1])
36
36
  >>> labels_pred = np.array([0, 0, 0, 1])
37
- >>> get_accuracy_score(labels_true, labels_pred)
37
+ >>> round(get_accuracy_score(labels_true, labels_pred), 2)
38
38
  0.75
39
39
  """
40
40
  check_vector_format(labels_true, labels_pred)
@@ -105,7 +105,7 @@ def get_f1_score(labels_true: np.ndarray, labels_pred: np.ndarray, return_precis
105
105
  >>> import numpy as np
106
106
  >>> labels_true = np.array([0, 0, 1, 1])
107
107
  >>> labels_pred = np.array([0, 0, 0, 1])
108
- >>> np.round(get_f1_score(labels_true, labels_pred), 2)
108
+ >>> round(get_f1_score(labels_true, labels_pred), 2)
109
109
  0.67
110
110
  """
111
111
  values = set(labels_true[labels_true >= 0]) | set(labels_pred[labels_pred >= 0])
@@ -158,7 +158,7 @@ def get_f1_scores(labels_true: np.ndarray, labels_pred: np.ndarray, return_preci
158
158
  mask = counts_pred > 0
159
159
  precisions[mask] = counts_correct[mask] / counts_pred[mask]
160
160
  f1_scores = np.zeros(n_labels)
161
- mask = (counts_true > 0) & (counts_pred > 0)
161
+ mask = (precisions > 0) & (recalls > 0)
162
162
  f1_scores[mask] = 2 / (1 / precisions[mask] + 1 / recalls[mask])
163
163
  if return_precision_recall:
164
164
  return f1_scores, precisions, recalls
@@ -188,7 +188,7 @@ def get_average_f1_score(labels_true: np.ndarray, labels_pred: np.ndarray, avera
188
188
  >>> import numpy as np
189
189
  >>> labels_true = np.array([0, 0, 1, 1])
190
190
  >>> labels_pred = np.array([0, 0, 0, 1])
191
- >>> np.round(get_average_f1_score(labels_true, labels_pred), 2)
191
+ >>> round(get_average_f1_score(labels_true, labels_pred), 2)
192
192
  0.73
193
193
  """
194
194
  if average == 'micro':
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python3
2
2
  # -*- coding: utf-8 -*-
3
3
  """
4
- Created on March 2020
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 : :obj:`str`
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
- Label of each node.
32
+ Labels of nodes.
33
33
  probs_ : sparse.csr_matrix, shape (n_row, n_labels)
34
34
  Probability distribution over labels.
35
- labels_row_, labels_col_ : np.ndarray
36
- Labels of rows and columns, for bipartite graphs.
37
- probs_row_, probs_col_ : sparse.csr_matrix, shape (n_row, n_labels)
38
- Probability distributions over labels for rows and columns (for bipartite graphs).
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
  -------