2013-08-14 10 views
15

seguendo l'esempio Demo of DBSCAN clustering algorithm di Scikit Learning sto provando a memorizzare in un array la x, y di ogni classe di clusteringDBSCAN in scikit-learn di Python: salvare i punti di cluster in un array

import numpy as np 
from sklearn.cluster import DBSCAN 
from sklearn import metrics 
from sklearn.datasets.samples_generator import make_blobs 
from sklearn.preprocessing import StandardScaler 
from pylab import * 

# Generate sample data 
centers = [[1, 1], [-1, -1], [1, -1]] 
X, labels_true = make_blobs(n_samples=750, centers=centers, cluster_std=0.4, random_state=0) 
X = StandardScaler().fit_transform(X) 

xx, yy = zip(*X) 
scatter(xx,yy) 
show() 

enter image description here

db = DBSCAN(eps=0.3, min_samples=10).fit(X) 
core_samples = db.core_sample_indices_ 
labels = db.labels_ 
n_clusters_ = len(set(labels)) - (1 if -1 in labels else 0) 
print n_clusters_ 
3 

enter image description here

sto cercando di capire l'attuazione DBSCAN da scikit-learn, ma da questo punto io sono avere problemi. Il numero di cluster è 3 (n_clusters_) e desidero memorizzare x, y di ciascun cluster in una matrice

risposta

33

Il primo cluster è X[labels == 0], ecc .:

clusters = [X[labels == i] for i in xrange(n_clusters_)] 

ei valori erratici sono

outliers = X[labels == -1] 
+0

sì, questo è esattamente quello che stavo cercando –

+1

Questa sarebbe una grande aggiunta ai documenti :) –

2

Che cosa intendete per "di ciascun cluster"?

In DBSCAN, i cluster non sono rappresentati come centroidi come in k-means, quindi non esiste una rappresentazione ovvia del cluster eccetto i suoi membri. Hai già la posizione xey dei membri del cluster, poiché sono i dati di input.

Quindi non sono sicuro di quale sia la domanda.

+0

hey Andreas, scusa se non sono stato chiaro. Se vedi in figura 2, ogni punto (x, y) ha un colore diverso a causa del cluster (ad esempio, 3 cluster nell'esempio e i punti posteriori sono disturbi). Vorrei avere una matrice con 3 blocchi. Ogni blocco memorizza i valori dei punti x, y di quel cluter. –

+0

anche un dizionario funziona bene, dove la chiave è l'etichetta –

+1

Hai la posizione x e y dei membri del cluster, ma come puoi sapere in quale cluster questi punti sono? – user3378649

Problemi correlati