17°
Portada del artículo: K-Means explicado: le pedí cuatro tipos de día al clima de Chile y encontró Santiago
Machine learningAlgoritmosPythonDatos

K-Means explicado: le pedí cuatro tipos de día al clima de Chile y encontró Santiago

Qué es K-Means, cómo funciona el algoritmo de Lloyd y cuándo engaña, medido con clima diario de siete ciudades de Chile entre 1984 y 2026. Sin escalar, la humedad aporta el 76 % de la separación; con k = 8, solo el 18 % de los inicios al azar queda a menos de 0,1 % de la mejor inercia encontrada; y ningún criterio se pone de acuerdo en cuántos grupos hay.

Efrain Garay 14 de septiembre de 2026

Reproduciendo el resumen

Le pedí a K-Means que repartiera 74.145 días de clima en cuatro grupos, sin decirle de qué ciudad venía cada uno. Uno de los grupos resultó ser casi solo Santiago: el 92 % de los días de Santiago cayó ahí. Parece un descubrimiento, pero conviene mirar qué entró en la distancia: en estos datos, la presión de Santiago es mucho más baja que la de las demás ciudades.

Es la tercera entrega de la serie, con los mismos datos diarios de NASA POWER que usé para Random Forest y la regresión lineal: siete ciudades de La Serena a Punta Arenas, de 1984 a 2026, medidas en un contenedor con 8 CPU. La diferencia es que aquí no hay nada que predecir. K-Means no aprende de respuestas correctas; solo agrupa lo que se parece.

En 52 segundos y narrado: sin decirle las ciudades, K-Means dejó el 92 % de los días de Santiago en un mismo grupo; el algoritmo de Lloyd asigna y mueve centroides; sin escalar, la humedad aporta el 76 % de la separación; la inercia no marca un codo y la silueta queda dentro del ruido entre k = 3, 5 y 6; y con k = 8, solo el 18 % de los inicios al azar queda cerca de la mejor inercia, contra el 38 % de k-means++. Sin sonido por defecto: actívalo en los controles.Verlo en el visualizador de reels →

¿Qué es K-Means?

K-Means reparte las filas de una tabla en k grupos. Cada grupo tiene un centroide, un punto que funciona como su prototipo, y cada fila pertenece al centroide más cercano. El objetivo es que la suma de las distancias al cuadrado entre cada fila y su centroide, llamada inercia, sea lo más chica posible.

Aquí cada fila es un día en una ciudad, descrito por ocho variables: temperatura máxima y mínima, lluvia, viento máximo, radiación, humedad, presión y punto de rocío. No uso la ciudad, la latitud ni la fecha. Lo que salga, sale solo del tiempo que hizo.

Cómo funciona: el algoritmo de Lloyd

La forma clásica de calcularlo es el algoritmo que Stuart Lloyd publicó en 1982, y es el que usa scikit-learn por defecto. Tiene dos pasos que se repiten:

  1. Asignar: cada fila va al centroide más cercano.
  2. Mover: cada centroide se muda al promedio de las filas que le tocaron.

Cada paso solo puede bajar la inercia o dejarla igual, así que el algoritmo termina; en la práctica se detiene cuando los centroides casi no se mueven o al llegar a un máximo de iteraciones. Termina, pero no necesariamente en el mejor resultado posible.

