sklearn plotting means kmeans iris clusters clustering cluster python machine-learning data-mining k-means

python - plotting - Kmeans sin saber la cantidad de clusters?



plotting k means python (7)

Eche un vistazo a esta página de wikipedia para determinar la cantidad de clústeres en un conjunto de datos .

También es posible que desee probar la Agrupación jerárquica aglomerativa . Este enfoque no necesita conocer la cantidad de clústeres, sino que formará grupos de clusters de forma gradual hasta que solo exista uno. Esta técnica también existe en SciPy ( scipy.cluster.hierarchy ).

Esta pregunta ya tiene una respuesta aquí:

Estoy intentando aplicar k-means en un conjunto de puntos de datos de alta dimensión (aproximadamente 50 dimensiones) y me preguntaba si hay implementaciones que encuentren el número óptimo de clusters.

Recuerdo haber leído en alguna parte que la forma en que un algoritmo generalmente hace esto es tal que la distancia entre clusters se maximiza y la distancia dentro del clúster se minimiza, pero no recuerdo dónde lo vi. Sería genial si alguien puede señalarme cualquier recurso que discuta esto. Estoy usando SciPy para k-means actualmente, pero cualquier biblioteca relacionada estaría bien también.

Si hay formas alternativas de lograr el mismo o mejor algoritmo, házmelo saber.


Hay una visualización que debería indicar buenos parámetros. Para k-means, puede visualizar varias ejecuciones con diferentes k usando Graphgrams (vea el paquete de grafos WEKA, mejor obtenido por el administrador de paquetes o here . También puede encontrar una introducción y ejemplos here .


Si el número de clúster no se conoce, ¿por qué no utilizar la agrupación jerárquica?

Al principio, cada aislado es un clúster, luego cada dos clústers se fusionarán si su distancia es inferior a un umbral, el algoritmo finalizará cuando desaparezca la fusión.

El algoritmo de agrupamiento jerárquico puede llevar a cabo una "K" adecuada para sus datos.


También debe asegurarse de que cada dimensión sea, de hecho, independiente. Muchos conjuntos de datos llamados multidimensionales tienen múltiples representaciones de la misma cosa.

No está mal tenerlos en tus datos. Es incorrecto usar versiones múltiples de lo mismo que soporte para un argumento de cluster.

http://en.wikipedia.org/wiki/Cronbach ''s_alpha


Un enfoque es cross-validation .

En esencia, elige un subconjunto de sus datos y lo agrupa en k clusters, y pregunta qué tan bien se agrupa, en comparación con el resto de los datos: ¿está asignando puntos de datos a las mismas membresías del clúster, o están cayendo en diferentes clusters?

Si las membresías son más o menos las mismas, los datos encajan bien en k clusters. De lo contrario, prueba con una k diferente.

Además, podría hacer PCA ( análisis de componentes principales ) para reducir sus 50 dimensiones a un número más manejable. Si una ejecución de PCA sugiere que la mayor parte de su varianza procede de, digamos, 4 de las 50 dimensiones, entonces puede elegir k sobre esa base, para explorar cómo se asignan las cuatro membresías del clúster.


Un enfoque interesante es el de la acumulación de pruebas por Fred y Jain. Esto se basa en combinar múltiples ejecuciones de k-medias con una gran cantidad de clusters, agregándolos en una solución global. Algunos aspectos interesantes del enfoque incluyen que el número de clústeres se determina en el proceso y que los clústeres finales no tienen que ser esféricos.


Una forma de hacerlo es ejecutar k-means con k grande (mucho más grande de lo que crees que es el número correcto), digamos 1000. luego, ejecutando algoritmo de cambio-medio en estos 1000 puntos (shift significa usar toda la información, pero solo "moverás" estos 1000 puntos). cambio medio encontrará la cantidad de grupos entonces. Ejecutar el cambio de medias sin los medios k antes es una posibilidad, pero es demasiado lento, por lo general O (N ^ 2 * # pasos), por lo que ejecutar k-means antes acelerará las cosas: O (N K # pasos)