Escalar antes de agrupar
Parte de la sección Aprendizaje no supervisado del Journey de Machine Learning de Coddy. Lección 9 de 51.
K-means agrupa según la distancia, así que las unidades más grandes dominan. El peso de los gatos de refugio está en gramos y la edad, en años: una diferencia de 500 g eclipsa una de 10 años.
Estandariza primero, como para k-NN, para que cada característica cuente por igual:
X_scaled = StandardScaler().fit_transform(X)
km = KMeans(n_clusters=3, n_init=10, random_state=0)
km.fit(X_scaled)make_pipeline(StandardScaler(), KMeans(...)) hace ambas cosas en un solo modelo. Después, lee cada grupo en unidades originales: calcula el promedio de sus filas originales, X[km.labels_ == c].mean(axis=0).
Desafío
FácilUna aplicación para buscar pisos agrupa 100 anuncios según el alquiler y la distancia a la estación. El código inicial agrupa las columnas sin escalar, y todos sus grupos quedan a unos 3 km: los dólares eclipsan a los kilómetros.
- Escala las dos columnas con
StandardScaler. - Agrupa las filas escaladas. Conserva el informe: lee cada grupo en unidades reales.
Para otra ciudad:
38 flats: $1820 a month, 0.9 km out
33 flats: $1130 a month, 4.2 km out
29 flats: $2760 a month, 1.5 km outPruébalo tú mismo
import pandas as pd
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
# Una fila por piso: alquiler mensual en dólares, distancia a la estación en km
flats = pd.read_csv("flats.csv")
X = flats[["rent", "station_km"]]
# Esto agrupa las columnas sin procesar: corrígelo
km = KMeans(n_clusters=3, n_init=10, random_state=0)
km.fit(X)
# Muestra cada grupo en unidades reales, empezando por el más grande
sizes = pd.Series(km.labels_).value_counts()
for c in sizes.index:
group = flats[km.labels_ == c]
print(f"{sizes[c]} flats: ${round(group['rent'].mean())} a month, {group['station_km'].mean():.1f} km out")
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