El algoritmo de Lloyd, paso a pasoMáxima del día y humedad, estandarizadas. Se dibujan 300 días de muestra; las asignaciones y los centroides se calcularon con los 74.145 días de entrenamiento.
051015202530350255075100temperatura máxima (°C)humedad (%)iteración 1 · inercia 202.896iteración 2 · inercia 49.035iteración 3 · inercia 32.634iteración 4 · inercia 28.557iteración 5 · inercia 28.063iteración 6 · inercia 27.960iteración 7 · inercia 27.930iteración 8 · inercia 27.917iteración 9 · inercia 27.912iteración 10 · inercia 27.910iteración 11 · inercia 27.910iteración 12 · inercia 27.909iteración 13 · inercia 27.909iteración 14 · inercia 27.909iteración 15 · inercia 27.909iteración 16 · inercia 27.909iteración 17 · inercia 27.909iteración 18 · inercia 27.909iteración 19 · inercia 27.909iteración 20 · inercia 27.909iteración 21 · inercia 27.909iteración 22 · inercia 27.909iteración 23 · inercia 27.909iteración 24 · inercia 27.909iteración 25 · inercia 27.909iteración 25 · inercia 27.909051015202530350255075100temperatura máxima (°C)humedad (%)iteración 1 · inercia 41.781iteración 2 · inercia 31.535iteración 3 · inercia 29.193iteración 4 · inercia 28.423iteración 5 · inercia 28.121iteración 6 · inercia 27.999iteración 7 · inercia 27.954iteración 8 · inercia 27.935iteración 9 · inercia 27.925iteración 10 · inercia 27.920iteración 11 · inercia 27.916iteración 12 · inercia 27.914iteración 13 · inercia 27.912iteración 14 · inercia 27.911iteración 15 · inercia 27.910iteración 16 · inercia 27.909iteración 17 · inercia 27.909iteración 18 · inercia 27.909iteración 19 · inercia 27.909iteración 20 · inercia 27.909iteración 21 · inercia 27.909iteración 22 · inercia 27.909iteración 23 · inercia 27.909iteración 24 · inercia 27.909iteración 25 · inercia 27.909iteración 25 · inercia 27.909

Desde el inicio malo (los cuatro centroides sacados del cuarto más caluroso de los días), la inercia bajó de 202.896 a 27.909 en 25 iteraciones. Desde k-means++ partió en 41.781 y llegó al mismo 27.909, también en 25 iteraciones: con dos variables y cuatro grupos, los dos inicios terminan prácticamente en la misma solución.

Para dibujarlo usé solo dos variables, la máxima y la humedad, y cuatro centroides. En el inicio malo los saqué a propósito del cuarto más caluroso de los días. La inercia parte en 202.896; tras cuatro iteraciones ya bajó a 28.063 y a las 25 se detiene en 27.909. Desde k-means++ parte en 41.781 y llega prácticamente a la misma solución, también en 25 iteraciones. Con dos variables y cuatro grupos, en este caso, el inicio casi no cambió el final. Más abajo aparece cuándo sí lo cambia.

La escala cambia el mapa

K-Means no sabe qué es un grado ni un milímetro. Solo resta números. Si una variable se mueve en un rango grande, domina la distancia aunque no sea la más importante.

La escala cambia el mapaK-Means con k = 4 sobre los 74.145 días de entrenamiento, con tres versiones de la distancia. Los grupos se nombran por su centroide en unidades reales.

parte de la separación entre centroides

  • humedad75,9 %
  • radiación10,6 %
  • máxima6,4 %
  • presión2,7 %
  • punto de rocío2,3 %
  • mínima1,2 %
  • lluvia0,9 %
  • viento0,0 %

parte de los días de cada ciudad en cada grupo · concordancia con la ciudad (ARI) 0,17

lluviosotempladosemisecoseco
La Serena4 %14 %75 %7 %
Valparaíso31 %68 %0 %0 %
Santiago7 %1 %26 %66 %
Concepción37 %37 %25 %1 %
Temuco46 %43 %11 %0 %
Puerto Montt62 %38 %0 %0 %
Punta Arenas71 %29 %0 %0 %

parte de la separación entre centroides

  • presión17,3 %
  • humedad16,7 %
  • máxima15,6 %
  • punto de rocío14,1 %
  • viento11,8 %
  • mínima10,7 %
  • radiación10,5 %
  • lluvia3,4 %

parte de los días de cada ciudad en cada grupo · concordancia con la ciudad (ARI) 0,26

