Ich habe einige Nachforschungen angestellt. Ich habe einige Punkte in zwei Koordinatensystemen ohne Metrik (WGS84) und Metrik (Polen 1992) genommen.
Ich habe diesen Code verwendet:
from scipy import loadtxt
from sklearn.cluster import Birch
import matplotlib.pyplot as plt
data84 = loadtxt("/home/damian/workspace/84.csv", delimiter=",")
data90 = loadtxt("/home/damian/workspace/90.csv", delimiter=",")
brc = Birch(threshold=0.5)
Dann passe ich unser Modell mit metrischen Daten an:
brc.fit(data90)
Und zeichnen Sie die Ergebnisse auf, wobei Kreuze meine Punkte und Kreise meine Subcluster waren:
c = brc.subcluster_centers_
plt.plot(data90[:,0], data90[:,1], '+')
plt.plot(c[:,0], c[:,1], 'o')
plt.show()
Das habe ich bekommen:
Sie können sehen, dass dieser Schwellenwert zu klein war, weil er in jedem Punkt einen Subcluster gefunden hat.
Definition der Schwelle:
Der Radius des Subclusters, der durch Zusammenführen einer neuen Stichprobe und des nächsten Subclusters erhalten wird, sollte kleiner als der Schwellenwert sein. Andernfalls wird ein neuer Subcluster gestartet.
In diesem Fall müssen wir diesen Wert erhöhen.
Zum:
brc = Birch(threshold=5000)
es war viel besser:
Und die WGS84-Punkte für den Schwellenwert 0,5:
brc = Birch(threshold=0.5)
brc.fit(data84)
Nur ein Subcluster, nicht gut. In diesem Fall sollten wir jedoch den Schwellenwert verringern, also für 0,05:
brc = Birch(threshold=0.05)
brc.fit(data84)
Wir haben schöne Ergebnisse.
Fazit:
CRS ist wichtig. Sie müssen einen geeigneten Schwellenwert finden, der von Ihren Datenkoordinatensystemen und dem Abstand zwischen Punkten abhängt. Wenn Sie nicht metrisches CRS haben, sollte der Schwellenwert relativ kleiner sein als beim metrischen System. Sie müssen den Unterschied zwischen Metern und Grad kennen. Wenn der Abstand zwischen zwei Punkten 10000 m beträgt, beträgt er in WGS84 weniger als 1 Grad. Überprüfen Sie Google auf genauere Werte.
Es gibt auch mehr Punkte als den Wert von n_clusters. Es ist in Ordnung, es gibt keine Schwerpunkte von Clustern, sondern Subcluster. Wenn Sie versuchen, etwas vorherzusagen oder Beschriftungen zu drucken, wird Ihr Punkt in einen der Bereiche n_clusters (oder Druckpunkte, die als Beschriftung 0,1,2, ..., n_clusters klassifiziert sind) klassifiziert.
Wenn Sie keine anderen Parameter ausprobieren möchten, können Sie jederzeit einen anderen Algorithmus verwenden. Sehr einfacher und gebräuchlicher Algorithmus für das Clustering ist der K-Mittelwert-Algorithmus.
http://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html
Es sollte n Cluster für Ihre Daten finden, ohne auf Schwellenwerte usw. zu achten.