Agrupación en Clústeres de Matriz numérica 1D [duplicar]


Posible Duplicado:
Cluster de datos unidimensionales de forma óptima?

Así que digamos que tengo una matriz como esta:

[1,1,2,3,10,11,13,67,71]

¿Hay una forma conveniente de particionar la matriz en algo como esto?

[[1,1,2,3],[10,11,13],[67,71]]

Miré a través de preguntas similares, pero la mayoría de la gente sugirió usar k-means para agrupar puntos, como scipy, que es bastante confuso de usar para un principiante como yo. También creo que k-means es más adecuado para dos ¿o más agrupamiento dimensional correcto? ¿Hay alguna forma de particionar un array de N números a muchas particiones/clustering dependiendo de los números?

Algunas personas también sugieren particiones de rango rígido, pero no siempre renderiza los resultados como esperado

Author: Community, 2012-07-17

2 answers

No utilice algoritmos de agrupación multidimensional para un problema unidimensional. Una sola dimensión es mucho más especial de lo que ingenuamente piensas, porque en realidad puedes ordenarla , lo que hace las cosas mucho más fáciles.

De hecho, generalmente ni siquiera se llama clustering, sino, por ejemplo, segmentación o optimización de roturas naturales.

Es posible que desee mirar Jenks Natural Breaks Optimización y métodos estadísticos similares. Densidad del Núcleo Estimación es también un buen método para mirar, con un fondo estadístico fuerte. Los mínimos locales en densidad son buenos lugares para dividir los datos en grupos, con razones estadísticas para hacerlo. KDE es quizás el método más sólido para agrupar datos 1-dimensionales.

Con KDE, de nuevo se hace obvio que los datos 1-dimensionales se comportan mucho mejor. En 1D, tiene mínimos locales; pero en 2D puede tener puntos de sillín y tales puntos de división "tal vez". Ver esto Wikipedia ilustración de un punto de sillín , como cómo tal punto puede o no ser apropiado para dividir clústeres.

 78
Author: Anony-Mousse,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-19 17:59:25

Puede buscar algoritmos de discretización. El problema de discretización 1D es muy similar a lo que está pidiendo. Ellos deciden los puntos de corte, según la frecuencia, la estrategia de binning, etc.

Weka utiliza los siguientes algoritmos en su proceso de discretización.

Weka.filtro.supervisar.atributo.Discretizar

Utiliza el método MDL de Fayyad & Irani o el criterio MDL de Kononeko

Weka.filtro.sin supervisión.atributo.Discretizar

Utiliza binning simple

 5
Author: Atilla Ozgur,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-07-18 10:14:33