lluviosofríotempladoseco
La Serena9 %0 %77 %14 %
Valparaíso23 %6 %71 %0 %
Santiago7 %1 %0 %92 %
Concepción48 %1 %51 %0 %
Temuco56 %4 %41 %0 %
Puerto Montt74 %0 %26 %0 %
Punta Arenas13 %84 %3 %0 %

parte de la separación entre centroides

No se calculó para esta versión.

parte de los días de cada ciudad en cada grupo · concordancia con la ciudad (ARI) 0,18

lluviosofríotempladoseco
La Serena1 %5 %68 %26 %
Valparaíso2 %9 %88 %0 %
Santiago2 %18 %3 %77 %
Concepción10 %28 %56 %6 %
Temuco10 %42 %46 %2 %
Puerto Montt15 %43 %42 %0 %
Punta Arenas1 %95 %4 %0 %

En crudo, la humedad (de 0 a 100) aporta el 76 % de la separación y el viento el 0,04 %. Estandarizadas, ninguna variable pasa del 17,3 %, y las particiones cruda y estandarizada casi no coinciden (ARI 0,37). Santiago, cuya celda de reanálisis es la más alta (presión media de 88,6 kPa contra 96,1 o más en las demás), deja el 92 % de sus días en un solo grupo estandarizado; sin la presión, todavía el 77 %.

La humedad va de 0 a 100 y su desviación estándar en estos datos es 18,8; la del viento es 2,7. Con las variables crudas, la humedad aportó el 75,9 % de la separación entre los cuatro centroides y el viento el 0,04 %. Estandarizadas, con media 0 y desviación 1, ninguna variable pasó del 17,3 %. Las dos versiones reparten los días de forma bastante distinta: su concordancia medida con el índice de Rand ajustado (ARI), que vale 1 si dos particiones son idénticas y cerca de 0 si coinciden como al azar, es de 0,37.

Con las variables estandarizadas aparece el grupo de Santiago. Su centroide tiene 23,7 °C de máxima, 38,5 % de humedad y 89,6 kPa de presión, y el 92 % de los días de Santiago cae en él. La presión media de Santiago en estos datos es de 88,6 kPa; la de las demás ciudades va de 96,1 a 101,1. Es más baja de lo que marcaría la ciudad misma: NASA POWER entrega el valor de una celda de reanálisis de medio grado de latitud por ⅝ de grado de longitud, y la de Santiago probablemente incluye terreno cordillerano más alto que la ciudad. Para K-Means, eso es una diferencia enorme en una de las ocho columnas.

Para ver qué pasaba sin la presión, repetí el ajuste sin ella. Santiago siguió concentrado: el 77 % de sus días quedó en un mismo grupo, uno seco con 38 % de humedad. Este experimento no aísla cuánto aporta cada variable al grupo; solo muestra que sin la presión Santiago sigue concentrado. Sin la presión también cambió el resto: el régimen lluvioso moderado dio paso a uno de lluvia intensa, con 18,4 mm de promedio.

Nada de esto es un error de K-Means. Es la distancia que yo elegí. Escalar es una decisión, y también lo es qué columnas entran.

¿Cuántos grupos? Tres criterios, tres respuestas

K-Means necesita que le digan k. La tentación es buscar el “codo”: el punto donde agregar grupos deja de bajar mucho la inercia.

Tres criterios, tres respuestasK-Means con 10 inicios para cada k sobre las 8 variables estandarizadas de los 74.145 días de entrenamiento. Elige un k para verlo en cada curva y el tamaño de cada grupo.
inercia (más baja, más compacto)24681012435k140k434.884328.081283.825241.684219.338198.986181.042167.796157.310148.376140.405silueta (más alta, mejor)246810120,280,250,2610,2830,2750,2820,2790,2630,2450,2560,2580,2580,255mejorDavies-Bouldin (más bajo es mejor)246810121,511,151,5151,2601,2821,1521,1601,2221,2331,1811,1591,1541,171mejor

tamaño de los grupos con k = 2

tamaño de los grupos con k = 3

