Menu
CoddyTech

Componentes como patrones

Parte de la sección Aprendizaje no supervisado del Journey de Machine Learning de Coddy. Lección 30 de 51.

¿Qué observó PCA? Cada componente tiene 64 pesos, uno por píxel, y components_ contiene una fila por componente:

pca = PCA(n_components=4).fit(X)
print(pca.components_.shape)

Esto imprime (4, 64). Cambia la forma de una fila a 8 por 8 y se convierte en una imagen. cmap="gray_r" significa escala de grises invertida: los pesos grandes son oscuros y los negativos, claros:

ax.imshow(pca.components_[0].reshape(8, 8), cmap="gray_r")

Los primeros cuatro componentes de los dígitos como imágenes de 8 por 8, grises donde un peso está cerca de cero, oscuros donde es grande, claros donde es negativo

El componente 1 es oscuro donde los 4 y los 6 tienen tinta, así que quedan a la derecha del mapa. Una exploración obtiene una puntuación alta cuando su tinta cae sobre píxeles oscuros.

challenge icon

Desafío

Intermedio

Una profesora de caligrafía quiere ver las distintas formas en que las personas escriben un dígito. El programa lee el dígito, y el código inicial guarda sus imágenes en X.

  1. Ajusta PCA con 3 componentes en X.
  2. Dibuja el componente i en axs[i] como una imagen de 8 por 8 con cmap="gray_r", titulada Component 1 a Component 3.
  3. Muestra el gráfico.

Para los 2, dibuja esto. Coddy después describe tus paneles:

Tres imágenes de componentes de 8 por 8 de los 2 escritos a mano, tituladas Component 1, Component 2 y Component 3, cada una con sus propios trazos oscuros y claros

Pruébalo tú mismo

import matplotlib.pyplot as plt
from sklearn.datasets import load_digits
from sklearn.decomposition import PCA

# Cada imagen escaneada de un dígito, leído de la entrada: 64 píxeles por fila
d = int(input())
digits = load_digits()
X = digits.data[digits.target == d]

# No cambies la línea de abajo
fig, axs = plt.subplots(1, 3)

# 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