Inercia
Parte de la sección Aprendizaje no supervisado del Journey de Machine Learning de Coddy. Lección 6 de 51.
Este capítulo trata sobre cómo elegir k. Al final, lo elegirás para las entregas de una panadería y trazarás las zonas:
Primero, una puntuación. La inercia suma la distancia al cuadrado de cada punto hasta su propio centro: es pequeña cuando los puntos están cerca de sus centros.
KMeans lo guarda en inertia_. Para las 180 manzanas:
for k in [1, 2, 3, 4]:
km = KMeans(n_clusters=k, n_init=10, random_state=0)
km.fit(X)
print(k, round(km.inertia_))Esto imprime:
1 1718
2 752
3 230
4 196Más centros, radios más cortos: la inercia siempre disminuye a medida que k crece. Con un centro por punto es 0, así que el menor valor no es el mejor.
Desafío
FácilUna alfarería empaqueta jarrones en cajas de unos pocos tamaños. A cada jarrón se le asigna el tamaño más cercano; la inercia mide cuánto se ajustan. El programa lee budget, el mayor desajuste que acepta la alfarería.
- Prueba k = 1, 2, 3 y así sucesivamente: ajusta KMeans a
vasese imprime la inercia de cada k, redondeada. - Detente en el primer k cuya inercia esté dentro del presupuesto e imprímelo.
Para otra alfarería:
k = 1, inertia 15120
k = 2, inertia 4811
k = 3, inertia 1290
Box sizes needed: 3Pruébalo tú mismo
import numpy as np
from sklearn.cluster import KMeans
# No cambies las líneas de abajo
rng = np.random.default_rng(8)
# Cuatro tipos de jarrones: altura y anchura típicas en cm, y cuántos hay de cada tipo
kinds = [(15, 8, 25), (38, 13, 25), (22, 22, 20), (58, 26, 10)]
parts = []
for h, w, n in kinds:
parts.append(np.column_stack([rng.normal(h, 2.5, n), rng.normal(w, 2, n)]))
# 80 jarrones, uno por fila: altura y anchura en cm
vases = np.round(np.concatenate(parts), 1)
# El desajuste máximo, medido como inercia, que acepta la alfarería
budget = int(input())
# Escribe tu código a continuación
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Aprendizaje no supervisado
1Encontrar grupos
Aprender sin etiquetasMedir la similitudK-Means a manoK-Means en scikit-learnRepaso: miembros del gimnasio7PCA en la práctica
Visualizar 64 dimensionesComponentes como patronesComprimir y reconstruirPCA antes de un modeloRepaso: escáner facial10Proyecto: Explorador de dígitos
Observa los dígitosReduce con PCAAgrupa los dígitosPon nombre a los gruposEncuentra los diferentes2Elegir k
InerciaEl método del codoPuntuaciones de siluetaEscalar antes de agruparRepaso: zonas de entrega3Interpretación de los clústeres
Perfilado de clústeresCentros en unidades realesClústeres frente a etiquetas conocidasCuándo falla K-MeansRepaso: cata de téPractica por tu cuenta: Compilador de Python online