tamaño de los grupos con k = 4

tamaño de los grupos con k = 5

tamaño de los grupos con k = 6

tamaño de los grupos con k = 7

tamaño de los grupos con k = 8

tamaño de los grupos con k = 9

tamaño de los grupos con k = 10

tamaño de los grupos con k = 11

tamaño de los grupos con k = 12

La inercia baja siempre, de 434.884 con 2 grupos a 140.405 con 12, sin un quiebre evidente. Con una muestra, la silueta toca su máximo en k = 3, pero al repetirla en cinco muestras de 10.000 días, k = 3, 5 y 6 quedan dentro del ruido del muestreo (3: 0,2771; 4: 0,2724; 5: 0,2778; 6: 0,2775; desviación estándar de hasta 0,0042); Davies-Bouldin prefiere k = 5. Con siluetas entre 0,25 y 0,28, la separación es débil y ningún criterio probado señala un ganador claro.

La inercia bajó siempre, de 434.884 con dos grupos a 140.405 con doce, sin un quiebre claro. La silueta, que compara cuánto se parece cada día a su grupo contra el grupo vecino, dio su máximo en k = 3 con una muestra de 10.000 días. Al repetirla con cinco muestras distintas, k = 3, 5 y 6 quedaron en 0,2771, 0,2778 y 0,2775, con desviaciones de 0,003 a 0,004 entre muestras: diferencias menores que el ruido del muestreo. El índice de Davies-Bouldin prefirió k = 5.

Todas las siluetas quedaron entre 0,25 y 0,28. En una escala que va de −1 a 1, eso indica grupos poco separados con estas ocho variables, y ninguno de los criterios probados señala un ganador claro. Elegí k = 4 para el resto del post porque cuatro regímenes se pueden nombrar y leer, no porque los datos lo pidan. Esa es, en la práctica, la forma honesta de elegir k: por el uso, revisando que los grupos se entiendan.

El inicio es una lotería

Lloyd converge siempre, pero a un mínimo local que depende de dónde partieron los centroides. Para medir cuánto importa, corrí K-Means con un solo inicio y 100 semillas distintas, al azar y con k-means++, que elige los centroides iniciales lejos unos de otros.

La lotería del inicioK-Means con un solo inicio y 100 semillas distintas por método, sobre las 8 variables estandarizadas de los 74.145 días de entrenamiento. Cada barra cuenta las corridas según cuánto peor quedó su inercia que la mejor de las 200 corridas.
0246810% sobre la mejor inercia encontradainicio al azar92 % · peor +7,8 %928k-means++96 % · peor +7,8 %9640612182430% sobre la mejor inercia encontradainicio al azar18 % · peor +26,1 %1833934411k-means++38 % · peor +6,8 %38319311521

Con k = 4, el 92 % de los inicios al azar y el 96 % de los de k-means++ quedan a menos de 0,1 % de la mejor, y la peor corrida de ambos métodos queda 7,8 % peor. Con k = 8 la lotería se pone difícil: 18 % contra 38 %, y la peor corrida al azar termina 26,1 % sobre la mejor contra 6,8 % de k-means++. Por eso conviene poner n_init mayor que 1 y quedarse con el mejor ajuste: con k-means++, el valor por defecto de scikit-learn hace una sola corrida.

Con k = 4, el 92 % de las corridas al azar y el 96 % de las de k-means++ llegaron a menos de 0,1 % de la mejor inercia encontrada entre las 200 corridas. La peor corrida de los dos métodos quedó 7,8 % por encima: un mínimo local malo existe y ambos lo encuentran alguna vez. Con k = 8 la diferencia se nota: solo el 18 % de las corridas al azar llegó cerca de la mejor, contra el 38 % de k-means++, y la peor al azar quedó 26,1 % por encima, contra 6,8 % de k-means++.

