He hecho un poco de investigación. Me tomó algunos puntos en dos sistemas de coordenadas no métrico (WGS84) y métrica (Polonia 1992).
He utilizado este código:
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)
Entonces me ajuste de nuestro modelo con los datos de la métrica:
brc.fit(data90)
Y graficar los resultados, donde cruza fueron mis puntos y círculos eran mis subgrupos:
c = brc.subcluster_centers_
plt.plot(data90[:,0], data90[:,1], '+')
plt.plot(c[:,0], c[:,1], 'o')
plt.show()
Esto es lo que obtuve:
Usted puede ver, que el valor de umbral era demasiado pequeño, porque en él encontramos el subgrupo en cada punto.
Definición de umbral:
El radio del subgrupo obtiene mediante la fusión de una nueva muestra y el
más cercano subgrupo debe ser menor que el umbral. De lo contrario, una
nuevo subgrupo se inicia.
Así que en este caso tenemos que aumentar este valor.
Para:
brc = Birch(threshold=5000)
fue mucho mejor:
Y el WGS84 puntos para el umbral de 0.5:
brc = Birch(threshold=0.5)
brc.fit(data84)
Sólo un subgrupo, no es bueno. Pero en este caso se debe disminuir el valor de umbral, de modo de 0.05:
brc = Birch(threshold=0.05)
brc.fit(data84)
Tenemos buenos resultados.
Conclusión:
CRS asuntos. Usted necesita encontrar un adecuado valor de umbral, depende de tus datos de sistemas de coordenadas y la distancia entre los puntos. Si no tiene métrica de CRS, el umbral debe ser relativamente menor que con el sistema métrico. Usted tiene que saber la diferencia entre metros y grados, si la distancia entre dos puntos es igual a 10000m, será de menos de 1 grado en WGS84. Verificación de google para obtener más precisa de los valores.
También hay más puntos que n_clusters valor. Está bien, no hay centroides de los clusters, pero subgrupos. Si se intenta predecir algo, o la impresión de las etiquetas, se clasificará el punto de que uno de n_clusters áreas (o de impresión de puntos clasificados a 0,1,2,...,n_clusters etiqueta).
Si usted no quiere tratar diferentes parámetros, siempre se puede tomar otro algoritmo. Muy simple y común algoritmo de clustering es K-means el algoritmo.
http://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html
Se debe encontrar n grupos para los datos sin la atención acerca de los umbrales, etc.