Encontré esta implementación de Python del algoritmo Jenks Natural Breaks y pude hacer que se ejecute en mi máquina con Windows 7. Es bastante rápido y encuentra los descansos en poco tiempo, considerando el tamaño de mis geodatos. Antes de usar este algoritmo de agrupamiento para mis datos, estaba usando sklearn.clustering.KMeans
(aquí) el algoritmo. El problema que tuve con KMeans fue encontrar el parámetro óptimo del valor de K, pero lo "resolví" lanzando el algoritmo para diferentes valores de K y usando sklearn.metrics.silhouette_score
(aquí) para encontrar el mejor K.
Mi pregunta es: si le digo al algoritmo de Natural Breaks que busque 5 clases (esa sería la K), ¿cómo puedo estar seguro de que este es el número de clases que mejor coinciden con mis datos? ¿Cómo validar que estoy eligiendo el mejor número de descansos?
¡Gracias!
fuente
Respuestas:
Jenks Natural Breaks funciona optimizando la bondad de ajuste de varianza, un valor de 0 a 1 donde 0 = sin ajuste y 1 = ajuste perfecto. La clave para seleccionar el número de clases es encontrar un equilibrio entre detectar diferencias y sobreajustar sus datos. Para determinar el número óptimo de clases, le sugiero que use un valor umbral de GVF que desee y use primero el número de clases que satisfaga este valor.
A continuación se muestra una función para calcular el ajuste de bondad de la variación dada una matriz de valores para clasificar y el número de clases seleccionadas:
Por ejemplo, considere que decide que el GVF debe ser al menos de .8, entonces podría incrementar el número de clases hasta que el GVF esté satisfecho:
fuente