Por eso scikit-learn usa k-means++ por defecto y permite repetir el ajuste varias veces con n_init para quedarse con el de menor inercia. Ojo con el valor por defecto: con k-means++, n_init='auto' hace una sola corrida. Si las corridas fueran independientes, con 38 % de éxito cada una, diez inicios fallarían todos con una probabilidad cercana a 0,8 %.

Cuatro regímenes de tiempo, antes y después

Con k = 4 sobre las variables estandarizadas, los centroides se leen como tipos de día. Los nombré por su centroide en unidades reales: un régimen lluvioso (13,2 °C de máxima, 4,6 mm, 86 % de humedad), uno frío y ventoso (8,4 °C, 10,3 m/s de viento máximo), uno templado (20,8 °C, casi sin lluvia) y el seco de interior de Santiago.

Cuatro regímenes de tiempo, 1984-2012 contra 2016-2026K-Means con k = 4 aprendido en 1984-2012; los días de 2016-2026 se asignan al centroide más cercano sin reentrenar. Barra izquierda de cada mes: entrenamiento; derecha: 2016-2026.
  • lluvioso13,2 / 6,5 °C · 86 % · 4,6 mm · 4,4 m/s · 99,7 kPadías con ≥1 mm: 52 % · 32,8 % de todos los días
  • frío y ventoso8,4 / 3,9 °C · 82 % · 1,8 mm · 10,3 m/s · 99,6 kPadías con ≥1 mm: 43 % · 13,7 % de todos los días
  • seco de interior23,7 / 9,6 °C · 39 % · 0,3 mm · 4,8 m/s · 89,6 kPadías con ≥1 mm: 7 % · 15,1 % de todos los días
  • templado20,8 / 11,9 °C · 72 % · 0,3 mm · 5,6 m/s · 99,0 kPadías con ≥1 mm: 7 % · 38,4 % de todos los días

parte de los días de cada mes, entrenamiento | 2016-2026

EFMAMJJASOND1000

parte de los días de cada ciudad, entrenamiento | 2016-2026

  • La Serena
  • Valparaíso
  • Santiago
  • Concepción
  • Temuco
  • Puerto Montt
  • Punta Arenas

El régimen lluvioso reúne el 32,8 % de los días de entrenamiento y el 30,5 % de los de 2016-2026. El seco de interior es casi todo Santiago y en La Serena pasa de 13,7 % a 18,0 %. Son proporciones de días asignados, no una prueba de tendencia climática: la fuente cambia de producto en los meses recientes y aquí no hay estimación de incertidumbre.

El régimen frío y ventoso es sobre todo Punta Arenas: el 84 % de sus días. En 2016-2026, el templado reúne más del 60 % de los días de noviembre a marzo y el lluvioso llega al 57 % de los días de julio. Llovió al menos 1 mm en el 52 % de los días del régimen lluvioso y en menos del 8 % de los días templados o secos.

Después asigné los días de 2016-2026 a esos mismos centroides, sin reentrenar. El régimen lluvioso pasó del 32,8 % al 30,5 % de los días, y el seco de interior subió en La Serena del 13,7 % al 18,0 %. Son proporciones de días asignados a centroides fijos, no una prueba de cambio climático: no calculé incertidumbre y la fuente cambia de producto en los meses más recientes, como expliqué en el post de Random Forest.

Los días que no calzan

Un centroide es un prototipo, y la distancia a él dice qué tan típico es un día. Eso convierte a K-Means en un detector de rarezas barato.

Los días que no calzanDistancia de cada día a su centroide más cercano, en unidades estandarizadas. Escala vertical de raíz cuadrada, para que se vea la cola.
024681012percentil 99,9 de entrenamiento: 9,45distancia al centroide más cercano
  • 1984-2012
  • 2016-2026

