Pon nombre a los grupos
Parte de la sección Aprendizaje no supervisado del Journey de Machine Learning de Coddy. Lección 46 de 51.
Los grupos vienen con números, no con nombres. Ahora puedes usar las etiquetas: una tabla de contingencia cuenta qué dígitos quedaron en cada grupo, como estos 1, 7 y 9 en 3 grupos:
Asigna a cada grupo el nombre de su dígito más común. Sus escaneos de ese dígito cuentan como aciertos:
ct = pd.crosstab(km.labels_, y)
names = ct.idxmax(axis=1) # la columna con el valor más alto de cada fila
right = ct.max(axis=1).sum()
print(names.tolist(), right)Esto imprime [9, 7, 1] 496: 496 de 541 escaneos se nombraron a la derecha, por grupos encontrados sin una sola etiqueta.
Desafío
IntermedioPon nombre a tus 10 clústeres. El código inicial contiene km, ajustado sin etiquetas; ahora puedes usar los dígitos de y.
- Crea una tabla cruzada de los clústeres frente a
yy asigna a cada clúster el nombre de su dígito más frecuente. - En el orden de los nombres, imprime las exploraciones de cada clúster clasificadas correctamente, su tamaño y su proporción correcta, como porcentaje entero.
- Imprime el total de exploraciones clasificadas correctamente y el porcentaje con 1 decimal.
Para 5 clústeres:
Cluster named 0: 175 of 177 scans (99%)
Cluster named 2: 160 of 367 scans (44%)
Cluster named 3: 168 of 531 scans (32%)
Cluster named 6: 179 of 359 scans (50%)
Cluster named 7: 176 of 363 scans (48%)
Named right without labels: 858 of 1797 scans (47.7%)¿Cuál de tus clústeres es el más débil y qué se oculta en él?
Pruébalo tú mismo
import pandas as pd
from sklearn.datasets import load_digits
from sklearn.decomposition import PCA
from sklearn.cluster import KMeans
# De Look at the Digits: 1,797 imágenes de 64 píxeles, con intensidad de tinta de 0 a 16
digits = load_digits()
X = digits.data
y = digits.target
# De Shrink with PCA: 80% de la varianza en 13 números por imagen
pca = PCA(n_components=0.8)
X_small = pca.fit_transform(X)
# De Cluster the Digits: 10 grupos encontrados sin etiquetas
km = KMeans(n_clusters=10, n_init=10, random_state=0).fit(X_small)
# 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