Menu
CoddyTech

Componentes como padrões

Parte da seção Aprendizado não supervisionado do Journey de Machine Learning da Coddy. Lição 30 de 51.

O que a PCA analisou? Cada componente tem 64 pesos, um por pixel, e components_ contém uma linha por componente:

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

Isso exibe (4, 64). Reorganize uma linha em uma matriz de 8 por 8 e ela se torna uma imagem. cmap="gray_r" é uma escala de cinza invertida: pesos grandes ficam escuros, os negativos ficam claros:

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

Os quatro primeiros componentes dos dígitos como imagens de 8 por 8, cinza onde um peso está próximo de zero, escuro onde é grande, claro onde é negativo

O Componente 1 é escuro onde os 4s e os 6s têm tinta, então eles ficam à direita do mapa. Uma digitalização recebe uma pontuação alta quando sua tinta cai em pixels escuros.

challenge icon

Desafio

Médio

Um professor de caligrafia quer ver as diferentes maneiras como as pessoas escrevem um dígito. O programa lê o dígito, e o código inicial guarda as imagens digitalizadas em X.

  1. Ajuste o PCA com 3 componentes em X.
  2. Desenhe o componente i em axs[i] como uma imagem de 8 por 8, com cmap="gray_r", intitulada de Component 1 a Component 3.
  3. Exiba o gráfico.

Para os 2, ele desenha isto. Em seguida, Coddy descreve seus painéis:

Três imagens de componentes de 8 por 8 dos números 2 escritos à mão, intituladas Component 1, Component 2 e Component 3, cada uma com seus próprios traços claros e escuros

Experimente você mesmo

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

# Cada imagem digitalizada de um dígito, lido da entrada: 64 pixels por linha
d = int(input())
digits = load_digits()
X = digits.data[digits.target == d]

# Não altere a linha abaixo
fig, axs = plt.subplots(1, 3)

# Escreva seu código abaixo
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Aprendizado não supervisionado

Pratique por conta própria: Compilador de Python online