los días de 2016-2026 más lejanos

  • Temuco · 9 de julio de 2020 · 104,2 mm distancia 19,4

    10,9 / 2,5 °C · 95,9 % · 9,2 m/s · 0,8 MJ/m² · 98,1 kPa · 6,9 °C

  • Puerto Montt · 26 de abril de 2020 · 96,1 mm distancia 17,7

    17,7 / 10,6 °C · 89,4 % · 4,5 m/s · 4,5 MJ/m² · 100,6 kPa · 11,3 °C

  • Concepción · 1 de agosto de 2026 · 89,4 mm distancia 16,4

    12,1 / 9,2 °C · 95,0 % · 7,0 m/s · 1,4 MJ/m² · 99,3 kPa · 10,3 °C

  • Concepción · 25 de agosto de 2026 · 78,3 mm distancia 14,3

    11,8 / 10,0 °C · 94,7 % · 5,0 m/s · 0,8 MJ/m² · 99,4 kPa · 10,1 °C

  • Temuco · 16 de junio de 2017 · 77,6 mm distancia 14,3

    12,5 / -0,1 °C · 96,5 % · 7,2 m/s · 0,8 MJ/m² · 97,2 kPa · 4,8 °C

  • La Serena · 11 de mayo de 2017 · 70,4 mm distancia 13,0

    15,5 / 12,8 °C · 84,2 % · 10,0 m/s · 4,6 MJ/m² · 96,0 kPa · 11,7 °C

El 0,051 % de los días de 2016-2026 pasa el umbral de entrenamiento, cerca de la mitad del 0,1 % que marca en entrenamiento. Los más lejanos son días de lluvia intensa, sobre 70 mm: ningún centroide los representa porque K-Means acerca los centroides a donde está la mayoría de los días. La distancia marca un día como raro para este modelo; no dice si el dato está mal o si el evento fue real.

Tomé como umbral el percentil 99,9 de la distancia en entrenamiento, 9,45 en unidades estandarizadas. En 2016-2026 lo pasó el 0,051 % de los días. Los más lejanos de cualquier centroide son días de lluvia intensa: Temuco el 9 de julio de 2020 con 104,2 mm, Puerto Montt el 26 de abril de 2020 con 96,1 mm y Concepción el 1 de agosto de 2026 con 89,4 mm. Ningún centroide los representa: el del régimen lluvioso es un promedio de 4,6 mm, porque los días de lluvia moderada son muchos más.

La distancia no dice si el dato está mal o si el temporal fue real. Solo dice que este modelo lo representa mal. Para un monitor, eso ya es útil: es la alarma que alguien tiene que revisar.

El régimen lluvioso también tiene la silueta más baja: 0,241 en una muestra de 10.000 días de 2016-2026, contra 0,283 a 0,301 de los otros tres.

Qué tan rápido es

K-Means es barato por fila: asignar un día nuevo es comparar ocho números contra cuatro centroides. Con scikit-learn eso tardó 0,042 ms por fila; con una operación directa de NumPy, 0,0024 ms. Entrenar es otra cosa cuando k crece, porque cada iteración compara cada fila contra cada centroide.

Entrenar K-Means con las 101.401 filasMediana de cinco ajustes tras uno de calentamiento, un solo inicio, máximo de 100 iteraciones para K-Means, en el contenedor.
K-Means, 1 hilo3,144 s
K-Means, 8 hilos0,727 s
MiniBatchKMeans, 8 hilos0,13 s

Al doble del tiempo real.

K-Means, 1 hilo0,801 s
K-Means, 8 hilos0,234 s
MiniBatchKMeans, 8 hilos0,047 s

Ocho veces más lento que el tiempo real.

Con k = 256, K-Means hizo 92 iteraciones: 34 ms cada una con 1 hilo y 7,9 ms con 8. Con k = 64 llegó al tope de 100 iteraciones sin converger, así que ese tiempo es un mínimo. MiniBatchKMeans terminó con 3,7 % más inercia con k = 256. Con k = 4 todo tarda menos de 26 ms.

Con 8 hilos, K-Means con k = 256 fue 4,3 veces más rápido que con uno. MiniBatchKMeans, que actualiza los centroides con lotes de 4.096 filas en vez de recorrer la tabla completa, fue 5,6 veces más rápido que K-Means con 8 hilos, a cambio de una inercia 3,7 % mayor. Con k = 4 la diferencia no importa: todos los ajustes tardaron menos de 26 milisegundos.

