I am trying to calculate silhouette_score or silhouette_samples using a sparse matrix but getting the following error:
ValueError: diag requires an array of at least two dimensions
The sample code is as follows:
edges = [
(1, 2, 0.9),
(1, 3, 0.7),
(1, 4, 0.1),
(1, 5, 0),
(1, 6, 0),
(2, 3, 0.8),
(2, 4, 0.2),
(2, 5, 0),
(2, 6, 0.3),
(3, 4, 0.3),
(3, 5, 0.2),
(3, 6, 0.25),
(4, 5, 0.8),
(4, 6, 0.6),
(5, 6, 0.9),
(7, 8, 1.0)]
gg = nx.Graph()
for u,v, w in edges:
gg.add_edge(u, v, weight=w)
adj = nx.adjacency_matrix(gg)
adj.setdiag(0)
from sklearn.metrics import silhouette_score, silhouette_samples
print(silhouette_score(adj, metric='precomputed', labels=labels))
silhouette_samples(adj, metric='precomputed', labels=labels)