Question

J'ai généré un ensemble de données de distances par paires comme suit:

id_1 id_2 dist_12
id_2 id_3 dist_23

Je veux regrouper ces données afin d'identifier le modèle. J'ai regardé la classification spectrale et dbscan, mais je ne l'ai pas pu arriver à une conclusion et ont été ambiguë sur la façon d'utiliser les implémentations existantes de ces algorithmes. J'ai regardé implémentations Python et Java jusqu'à présent.

Pourriez point quelqu'un me à un tutoriel ou une démonstration sur la façon d'utiliser ces algorithmes de regroupement pour gérer la situation en main?

Était-ce utile?

La solution

Dans la mise en œuvre de la classification spectrale scikit-learn et dbscan vous n'avez pas besoin de précalculer les distances, vous devez saisir les coordonnées échantillons pour tous id_1 ... id_n. Voici une simplification du comparaison exemple documenté d'algorithmes en cluster:

import numpy as np
from sklearn import cluster
from sklearn.preprocessing import StandardScaler

## Prepare the data
X = np.random.rand(1500, 2)
# When reading from a file of the form: `id_n coord_x coord_y`
# you will need this call instead:
# X = np.loadtxt('coords.csv', usecols=(1, 2))
X = StandardScaler().fit_transform(X)

## Instantiate the algorithms
spectral = cluster.SpectralClustering(n_clusters=2,
                                      eigen_solver='arpack',
                                      affinity="nearest_neighbors")
dbscan = cluster.DBSCAN(eps=.2)

## Use the algorithms
spectral_labels = spectral.fit_predict(X)
dbscan_labels = dbscan.fit_predict(X)
Licencié sous: CC-BY-SA avec attribution
scroll top