Dónde vive K-Means en un sistema real

Dónde vive K-Means: las celdas de un índice vectorialFuera de línea, K-Means reparte los vectores guardados en celdas. En línea, una consulta se compara solo con los centroides y busca dentro de las celdas más cercanas.
Dónde vive K-Means: las celdas de un índice vectorialfuera de líneaen líneavectores guardadosK-Meansk centroidesuna lista por centroideconsultacentroides más cercanosnprobe = 2busca solo en 2 de 8 listas

la misma agrupación, en otros lugares

  • paleta de una imagencada píxel toma el color de su centroide
  • segmentos de clientesun centroide por perfil, revisado por personas
  • monitor de distanciaalerta si una fila nueva queda lejos de todos

Medido con las 101.401 filas de esta tabla y k = 256: K-Means tarda 3,14 s con 1 hilo y 0,73 s con 8; MiniBatchKMeans tarda 0,13 s con 8 hilos y termina con 3,7 % más inercia. Los índices a gran escala suelen entrenar con muchos más vectores y dimensiones; estos tiempos solo muestran la forma del compromiso.

  • Índices vectoriales. Los índices de tipo IVF, como IndexIVFFlat de FAISS, parten el espacio en celdas con K-Means. Cada vector guardado queda en la lista de su centroide, y una consulta solo busca dentro de las nprobe celdas más cercanas. Es la misma idea del detector de rarezas, usada para no comparar contra todo.
  • Compresión y paletas. Reducir una imagen a 16 colores es K-Means sobre los píxeles: cada píxel toma el color de su centroide.
  • Segmentación. Agrupar clientes, sesiones o sensores en perfiles que una persona puede revisar y nombrar, como hice con los regímenes de tiempo.
  • Monitoreo. La distancia al centroide más cercano como alarma para filas que no se parecen a nada conocido, igual que los temporales de arriba.

Cuándo lo elegiría: cuando quiero pocos prototipos entendibles, las variables son numéricas y comparables después de escalar, y los grupos pueden ser más o menos redondos. Cuándo no: con grupos alargados o de densidad muy distinta, con muchas variables categóricas, o cuando no puedo justificar k. Y nunca sin revisar qué columnas dominan la distancia.

Fuentes

  • Lloyd, S. P. (1982). «Least squares quantization in PCM». IEEE Transactions on Information Theory, 28(2), 129–137. DOI 10.1109/TIT.1982.1056489.
  • Arthur, D. y Vassilvitskii, S. (2007). «k-means++: The advantages of careful seeding». Proceedings of the Eighteenth Annual ACM-SIAM Symposium on Discrete Algorithms. Society for Industrial and Applied Mathematics.
  • Sculley, D. (2010). «Web-scale k-means clustering». Proceedings of the 19th International Conference on World Wide Web, 1177–1178. DOI 10.1145/1772690.1772862.
  • Rousseeuw, P. J. (1987). «Silhouettes: A graphical aid to the interpretation and validation of cluster analysis». Journal of Computational and Applied Mathematics, 20, 53–65. DOI 10.1016/0377-0427(87)90125-7.
  • Davies, D. L. y Bouldin, D. W. (1979). «A Cluster Separation Measure». IEEE Transactions on Pattern Analysis and Machine Intelligence, PAMI-1(2), 224–227. DOI 10.1109/TPAMI.1979.4766909.
  • scikit-learn, KMeans (Lloyd por defecto, k-means++ y n_init) y la guía de clustering.
  • FAISS, descripción de los índices, sección sobre IndexIVFFlat y nprobe.
  • NASA POWER, Daily API y fuentes de datos.

Comentarios

Todavía no hay comentarios. El primero es tuyo.

Se revisa antes de publicarse. El correo no se guarda ni aparece en ninguna parte.