Menu
CoddyTech

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:

Una tabla de 3 por 3 con recuentos, grupos en las filas y los dígitos 1, 7 y 9 en las columnas. El recuento más alto de cada fila está enmarcado: el grupo 0 contiene 166 nueves, el grupo 1 contiene 176 sietes y el grupo 2 contiene 154 unos

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.

challenge icon

Desafío

Intermedio

Pon nombre a tus 10 clústeres. El código inicial contiene km, ajustado sin etiquetas; ahora puedes usar los dígitos de y.

  1. Crea una tabla cruzada de los clústeres frente a y y asigna a cada clúster el nombre de su dígito más frecuente.
  2. 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.
  3. 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
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Aprendizaje no supervisado

Practica por tu cuenta: Compilador de Python online