2017-11-04 6 views
-1

Die K-Means-Methode kann nicht mit anisotropen Punkten umgehen. Das DBSCAN- und Gaussian Mixture-Modell scheint damit nach scikit-learn arbeiten zu können. Ich habe versucht, beide Ansätze zu verwenden, aber sie funktionieren nicht für meine dataset.Anistropische Punkte Clustering

DBSCAN

I verwendet, um den folgenden Code:

db = DBSCAN(eps=0.1,min_samples=5).fit(X_train,Y_train) 
labels_train=db.labels_ 
# Number of clusters in labels, ignoring noise if present. 
n_clusters_ = len(set(labels_train)) - (1 if -1 in labels_train else 0) 
print('Estimated number of clusters: %d' % n_clusters_) 

und nur 1-Cluster (Geschätzte Anzahl der Cluster: 1) nachgewiesen wurde, wie here gezeigt.

Gaussian Mixture Model

Der Code war wie folgt:

gmm = mixture.GaussianMixture(n_components=2, covariance_type='full') 
gmm.fit(X_train,Y_train) 
labels_train=gmm.predict(X_train) 
print(gmm.bic(X_train)) 

Die beiden Cluster nicht unterschieden here wie gezeigt werden konnte.

Wie kann ich zwei Cluster erkennen?

Antwort

0

Lesen Sie die Dokumentation.

fit (X, Y = keine, sample_weight = None)

X: array oder sparse (CSR) Matrix der Form (N_SAMPLES, n_features) [...]

. ..

y: ignoriert

Also Ihr Aufruf ignoriert die y-Koordinate.

Lieben wir nicht alle Python/Sklearn, weil es Sie nicht einmal davor warnt, aber ignoriert im Stillen y?

X sollten die gesamten Daten sein, nicht nur die x-Koordinaten.

Der Begriff "trainieren" und "vorhersagen" macht keinen Sinn für Clustering. Benutze es nicht. Verwenden Sie nur fit_predict.