scikit-network 0.33.3__cp313-cp313-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.33.3.dist-info/METADATA +122 -0
- scikit_network-0.33.3.dist-info/RECORD +228 -0
- scikit_network-0.33.3.dist-info/WHEEL +5 -0
- scikit_network-0.33.3.dist-info/licenses/AUTHORS.rst +43 -0
- scikit_network-0.33.3.dist-info/licenses/LICENSE +34 -0
- scikit_network-0.33.3.dist-info/top_level.txt +1 -0
- sknetwork/__init__.py +21 -0
- sknetwork/base.py +67 -0
- sknetwork/classification/__init__.py +8 -0
- sknetwork/classification/base.py +142 -0
- sknetwork/classification/base_rank.py +133 -0
- sknetwork/classification/diffusion.py +134 -0
- sknetwork/classification/knn.py +139 -0
- sknetwork/classification/metrics.py +205 -0
- sknetwork/classification/pagerank.py +66 -0
- sknetwork/classification/propagation.py +152 -0
- sknetwork/classification/tests/__init__.py +1 -0
- sknetwork/classification/tests/test_API.py +30 -0
- sknetwork/classification/tests/test_diffusion.py +77 -0
- sknetwork/classification/tests/test_knn.py +23 -0
- sknetwork/classification/tests/test_metrics.py +53 -0
- sknetwork/classification/tests/test_pagerank.py +20 -0
- sknetwork/classification/tests/test_propagation.py +24 -0
- sknetwork/classification/vote.cp313-win_amd64.pyd +0 -0
- sknetwork/classification/vote.cpp +27584 -0
- sknetwork/classification/vote.pyx +56 -0
- sknetwork/clustering/__init__.py +8 -0
- sknetwork/clustering/base.py +172 -0
- sknetwork/clustering/kcenters.py +253 -0
- sknetwork/clustering/leiden.py +242 -0
- sknetwork/clustering/leiden_core.cp313-win_amd64.pyd +0 -0
- sknetwork/clustering/leiden_core.cpp +31575 -0
- sknetwork/clustering/leiden_core.pyx +124 -0
- sknetwork/clustering/louvain.py +286 -0
- sknetwork/clustering/louvain_core.cp313-win_amd64.pyd +0 -0
- sknetwork/clustering/louvain_core.cpp +31220 -0
- sknetwork/clustering/louvain_core.pyx +124 -0
- sknetwork/clustering/metrics.py +91 -0
- sknetwork/clustering/postprocess.py +66 -0
- sknetwork/clustering/propagation_clustering.py +104 -0
- sknetwork/clustering/tests/__init__.py +1 -0
- sknetwork/clustering/tests/test_API.py +38 -0
- sknetwork/clustering/tests/test_kcenters.py +60 -0
- sknetwork/clustering/tests/test_leiden.py +34 -0
- sknetwork/clustering/tests/test_louvain.py +135 -0
- sknetwork/clustering/tests/test_metrics.py +50 -0
- sknetwork/clustering/tests/test_postprocess.py +39 -0
- sknetwork/data/__init__.py +6 -0
- sknetwork/data/base.py +33 -0
- sknetwork/data/load.py +406 -0
- sknetwork/data/models.py +459 -0
- sknetwork/data/parse.py +644 -0
- sknetwork/data/test_graphs.py +84 -0
- sknetwork/data/tests/__init__.py +1 -0
- sknetwork/data/tests/test_API.py +30 -0
- sknetwork/data/tests/test_base.py +14 -0
- sknetwork/data/tests/test_load.py +95 -0
- sknetwork/data/tests/test_models.py +52 -0
- sknetwork/data/tests/test_parse.py +250 -0
- sknetwork/data/tests/test_test_graphs.py +29 -0
- sknetwork/data/tests/test_toy_graphs.py +68 -0
- sknetwork/data/timeout.py +38 -0
- sknetwork/data/toy_graphs.py +611 -0
- sknetwork/embedding/__init__.py +8 -0
- sknetwork/embedding/base.py +94 -0
- sknetwork/embedding/force_atlas.py +198 -0
- sknetwork/embedding/louvain_embedding.py +148 -0
- sknetwork/embedding/random_projection.py +135 -0
- sknetwork/embedding/spectral.py +141 -0
- sknetwork/embedding/spring.py +198 -0
- sknetwork/embedding/svd.py +359 -0
- sknetwork/embedding/tests/__init__.py +1 -0
- sknetwork/embedding/tests/test_API.py +49 -0
- sknetwork/embedding/tests/test_force_atlas.py +35 -0
- sknetwork/embedding/tests/test_louvain_embedding.py +33 -0
- sknetwork/embedding/tests/test_random_projection.py +28 -0
- sknetwork/embedding/tests/test_spectral.py +81 -0
- sknetwork/embedding/tests/test_spring.py +50 -0
- sknetwork/embedding/tests/test_svd.py +43 -0
- sknetwork/gnn/__init__.py +10 -0
- sknetwork/gnn/activation.py +117 -0
- sknetwork/gnn/base.py +181 -0
- sknetwork/gnn/base_activation.py +90 -0
- sknetwork/gnn/base_layer.py +109 -0
- sknetwork/gnn/gnn_classifier.py +305 -0
- sknetwork/gnn/layer.py +153 -0
- sknetwork/gnn/loss.py +180 -0
- sknetwork/gnn/neighbor_sampler.py +65 -0
- sknetwork/gnn/optimizer.py +164 -0
- sknetwork/gnn/tests/__init__.py +1 -0
- sknetwork/gnn/tests/test_activation.py +56 -0
- sknetwork/gnn/tests/test_base.py +75 -0
- sknetwork/gnn/tests/test_base_layer.py +37 -0
- sknetwork/gnn/tests/test_gnn_classifier.py +130 -0
- sknetwork/gnn/tests/test_layers.py +80 -0
- sknetwork/gnn/tests/test_loss.py +33 -0
- sknetwork/gnn/tests/test_neigh_sampler.py +23 -0
- sknetwork/gnn/tests/test_optimizer.py +43 -0
- sknetwork/gnn/tests/test_utils.py +41 -0
- sknetwork/gnn/utils.py +127 -0
- sknetwork/hierarchy/__init__.py +6 -0
- sknetwork/hierarchy/base.py +96 -0
- sknetwork/hierarchy/louvain_hierarchy.py +272 -0
- sknetwork/hierarchy/metrics.py +234 -0
- sknetwork/hierarchy/paris.cp313-win_amd64.pyd +0 -0
- sknetwork/hierarchy/paris.cpp +37868 -0
- sknetwork/hierarchy/paris.pyx +316 -0
- sknetwork/hierarchy/postprocess.py +350 -0
- sknetwork/hierarchy/tests/__init__.py +1 -0
- sknetwork/hierarchy/tests/test_API.py +24 -0
- sknetwork/hierarchy/tests/test_algos.py +34 -0
- sknetwork/hierarchy/tests/test_metrics.py +62 -0
- sknetwork/hierarchy/tests/test_postprocess.py +57 -0
- sknetwork/linalg/__init__.py +9 -0
- sknetwork/linalg/basics.py +37 -0
- sknetwork/linalg/diteration.cp313-win_amd64.pyd +0 -0
- sknetwork/linalg/diteration.cpp +27400 -0
- sknetwork/linalg/diteration.pyx +47 -0
- sknetwork/linalg/eig_solver.py +93 -0
- sknetwork/linalg/laplacian.py +15 -0
- sknetwork/linalg/normalizer.py +86 -0
- sknetwork/linalg/operators.py +225 -0
- sknetwork/linalg/polynome.py +76 -0
- sknetwork/linalg/ppr_solver.py +170 -0
- sknetwork/linalg/push.cp313-win_amd64.pyd +0 -0
- sknetwork/linalg/push.cpp +31072 -0
- sknetwork/linalg/push.pyx +71 -0
- sknetwork/linalg/sparse_lowrank.py +142 -0
- sknetwork/linalg/svd_solver.py +91 -0
- sknetwork/linalg/tests/__init__.py +1 -0
- sknetwork/linalg/tests/test_eig.py +44 -0
- sknetwork/linalg/tests/test_laplacian.py +18 -0
- sknetwork/linalg/tests/test_normalization.py +34 -0
- sknetwork/linalg/tests/test_operators.py +66 -0
- sknetwork/linalg/tests/test_polynome.py +38 -0
- sknetwork/linalg/tests/test_ppr.py +50 -0
- sknetwork/linalg/tests/test_sparse_lowrank.py +61 -0
- sknetwork/linalg/tests/test_svd.py +38 -0
- sknetwork/linkpred/__init__.py +2 -0
- sknetwork/linkpred/base.py +46 -0
- sknetwork/linkpred/nn.py +126 -0
- sknetwork/linkpred/tests/__init__.py +1 -0
- sknetwork/linkpred/tests/test_nn.py +27 -0
- sknetwork/log.py +19 -0
- sknetwork/path/__init__.py +5 -0
- sknetwork/path/dag.py +54 -0
- sknetwork/path/distances.py +98 -0
- sknetwork/path/search.py +31 -0
- sknetwork/path/shortest_path.py +61 -0
- sknetwork/path/tests/__init__.py +1 -0
- sknetwork/path/tests/test_dag.py +37 -0
- sknetwork/path/tests/test_distances.py +62 -0
- sknetwork/path/tests/test_search.py +40 -0
- sknetwork/path/tests/test_shortest_path.py +40 -0
- sknetwork/ranking/__init__.py +8 -0
- sknetwork/ranking/base.py +61 -0
- sknetwork/ranking/betweenness.cp313-win_amd64.pyd +0 -0
- sknetwork/ranking/betweenness.cpp +9707 -0
- sknetwork/ranking/betweenness.pyx +97 -0
- sknetwork/ranking/closeness.py +92 -0
- sknetwork/ranking/hits.py +94 -0
- sknetwork/ranking/katz.py +83 -0
- sknetwork/ranking/pagerank.py +110 -0
- sknetwork/ranking/postprocess.py +37 -0
- sknetwork/ranking/tests/__init__.py +1 -0
- sknetwork/ranking/tests/test_API.py +32 -0
- sknetwork/ranking/tests/test_betweenness.py +38 -0
- sknetwork/ranking/tests/test_closeness.py +30 -0
- sknetwork/ranking/tests/test_hits.py +20 -0
- sknetwork/ranking/tests/test_pagerank.py +62 -0
- sknetwork/ranking/tests/test_postprocess.py +26 -0
- sknetwork/regression/__init__.py +4 -0
- sknetwork/regression/base.py +61 -0
- sknetwork/regression/diffusion.py +210 -0
- sknetwork/regression/tests/__init__.py +1 -0
- sknetwork/regression/tests/test_API.py +32 -0
- sknetwork/regression/tests/test_diffusion.py +56 -0
- sknetwork/sknetwork.py +3 -0
- sknetwork/test_base.py +35 -0
- sknetwork/test_log.py +15 -0
- sknetwork/topology/__init__.py +8 -0
- sknetwork/topology/cliques.cp313-win_amd64.pyd +0 -0
- sknetwork/topology/cliques.cpp +32565 -0
- sknetwork/topology/cliques.pyx +149 -0
- sknetwork/topology/core.cp313-win_amd64.pyd +0 -0
- sknetwork/topology/core.cpp +30651 -0
- sknetwork/topology/core.pyx +90 -0
- sknetwork/topology/cycles.py +243 -0
- sknetwork/topology/minheap.cp313-win_amd64.pyd +0 -0
- sknetwork/topology/minheap.cpp +27332 -0
- sknetwork/topology/minheap.pxd +20 -0
- sknetwork/topology/minheap.pyx +109 -0
- sknetwork/topology/structure.py +194 -0
- sknetwork/topology/tests/__init__.py +1 -0
- sknetwork/topology/tests/test_cliques.py +28 -0
- sknetwork/topology/tests/test_core.py +19 -0
- sknetwork/topology/tests/test_cycles.py +65 -0
- sknetwork/topology/tests/test_structure.py +85 -0
- sknetwork/topology/tests/test_triangles.py +38 -0
- sknetwork/topology/tests/test_wl.py +72 -0
- sknetwork/topology/triangles.cp313-win_amd64.pyd +0 -0
- sknetwork/topology/triangles.cpp +8894 -0
- sknetwork/topology/triangles.pyx +151 -0
- sknetwork/topology/weisfeiler_lehman.py +133 -0
- sknetwork/topology/weisfeiler_lehman_core.cp313-win_amd64.pyd +0 -0
- sknetwork/topology/weisfeiler_lehman_core.cpp +27635 -0
- sknetwork/topology/weisfeiler_lehman_core.pyx +114 -0
- sknetwork/utils/__init__.py +7 -0
- sknetwork/utils/check.py +355 -0
- sknetwork/utils/format.py +221 -0
- sknetwork/utils/membership.py +82 -0
- sknetwork/utils/neighbors.py +115 -0
- sknetwork/utils/tests/__init__.py +1 -0
- sknetwork/utils/tests/test_check.py +190 -0
- sknetwork/utils/tests/test_format.py +63 -0
- sknetwork/utils/tests/test_membership.py +24 -0
- sknetwork/utils/tests/test_neighbors.py +41 -0
- sknetwork/utils/tests/test_tfidf.py +18 -0
- sknetwork/utils/tests/test_values.py +66 -0
- sknetwork/utils/tfidf.py +37 -0
- sknetwork/utils/values.py +76 -0
- sknetwork/visualization/__init__.py +4 -0
- sknetwork/visualization/colors.py +34 -0
- sknetwork/visualization/dendrograms.py +277 -0
- sknetwork/visualization/graphs.py +1039 -0
- sknetwork/visualization/tests/__init__.py +1 -0
- sknetwork/visualization/tests/test_dendrograms.py +53 -0
- sknetwork/visualization/tests/test_graphs.py +176 -0
|
@@ -0,0 +1,611 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
"""
|
|
4
|
+
Created on Nov 29, 2018
|
|
5
|
+
@author: Quentin Lutz <qlutz@enst.fr>
|
|
6
|
+
@author: Nathan de Lara <nathan.delara@polytechnique.org>
|
|
7
|
+
@author: Thomas Bonald <tbonald@enst.fr>
|
|
8
|
+
"""
|
|
9
|
+
from typing import Union
|
|
10
|
+
|
|
11
|
+
import numpy as np
|
|
12
|
+
from scipy import sparse
|
|
13
|
+
|
|
14
|
+
from sknetwork.data.base import Dataset
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def house(metadata: bool = False) -> Union[sparse.csr_matrix, Dataset]:
|
|
18
|
+
"""House graph.
|
|
19
|
+
|
|
20
|
+
* Undirected graph
|
|
21
|
+
* 5 nodes, 6 edges
|
|
22
|
+
|
|
23
|
+
Parameters
|
|
24
|
+
----------
|
|
25
|
+
metadata :
|
|
26
|
+
If ``True``, return a `Dataset` object with metadata.
|
|
27
|
+
|
|
28
|
+
Returns
|
|
29
|
+
-------
|
|
30
|
+
adjacency or graph : Union[sparse.csr_matrix, Dataset]
|
|
31
|
+
Adjacency matrix or graph with metadata (positions).
|
|
32
|
+
|
|
33
|
+
Example
|
|
34
|
+
-------
|
|
35
|
+
>>> from sknetwork.data import house
|
|
36
|
+
>>> adjacency = house()
|
|
37
|
+
>>> adjacency.shape
|
|
38
|
+
(5, 5)
|
|
39
|
+
|
|
40
|
+
"""
|
|
41
|
+
row = np.array([0, 0, 1, 1, 2, 3])
|
|
42
|
+
col = np.array([1, 4, 2, 4, 3, 4])
|
|
43
|
+
adjacency = sparse.csr_matrix((np.ones(len(row), dtype=int), (row, col)), shape=(5, 5))
|
|
44
|
+
adjacency = (adjacency + adjacency.T).astype(bool)
|
|
45
|
+
|
|
46
|
+
if metadata:
|
|
47
|
+
x = np.array([0, -1, -1, 1, 1])
|
|
48
|
+
y = np.array([2, 1, -1, -1, 1])
|
|
49
|
+
graph = Dataset()
|
|
50
|
+
graph.adjacency = adjacency
|
|
51
|
+
graph.position = np.vstack((x, y)).T
|
|
52
|
+
graph.name = 'house'
|
|
53
|
+
return graph
|
|
54
|
+
else:
|
|
55
|
+
return adjacency
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def bow_tie(metadata: bool = False) -> Union[sparse.csr_matrix, Dataset]:
|
|
59
|
+
"""Bow tie graph.
|
|
60
|
+
|
|
61
|
+
* Undirected graph
|
|
62
|
+
* 5 nodes, 6 edges
|
|
63
|
+
|
|
64
|
+
Parameters
|
|
65
|
+
----------
|
|
66
|
+
metadata :
|
|
67
|
+
If ``True``, return a `Dataset` object with metadata.
|
|
68
|
+
|
|
69
|
+
Returns
|
|
70
|
+
-------
|
|
71
|
+
adjacency or graph : Union[sparse.csr_matrix, Dataset]
|
|
72
|
+
Adjacency matrix or graph with metadata (positions).
|
|
73
|
+
|
|
74
|
+
Example
|
|
75
|
+
-------
|
|
76
|
+
>>> from sknetwork.data import bow_tie
|
|
77
|
+
>>> adjacency = bow_tie()
|
|
78
|
+
>>> adjacency.shape
|
|
79
|
+
(5, 5)
|
|
80
|
+
"""
|
|
81
|
+
row = np.array([0, 0, 0, 0, 1, 3])
|
|
82
|
+
col = np.array([1, 2, 3, 4, 2, 4])
|
|
83
|
+
adjacency = sparse.csr_matrix((np.ones(len(row), dtype=int), (row, col)), shape=(5, 5))
|
|
84
|
+
adjacency = (adjacency + adjacency.T).astype(bool)
|
|
85
|
+
|
|
86
|
+
if metadata:
|
|
87
|
+
x = np.array([0, -1, 1, -1, 1])
|
|
88
|
+
y = np.array([0, 1, 1, -1, -1])
|
|
89
|
+
graph = Dataset()
|
|
90
|
+
graph.adjacency = adjacency
|
|
91
|
+
graph.position = np.vstack((x, y)).T
|
|
92
|
+
graph.name = 'bow_tie'
|
|
93
|
+
return graph
|
|
94
|
+
else:
|
|
95
|
+
return adjacency
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
def karate_club(metadata: bool = False) -> Union[sparse.csr_matrix, Dataset]:
|
|
99
|
+
"""Karate club graph.
|
|
100
|
+
|
|
101
|
+
* Undirected graph
|
|
102
|
+
* 34 nodes, 78 edges
|
|
103
|
+
* 2 labels
|
|
104
|
+
|
|
105
|
+
Parameters
|
|
106
|
+
----------
|
|
107
|
+
metadata :
|
|
108
|
+
If ``True``, return a `Dataset` object with metadata.
|
|
109
|
+
|
|
110
|
+
Returns
|
|
111
|
+
-------
|
|
112
|
+
adjacency or graph : Union[sparse.csr_matrix, Dataset]
|
|
113
|
+
Adjacency matrix or graph with metadata (labels, positions).
|
|
114
|
+
|
|
115
|
+
Example
|
|
116
|
+
-------
|
|
117
|
+
>>> from sknetwork.data import karate_club
|
|
118
|
+
>>> adjacency = karate_club()
|
|
119
|
+
>>> adjacency.shape
|
|
120
|
+
(34, 34)
|
|
121
|
+
|
|
122
|
+
References
|
|
123
|
+
----------
|
|
124
|
+
Zachary's karate club graph
|
|
125
|
+
https://en.wikipedia.org/wiki/Zachary%27s_karate_club
|
|
126
|
+
"""
|
|
127
|
+
row = np.array(
|
|
128
|
+
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
|
|
129
|
+
1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3,
|
|
130
|
+
3, 4, 4, 5, 5, 5, 6, 8, 8, 8, 9, 13, 14, 14, 15, 15, 18,
|
|
131
|
+
18, 19, 20, 20, 22, 22, 23, 23, 23, 23, 23, 24, 24, 24, 25, 26, 26,
|
|
132
|
+
27, 28, 28, 29, 29, 30, 30, 31, 31, 32])
|
|
133
|
+
col = np.array(
|
|
134
|
+
[1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 17, 19, 21, 31, 2,
|
|
135
|
+
3, 7, 13, 17, 19, 21, 30, 3, 7, 8, 9, 13, 27, 28, 32, 7, 12,
|
|
136
|
+
13, 6, 10, 6, 10, 16, 16, 30, 32, 33, 33, 33, 32, 33, 32, 33, 32,
|
|
137
|
+
33, 33, 32, 33, 32, 33, 25, 27, 29, 32, 33, 25, 27, 31, 31, 29, 33,
|
|
138
|
+
33, 31, 33, 32, 33, 32, 33, 32, 33, 33])
|
|
139
|
+
adjacency = sparse.csr_matrix((np.ones(len(row), dtype=bool), (row, col)), shape=(34, 34))
|
|
140
|
+
adjacency = sparse.csr_matrix(adjacency + adjacency.T, dtype=bool)
|
|
141
|
+
|
|
142
|
+
if metadata:
|
|
143
|
+
labels = np.array(
|
|
144
|
+
[1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
|
|
145
|
+
x = np.array(
|
|
146
|
+
[0.04, 0.24, 0.01, 0.13, 0.02, -0.08, 0.04, 0.21, 0.08, -0.11, -0.13, -0.28, 0.2, 0.08,
|
|
147
|
+
0.23, 0.06, -0.06, 0.32, 0.15, 0.19, 0.27, 0.39, -0.04, -0.26, -0.51, -0.49, -0.19, -0.28,
|
|
148
|
+
-0.11, -0.17, 0.22, -0.21, 0.03, 0])
|
|
149
|
+
y = np.array(
|
|
150
|
+
[-0.33, -0.15, -0.01, -0.28, -0.64, -0.75, -0.76, -0.25, 0.09, 0.23, -0.62, -0.4, -0.53, -0.07,
|
|
151
|
+
0.55, 0.64, -1., -0.42, 0.6, -0.01, 0.45, -0.34, 0.61, 0.41, 0.14, 0.28, 0.68, 0.21,
|
|
152
|
+
0.12, 0.54, 0.19, 0.09, 0.38, 0.33])
|
|
153
|
+
graph = Dataset()
|
|
154
|
+
graph.adjacency = adjacency
|
|
155
|
+
graph.labels = labels
|
|
156
|
+
graph.position = np.vstack((x, y)).T
|
|
157
|
+
graph.name = 'karate_club'
|
|
158
|
+
return graph
|
|
159
|
+
else:
|
|
160
|
+
return adjacency
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
def miserables(metadata: bool = False) -> Union[sparse.csr_matrix, Dataset]:
|
|
164
|
+
"""Co-occurrence graph of the characters in the novel Les miserables by Victor Hugo.
|
|
165
|
+
|
|
166
|
+
* Undirected graph
|
|
167
|
+
* 77 nodes, 508 edges
|
|
168
|
+
* Names of characters
|
|
169
|
+
|
|
170
|
+
Parameters
|
|
171
|
+
----------
|
|
172
|
+
metadata :
|
|
173
|
+
If ``True``, return a `Dataset` object with metadata.
|
|
174
|
+
|
|
175
|
+
Returns
|
|
176
|
+
-------
|
|
177
|
+
adjacency or graph : Union[sparse.csr_matrix, Dataset]
|
|
178
|
+
Adjacency matrix or graph with metadata (names, positions).
|
|
179
|
+
|
|
180
|
+
Example
|
|
181
|
+
-------
|
|
182
|
+
>>> from sknetwork.data import miserables
|
|
183
|
+
>>> adjacency = miserables()
|
|
184
|
+
>>> adjacency.shape
|
|
185
|
+
(77, 77)
|
|
186
|
+
"""
|
|
187
|
+
row = np.array(
|
|
188
|
+
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 3, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
|
|
189
|
+
11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12,
|
|
190
|
+
16, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 19, 19, 19, 19,
|
|
191
|
+
20, 20, 20, 21, 21, 22, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25,
|
|
192
|
+
25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27,
|
|
193
|
+
27, 27, 27, 27, 27, 28, 28, 29, 29, 29, 29, 29, 30, 34, 34, 34, 34, 35, 35, 35, 36, 36, 37, 39,
|
|
194
|
+
39, 41, 41, 41, 41, 41, 41, 41, 41, 41, 46, 47, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
|
195
|
+
48, 48, 48, 48, 48, 48, 49, 49, 49, 49, 49, 51, 51, 51, 51, 54, 55, 55, 55, 55, 55, 55, 55, 55,
|
|
196
|
+
55, 57, 57, 57, 57, 57, 57, 57, 57, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 59, 59, 59, 59, 59,
|
|
197
|
+
59, 59, 60, 60, 60, 60, 60, 60, 61, 61, 61, 61, 61, 62, 62, 62, 62, 62, 63, 63, 63, 63, 64, 64,
|
|
198
|
+
64, 65, 65, 66, 68, 68, 68, 68, 69, 69, 69, 70, 70, 71, 73])
|
|
199
|
+
col = np.array(
|
|
200
|
+
[1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 3, 11, 11, 11, 12, 13, 14,
|
|
201
|
+
15, 23, 24, 25, 26, 27, 28, 29, 31, 32, 33, 34, 35, 36, 37, 38, 43,
|
|
202
|
+
44, 48, 49, 51, 55, 58, 64, 68, 69, 70, 71, 72, 23, 17, 18, 19, 20,
|
|
203
|
+
21, 22, 23, 26, 55, 18, 19, 20, 21, 22, 23, 19, 20, 21, 22, 23, 20,
|
|
204
|
+
21, 22, 23, 21, 22, 23, 22, 23, 23, 24, 25, 27, 29, 30, 31, 25, 26,
|
|
205
|
+
27, 41, 42, 50, 68, 69, 70, 26, 27, 39, 40, 41, 42, 48, 55, 68, 69,
|
|
206
|
+
70, 71, 75, 27, 43, 49, 51, 54, 55, 72, 28, 29, 31, 33, 43, 48, 58,
|
|
207
|
+
68, 69, 70, 71, 72, 44, 45, 34, 35, 36, 37, 38, 31, 35, 36, 37, 38,
|
|
208
|
+
36, 37, 38, 37, 38, 38, 52, 55, 42, 55, 57, 62, 68, 69, 70, 71, 75,
|
|
209
|
+
47, 48, 55, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 68, 69, 71, 73,
|
|
210
|
+
74, 75, 76, 50, 51, 54, 55, 56, 52, 53, 54, 55, 55, 56, 57, 58, 59,
|
|
211
|
+
61, 62, 63, 64, 65, 58, 59, 61, 62, 63, 64, 65, 67, 59, 60, 61, 62,
|
|
212
|
+
63, 64, 65, 66, 70, 76, 60, 61, 62, 63, 64, 65, 66, 61, 62, 63, 64,
|
|
213
|
+
65, 66, 62, 63, 64, 65, 66, 63, 64, 65, 66, 76, 64, 65, 66, 76, 65,
|
|
214
|
+
66, 76, 66, 76, 76, 69, 70, 71, 75, 70, 71, 75, 71, 75, 75, 74])
|
|
215
|
+
data = np.array(
|
|
216
|
+
[1, 8, 10, 1, 1, 1, 1, 2, 1, 5, 6, 3, 3, 1, 1, 1, 1,
|
|
217
|
+
1, 9, 7, 12, 31, 17, 8, 2, 3, 1, 2, 3, 3, 2, 2, 2, 3,
|
|
218
|
+
1, 1, 2, 2, 19, 4, 1, 1, 1, 1, 1, 1, 2, 4, 4, 4, 3,
|
|
219
|
+
3, 3, 3, 1, 1, 4, 4, 3, 3, 3, 3, 4, 3, 3, 3, 3, 4,
|
|
220
|
+
3, 3, 3, 5, 4, 4, 4, 4, 4, 2, 1, 5, 1, 1, 2, 13, 4,
|
|
221
|
+
1, 2, 1, 1, 1, 1, 1, 1, 5, 1, 1, 3, 2, 1, 2, 5, 6,
|
|
222
|
+
4, 1, 3, 1, 1, 3, 2, 1, 21, 2, 1, 1, 1, 1, 1, 1, 6,
|
|
223
|
+
1, 2, 1, 1, 1, 3, 2, 2, 2, 1, 1, 1, 2, 3, 2, 2, 2,
|
|
224
|
+
2, 2, 2, 2, 2, 2, 1, 1, 2, 5, 1, 1, 1, 1, 1, 1, 1,
|
|
225
|
+
1, 2, 4, 1, 7, 6, 1, 2, 7, 5, 5, 3, 1, 1, 1, 1, 2,
|
|
226
|
+
2, 1, 1, 1, 9, 1, 12, 1, 1, 1, 2, 6, 1, 1, 1, 7, 5,
|
|
227
|
+
1, 9, 1, 5, 2, 1, 2, 1, 2, 2, 1, 1, 3, 15, 4, 6, 17,
|
|
228
|
+
4, 10, 5, 3, 1, 1, 2, 5, 13, 5, 9, 5, 1, 2, 3, 2, 2,
|
|
229
|
+
2, 1, 6, 3, 6, 5, 1, 6, 12, 5, 2, 1, 4, 5, 1, 1, 7,
|
|
230
|
+
3, 1, 2, 1, 1, 6, 4, 2, 3, 4, 2, 3, 2, 1, 1, 3])
|
|
231
|
+
adjacency = sparse.csr_matrix((data, (row, col)), shape=(77, 77))
|
|
232
|
+
adjacency = adjacency + adjacency.T
|
|
233
|
+
|
|
234
|
+
if metadata:
|
|
235
|
+
names = ['Myriel', 'Napoleon', 'Mlle Baptistine', 'Mme Magloire', 'Countess de Lo', 'Geborand',
|
|
236
|
+
'Champtercier', 'Cravatte', 'Count', 'Old man', 'Labarre', 'Valjean', 'Marguerite', 'Mme Der',
|
|
237
|
+
'Isabeau', 'Gervais', 'Tholomyes', 'Listolier', 'Fameuil', 'Blacheville', 'Favourite', 'Dahlia',
|
|
238
|
+
'Zephine', 'Fantine', 'Mme Thenardier', 'Thenardier', 'Cosette', 'Javert', 'Fauchelevent',
|
|
239
|
+
'Bamatabois', 'Perpetue', 'Simplice', 'Scaufflaire', 'Woman1', 'Judge', 'Champmathieu', 'Brevet',
|
|
240
|
+
'Chenildieu', 'Cochepaille', 'Pontmercy', 'Boulatruelle', 'Eponine', 'Anzelma', 'Woman2',
|
|
241
|
+
'Mother Innocent', 'Gribier', 'Jondrette', 'Mme Burgon', 'Gavroche', 'Gillenormand', 'Magnon',
|
|
242
|
+
'Mlle Gillenormand', 'Mme Pontmercy', 'Mlle Vaubois', 'Lt Gillenormand', 'Marius', 'Baroness',
|
|
243
|
+
'Mabeuf', 'Enjolras', 'Combeferre', 'Prouvaire', 'Feuilly', 'Courfeyrac', 'Bahorel', 'Bossuet',
|
|
244
|
+
'Joly', 'Grantaire', 'MotherPlutarch', 'Gueulemer', 'Babet', 'Claquesous', 'Montparnasse',
|
|
245
|
+
'Toussaint', 'Child1', 'Child2', 'Brujon', 'Mme Hucheloup']
|
|
246
|
+
x = np.array(
|
|
247
|
+
[0.53, 0.98, 0.41, 0.4, 1., 0.92, 0.84, 0.74, 0.78, 1., 0.51, 0.09, -0., 0.29, 0.37,
|
|
248
|
+
0.41, -0.35, -0.46, -0.42, -0.46, -0.41, -0.37, -0.36, -0.2, -0.06, -0.04, -0.01, -0.02, 0.33,
|
|
249
|
+
0.17, -0.29, -0.1, 0.58, 0.29, 0.29, 0.26, 0.29, 0.37, 0.35, 0.04, -0.01, -0.18, -0.09,
|
|
250
|
+
0.2, 0.51, 0.7, -0.95, -0.7, -0.37, -0.08, -0.18, -0.05, 0.04, -0.12, -0.06, -0.13, -0.24, -0.48,
|
|
251
|
+
-0.25, -0.33, -0.43, -0.39, -0.33, -0.42, -0.31, -0.38, -0.48, -0.74, -0.08, -0.1, -0.02, -0.1,
|
|
252
|
+
0.14, -0.76, -0.75, -0.18, -0.58])
|
|
253
|
+
y = np.array(
|
|
254
|
+
[-0.23, -0.42, -0.14, -0.18, -0.31, -0.52, -0.6, -0.65, -0.38, -0.19, 0.39, 0.03, 0.44, -0.44,
|
|
255
|
+
0.51, -0.36, 0.27, 0.37, 0.4, 0.32, 0.32, 0.36, 0.4, 0.2, 0.07, 0.14, -0.05, 0.06, 0.06,
|
|
256
|
+
0.24, -0.26, -0.1, 0.24, -0.04, 0.17, 0.23, 0.31, 0.21, 0.27, -0.36, 0.69, 0.11, 0.38, -0.09,
|
|
257
|
+
0.05, 0.12, 0.82, 0.44, 0.06, -0.2, -0.4, -0.28, -0.68, -0.79, -0.4, -0.07, -0.51, -0.17, -0.03,
|
|
258
|
+
-0.09, -0.14, -0.04, -0.04, -0.07, -0.06, -0.11, -0.06, -0.35, 0.24, 0.19, 0.22, 0.29, -0.2,
|
|
259
|
+
0.06, 0.14, 0.3, -0.1])
|
|
260
|
+
graph = Dataset()
|
|
261
|
+
graph.adjacency = adjacency
|
|
262
|
+
graph.names = np.array(names)
|
|
263
|
+
graph.position = np.vstack((x, y)).T
|
|
264
|
+
graph.name = 'miserables'
|
|
265
|
+
return graph
|
|
266
|
+
else:
|
|
267
|
+
return adjacency
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
def painters(metadata: bool = False) -> Union[sparse.csr_matrix, Dataset]:
|
|
271
|
+
"""Graph of links between some famous painters on Wikipedia.
|
|
272
|
+
|
|
273
|
+
* Directed graph
|
|
274
|
+
* 14 nodes, 50 edges
|
|
275
|
+
* Names of painters
|
|
276
|
+
|
|
277
|
+
Parameters
|
|
278
|
+
----------
|
|
279
|
+
metadata :
|
|
280
|
+
If ``True``, return a `Dataset` object with metadata.
|
|
281
|
+
|
|
282
|
+
Returns
|
|
283
|
+
-------
|
|
284
|
+
adjacency or graph : Union[sparse.csr_matrix, Dataset]
|
|
285
|
+
Adjacency matrix or graph with metadata (names, positions).
|
|
286
|
+
|
|
287
|
+
Example
|
|
288
|
+
-------
|
|
289
|
+
>>> from sknetwork.data import painters
|
|
290
|
+
>>> adjacency = painters()
|
|
291
|
+
>>> adjacency.shape
|
|
292
|
+
(14, 14)
|
|
293
|
+
"""
|
|
294
|
+
row = np.array(
|
|
295
|
+
[0, 0, 1, 1, 2, 3, 3, 3, 3, 3, 4, 4, 4, 5, 5, 5, 5,
|
|
296
|
+
6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 9, 9,
|
|
297
|
+
10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13])
|
|
298
|
+
col = np.array(
|
|
299
|
+
[3, 10, 3, 12, 9, 0, 1, 7, 11, 12, 2, 5, 9, 2, 4, 8, 9,
|
|
300
|
+
0, 13, 1, 2, 3, 8, 11, 12, 0, 1, 4, 5, 7, 10, 11, 2, 4,
|
|
301
|
+
0, 3, 8, 11, 12, 0, 1, 3, 10, 12, 1, 3, 4, 7, 6, 8])
|
|
302
|
+
adjacency = sparse.csr_matrix((np.ones(len(row), dtype=bool), (row, col)), shape=(14, 14))
|
|
303
|
+
|
|
304
|
+
if metadata:
|
|
305
|
+
names = np.array(
|
|
306
|
+
['Pablo Picasso', 'Claude Monet', 'Michel Angelo', 'Edouard Manet', 'Peter Paul Rubens', 'Rembrandt',
|
|
307
|
+
'Gustav Klimt', 'Edgar Degas', 'Vincent van Gogh', 'Leonardo da Vinci', 'Henri Matisse', 'Paul Cezanne',
|
|
308
|
+
'Pierre-Auguste Renoir', 'Egon Schiele'])
|
|
309
|
+
x = np.array(
|
|
310
|
+
[0.24, -0.47, -0.3, -0.31, -0.08, 0.12, 0.78, -0.36, 0.11,
|
|
311
|
+
-0.06, -0.02, -0.12, -0.24, 0.73])
|
|
312
|
+
y = np.array(
|
|
313
|
+
[0.53, 0.19, -0.71, 0.44, -0.48, -0.65, 0.69, -0.11, 0.01,
|
|
314
|
+
-1., 0.49, 0.28, 0.06, 0.27])
|
|
315
|
+
graph = Dataset()
|
|
316
|
+
graph.adjacency = adjacency
|
|
317
|
+
graph.names = names
|
|
318
|
+
graph.position = np.stack((x, y)).T
|
|
319
|
+
graph.name = 'painters'
|
|
320
|
+
return graph
|
|
321
|
+
else:
|
|
322
|
+
return adjacency
|
|
323
|
+
|
|
324
|
+
|
|
325
|
+
def hourglass(metadata: bool = False) -> Union[sparse.csr_matrix, Dataset]:
|
|
326
|
+
"""Hourglass graph.
|
|
327
|
+
|
|
328
|
+
* Bipartite graph
|
|
329
|
+
* 4 nodes, 4 edges
|
|
330
|
+
|
|
331
|
+
Returns
|
|
332
|
+
-------
|
|
333
|
+
biadjacency or graph : Union[sparse.csr_matrix, Dataset]
|
|
334
|
+
Biadjacency matrix or graph.
|
|
335
|
+
|
|
336
|
+
Example
|
|
337
|
+
-------
|
|
338
|
+
>>> from sknetwork.data import hourglass
|
|
339
|
+
>>> biadjacency = hourglass()
|
|
340
|
+
>>> biadjacency.shape
|
|
341
|
+
(2, 2)
|
|
342
|
+
"""
|
|
343
|
+
biadjacency = sparse.csr_matrix(np.ones((2, 2), dtype=bool))
|
|
344
|
+
if metadata:
|
|
345
|
+
graph = Dataset()
|
|
346
|
+
graph.biadjacency = biadjacency
|
|
347
|
+
return graph
|
|
348
|
+
else:
|
|
349
|
+
return biadjacency
|
|
350
|
+
|
|
351
|
+
|
|
352
|
+
def star_wars(metadata: bool = False) -> Union[sparse.csr_matrix, Dataset]:
|
|
353
|
+
"""Bipartite graph connecting some Star Wars villains to the movies in which they appear.
|
|
354
|
+
|
|
355
|
+
* Bipartite graph
|
|
356
|
+
* 7 nodes (4 villains, 3 movies), 8 edges
|
|
357
|
+
* Names of villains and movies
|
|
358
|
+
|
|
359
|
+
Parameters
|
|
360
|
+
----------
|
|
361
|
+
metadata :
|
|
362
|
+
If ``True``, return a `Dataset` object with metadata.
|
|
363
|
+
|
|
364
|
+
Returns
|
|
365
|
+
-------
|
|
366
|
+
biadjacency or graph : Union[sparse.csr_matrix, Dataset]
|
|
367
|
+
Biadjacency matrix or graph with metadata (names).
|
|
368
|
+
|
|
369
|
+
Example
|
|
370
|
+
-------
|
|
371
|
+
>>> from sknetwork.data import star_wars
|
|
372
|
+
>>> biadjacency = star_wars()
|
|
373
|
+
>>> biadjacency.shape
|
|
374
|
+
(4, 3)
|
|
375
|
+
"""
|
|
376
|
+
row = np.array([0, 0, 1, 2, 2, 2, 3, 3])
|
|
377
|
+
col = np.array([0, 2, 0, 0, 1, 2, 1, 2])
|
|
378
|
+
biadjacency = sparse.csr_matrix((np.ones(len(row), dtype=bool), (row, col)), shape=(4, 3))
|
|
379
|
+
|
|
380
|
+
if metadata:
|
|
381
|
+
villains = np.array(['Jabba', 'Greedo', 'Vader', 'Boba'])
|
|
382
|
+
movies = np.array(['A New Hope', 'The Empire Strikes Back', 'Return Of The Jedi'])
|
|
383
|
+
graph = Dataset()
|
|
384
|
+
graph.biadjacency = biadjacency
|
|
385
|
+
graph.names = villains
|
|
386
|
+
graph.names_row = villains
|
|
387
|
+
graph.names_col = movies
|
|
388
|
+
graph.name = 'star_wars'
|
|
389
|
+
return graph
|
|
390
|
+
else:
|
|
391
|
+
return biadjacency
|
|
392
|
+
|
|
393
|
+
|
|
394
|
+
def movie_actor(metadata: bool = False) -> Union[sparse.csr_matrix, Dataset]:
|
|
395
|
+
"""Bipartite graph connecting movies to some actors starring in them.
|
|
396
|
+
|
|
397
|
+
* Bipartite graph
|
|
398
|
+
* 32 nodes (15 movies, 17 actors), 43 edges
|
|
399
|
+
* Names of movies (rows) and actors (columns)
|
|
400
|
+
|
|
401
|
+
Parameters
|
|
402
|
+
----------
|
|
403
|
+
metadata :
|
|
404
|
+
If ``True``, return a `Dataset` object with metadata.
|
|
405
|
+
|
|
406
|
+
Returns
|
|
407
|
+
-------
|
|
408
|
+
biadjacency or dataset : Union[sparse.csr_matrix, Dataset]
|
|
409
|
+
Biadjacency matrix or dataset with metadata (names of movies and actors).
|
|
410
|
+
|
|
411
|
+
Example
|
|
412
|
+
-------
|
|
413
|
+
>>> from sknetwork.data import movie_actor
|
|
414
|
+
>>> biadjacency = movie_actor()
|
|
415
|
+
>>> biadjacency.shape
|
|
416
|
+
(15, 17)
|
|
417
|
+
"""
|
|
418
|
+
row = np.array(
|
|
419
|
+
[0, 0, 0, 1, 1, 1, 2, 2, 2, 2, 3, 3, 4, 4, 5, 5, 6,
|
|
420
|
+
6, 6, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11,
|
|
421
|
+
12, 12, 12, 13, 13, 14, 14])
|
|
422
|
+
col = np.array(
|
|
423
|
+
[0, 1, 2, 1, 2, 3, 3, 4, 5, 8, 4, 6, 0, 6, 4, 7, 4,
|
|
424
|
+
7, 8, 3, 8, 9, 10, 11, 12, 15, 0, 11, 12, 9, 10, 13, 16, 5, 9, 13,
|
|
425
|
+
1, 9, 15, 12, 14, 14, 16])
|
|
426
|
+
biadjacency = sparse.csr_matrix((np.ones(len(row), dtype=bool), (row, col)), shape=(15, 17))
|
|
427
|
+
|
|
428
|
+
if metadata:
|
|
429
|
+
movies = np.array(
|
|
430
|
+
['Inception', 'The Dark Knight Rises', 'The Big Short', 'Drive', 'The Great Gatsby', 'La La Land',
|
|
431
|
+
'Crazy Stupid Love', 'Vice', 'The Grand Budapest Hotel', 'Aviator', '007 Spectre', 'Inglourious Basterds',
|
|
432
|
+
'Midnight In Paris', 'Murder on the Orient Express', "Pirates of the Caribbean: At World's End"])
|
|
433
|
+
actors = np.array(
|
|
434
|
+
['Leonardo DiCaprio', 'Marion Cotillard', 'Joseph Gordon Lewitt', 'Christian Bale', 'Ryan Gosling',
|
|
435
|
+
'Brad Pitt', 'Carey Mulligan', 'Emma Stone', 'Steve Carell', 'Lea Seydoux', 'Ralph Fiennes', 'Jude Law',
|
|
436
|
+
'Willem Dafoe', 'Christophe Waltz', 'Johnny Depp', 'Owen Wilson', 'Naomie Harris'])
|
|
437
|
+
dataset = Dataset()
|
|
438
|
+
dataset.biadjacency = biadjacency
|
|
439
|
+
dataset.names = movies
|
|
440
|
+
dataset.names_row = movies
|
|
441
|
+
dataset.names_col = actors
|
|
442
|
+
dataset.name = 'movie_actor'
|
|
443
|
+
return dataset
|
|
444
|
+
else:
|
|
445
|
+
return biadjacency
|
|
446
|
+
|
|
447
|
+
|
|
448
|
+
def art_philo_science(metadata: bool = False) -> Union[sparse.csr_matrix, Dataset]:
|
|
449
|
+
"""Wikipedia links between 30 articles (10 artists, 10 philosophers, 10 scientists).
|
|
450
|
+
|
|
451
|
+
* Directed graph
|
|
452
|
+
* 30 nodes, 240 edges
|
|
453
|
+
* Names of articles
|
|
454
|
+
|
|
455
|
+
Metadata includes the occurence of 11 words in the abstract of these articles.
|
|
456
|
+
|
|
457
|
+
Parameters
|
|
458
|
+
----------
|
|
459
|
+
metadata :
|
|
460
|
+
If ``True``, return a `Dataset` object with metadata.
|
|
461
|
+
|
|
462
|
+
Returns
|
|
463
|
+
-------
|
|
464
|
+
adjacency or graph : Union[sparse.csr_matrix, Dataset]
|
|
465
|
+
Adjacency matrix or graph with metadata (names, positions, labels, names_labels,
|
|
466
|
+
biadjacency, names_col).
|
|
467
|
+
|
|
468
|
+
Example
|
|
469
|
+
-------
|
|
470
|
+
>>> from sknetwork.data import art_philo_science
|
|
471
|
+
>>> adjacency = art_philo_science()
|
|
472
|
+
>>> adjacency.shape
|
|
473
|
+
(30, 30)
|
|
474
|
+
"""
|
|
475
|
+
row = np.array(
|
|
476
|
+
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1,
|
|
477
|
+
1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 4, 4,
|
|
478
|
+
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6,
|
|
479
|
+
6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8,
|
|
480
|
+
8, 8, 8, 8, 8, 9, 9, 10, 10, 10, 10, 11, 11, 11, 12, 12, 12,
|
|
481
|
+
12, 12, 13, 13, 13, 14, 14, 14, 14, 14, 15, 15, 15, 16, 16, 16, 17,
|
|
482
|
+
17, 17, 17, 18, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
|
|
483
|
+
20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
|
|
484
|
+
21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23,
|
|
485
|
+
23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24,
|
|
486
|
+
24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25,
|
|
487
|
+
25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
|
|
488
|
+
26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
|
|
489
|
+
28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29,
|
|
490
|
+
29, 29])
|
|
491
|
+
col = np.array(
|
|
492
|
+
[1, 5, 6, 7, 20, 21, 23, 24, 25, 26, 27, 28, 0, 5, 7, 9, 12,
|
|
493
|
+
16, 20, 21, 24, 25, 26, 27, 28, 3, 20, 0, 2, 26, 7, 20, 21, 29,
|
|
494
|
+
0, 1, 6, 8, 9, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 0, 1,
|
|
495
|
+
5, 7, 8, 24, 26, 27, 0, 1, 6, 20, 21, 24, 25, 26, 27, 28, 0,
|
|
496
|
+
5, 6, 7, 9, 27, 1, 25, 0, 18, 19, 20, 12, 16, 17, 11, 12, 14,
|
|
497
|
+
16, 17, 14, 15, 25, 11, 12, 16, 17, 19, 13, 14, 19, 12, 14, 16, 11,
|
|
498
|
+
12, 14, 16, 10, 14, 17, 18, 0, 1, 2, 3, 4, 5, 7, 18, 21, 22,
|
|
499
|
+
23, 24, 25, 26, 27, 28, 29, 0, 1, 4, 5, 7, 18, 20, 22, 23, 24,
|
|
500
|
+
25, 26, 27, 28, 29, 5, 20, 21, 23, 24, 25, 26, 27, 28, 29, 5, 20,
|
|
501
|
+
21, 22, 23, 24, 25, 26, 27, 28, 29, 0, 1, 2, 5, 6, 7, 10, 20,
|
|
502
|
+
21, 22, 23, 25, 26, 27, 28, 29, 0, 1, 5, 7, 9, 13, 20, 21, 22,
|
|
503
|
+
23, 24, 26, 27, 28, 29, 0, 1, 5, 6, 7, 20, 21, 22, 23, 24, 25,
|
|
504
|
+
27, 28, 29, 0, 1, 3, 5, 6, 7, 20, 21, 22, 23, 24, 25, 26, 28,
|
|
505
|
+
0, 1, 5, 7, 9, 20, 21, 22, 23, 24, 25, 26, 27, 29, 4, 18, 20,
|
|
506
|
+
21, 22])
|
|
507
|
+
adjacency = sparse.csr_matrix((np.ones(len(row), dtype=bool), (row, col)), shape=(30, 30))
|
|
508
|
+
|
|
509
|
+
if metadata:
|
|
510
|
+
names = np.array(
|
|
511
|
+
['Isaac Newton',
|
|
512
|
+
'Albert Einstein',
|
|
513
|
+
'Carl Linnaeus',
|
|
514
|
+
'Charles Darwin',
|
|
515
|
+
'Ptolemy',
|
|
516
|
+
'Gottfried Wilhelm Leibniz',
|
|
517
|
+
'Carl Friedrich Gauss',
|
|
518
|
+
'Galileo Galilei',
|
|
519
|
+
'Leonhard Euler',
|
|
520
|
+
'John von Neumann',
|
|
521
|
+
'Leonardo da Vinci',
|
|
522
|
+
'Richard Wagner',
|
|
523
|
+
'Ludwig van Beethoven',
|
|
524
|
+
'Bob Dylan',
|
|
525
|
+
'Igor Stravinsky',
|
|
526
|
+
'The Beatles',
|
|
527
|
+
'Wolfgang Amadeus Mozart',
|
|
528
|
+
'Richard Strauss',
|
|
529
|
+
'Raphael',
|
|
530
|
+
'Pablo Picasso',
|
|
531
|
+
'Aristotle',
|
|
532
|
+
'Plato',
|
|
533
|
+
'Augustine of Hippo',
|
|
534
|
+
'Thomas Aquinas',
|
|
535
|
+
'Immanuel Kant',
|
|
536
|
+
'Bertrand Russell',
|
|
537
|
+
'David Hume',
|
|
538
|
+
'René Descartes',
|
|
539
|
+
'John Stuart Mill',
|
|
540
|
+
'Socrates'])
|
|
541
|
+
labels = np.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
542
|
+
1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])
|
|
543
|
+
names_labels = np.array(['science', 'arts', 'philosophy'])
|
|
544
|
+
position = np.array(
|
|
545
|
+
[[0.25, 0.57],
|
|
546
|
+
[0.28, 0.37],
|
|
547
|
+
[-0.08, 0.82],
|
|
548
|
+
[0.08, 0.87],
|
|
549
|
+
[-0.08, 0.49],
|
|
550
|
+
[0.31, 0.58],
|
|
551
|
+
[0.41, 0.66],
|
|
552
|
+
[0.31, 0.51],
|
|
553
|
+
[0.53, 0.65],
|
|
554
|
+
[0.48, 0.42],
|
|
555
|
+
[-0.02, 0.29],
|
|
556
|
+
[0.25, -0.44],
|
|
557
|
+
[0.23, -0.22],
|
|
558
|
+
[0.02, 0.03],
|
|
559
|
+
[0.07, -0.26],
|
|
560
|
+
[-0.16, -0.23],
|
|
561
|
+
[0.28, -0.15],
|
|
562
|
+
[0.12, -0.38],
|
|
563
|
+
[-0.14, 0.29],
|
|
564
|
+
[-0.09, -0.1],
|
|
565
|
+
[0.09, 0.57],
|
|
566
|
+
[0.12, 0.5],
|
|
567
|
+
[0.16, 0.7],
|
|
568
|
+
[0.12, 0.66],
|
|
569
|
+
[0.17, 0.57],
|
|
570
|
+
[0.2, 0.44],
|
|
571
|
+
[0.22, 0.64],
|
|
572
|
+
[0.28, 0.65],
|
|
573
|
+
[0.23, 0.51],
|
|
574
|
+
[-0., 0.57]])
|
|
575
|
+
row = np.array(
|
|
576
|
+
[0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3,
|
|
577
|
+
3, 3, 3, 4, 4, 5, 5, 5, 5, 5, 6, 7, 7, 7, 7, 8, 8,
|
|
578
|
+
8, 8, 8, 9, 9, 9, 10, 10, 10, 10, 10, 11, 11, 11, 12, 12, 12,
|
|
579
|
+
13, 13, 14, 15, 15, 16, 16, 17, 17, 18, 19, 19, 19, 19, 20, 20, 20,
|
|
580
|
+
20, 20, 20, 21, 21, 21, 21, 22, 22, 23, 23, 23, 23, 23, 24, 24, 24,
|
|
581
|
+
25, 25, 25, 26, 26, 27, 27, 27, 27, 28, 28, 28, 29, 29, 29, 29])
|
|
582
|
+
col = np.array(
|
|
583
|
+
[1, 2, 4, 5, 10, 2, 3, 4, 5, 8, 1, 4, 8, 10, 1, 2, 4,
|
|
584
|
+
5, 8, 10, 2, 9, 2, 5, 7, 8, 9, 5, 1, 4, 5, 8, 1, 2,
|
|
585
|
+
3, 5, 8, 2, 4, 5, 0, 4, 5, 6, 8, 5, 8, 9, 1, 4, 6,
|
|
586
|
+
4, 10, 9, 4, 9, 4, 6, 4, 8, 9, 0, 2, 8, 9, 1, 2, 3,
|
|
587
|
+
7, 8, 9, 2, 3, 4, 5, 2, 5, 1, 2, 3, 4, 8, 2, 4, 8,
|
|
588
|
+
2, 7, 9, 2, 4, 3, 4, 8, 9, 2, 9, 10, 5, 6, 8, 10])
|
|
589
|
+
data = np.array(
|
|
590
|
+
[2, 2, 3, 1, 1, 15, 1, 2, 2, 2, 1, 1, 3, 1, 1, 7, 2,
|
|
591
|
+
1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 1, 1, 1, 1, 2, 3, 3,
|
|
592
|
+
1, 1, 1, 6, 1, 1, 1, 3, 1, 1, 1, 1, 1, 2, 1, 1, 2,
|
|
593
|
+
4, 1, 2, 2, 1, 3, 3, 1, 1, 1, 2, 1, 1, 3, 2, 1, 1,
|
|
594
|
+
4, 1, 2, 1, 1, 1, 1, 1, 1, 3, 1, 2, 2, 2, 3, 1, 2,
|
|
595
|
+
2, 5, 1, 1, 1, 3, 1, 5, 5, 3, 1, 1, 1, 1, 1, 2])
|
|
596
|
+
biadjacency = sparse.csr_matrix((data, (row, col)), shape=(30, 11))
|
|
597
|
+
words = np.array(
|
|
598
|
+
['contribution', 'theory', 'invention', 'time', 'modern',
|
|
599
|
+
'century', 'study', 'logic', 'school', 'author', 'compose'])
|
|
600
|
+
graph = Dataset()
|
|
601
|
+
graph.adjacency = adjacency
|
|
602
|
+
graph.names = names
|
|
603
|
+
graph.position = position
|
|
604
|
+
graph.labels = labels
|
|
605
|
+
graph.names_labels = names_labels
|
|
606
|
+
graph.biadjacency = biadjacency
|
|
607
|
+
graph.names_col = words
|
|
608
|
+
graph.name = 'art-philo-science'
|
|
609
|
+
return graph
|
|
610
|
+
else:
|
|
611
|
+
return adjacency
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"""embedding module"""
|
|
2
|
+
from sknetwork.embedding.base import BaseEmbedding
|
|
3
|
+
from sknetwork.embedding.force_atlas import ForceAtlas
|
|
4
|
+
from sknetwork.embedding.louvain_embedding import LouvainEmbedding
|
|
5
|
+
from sknetwork.embedding.random_projection import RandomProjection
|
|
6
|
+
from sknetwork.embedding.spectral import Spectral
|
|
7
|
+
from sknetwork.embedding.spring import Spring
|
|
8
|
+
from sknetwork.embedding.svd import SVD, GSVD, PCA
|