Menu
CoddyTech

Reduza com PCA

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

64 pixels são mais do que os dígitos precisam. PCA pode buscar uma proporção da variância em vez de uma contagem de componentes:

Uma curva crescente da proporção da variância dos dígitos' que é preservada pelos primeiros n componentes, íngreme no início e depois plana; uma linha tracejada em 90% a encontra em 21 componentes

n_components=0.9 mantém o menor número de componentes que retém 90%:

pca = PCA(n_components=0.9)
X_small = pca.fit_transform(X)
print(pca.n_components_, X_small.shape)

Isso imprime 21 (1797, 21): um terço dos números, a maior parte da imagem.

Sem escalonador aqui: cada pixel compartilha uma unidade, com valores de tinta de 0 a 16. O escalonamento ampliaria os pixels quase em branco das bordas até se tornarem características completas.

challenge icon

Desafio

Médio

Hora de reduzir os escaneamentos. O programa lê a proporção da variância a ser mantida, como 0.8.

  1. Imprima quantos componentes a PCA precisa para essa proporção nos pixels brutos e, em seguida, nos pixels normalizados.
  2. Mantenha a versão que precisa de menos componentes: imprima o nome dela e o formato dos dados reduzidos.

Para 0.6:

Raw pixels: 7 components
Scaled pixels: 11 components
Keep: raw pixels, shape (1797, 7)

A partir daqui, o projeto mantém 80% da variância.

Experimente você mesmo

from sklearn.datasets import load_digits
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler

# De Look at the Digits: 1,797 imagens de 64 pixels, intensidade da tinta de 0 a 16
digits = load_digits()
X = digits.data
y = digits.target

# A proporção da variância a manter, como 0.8
share = float(input())

# 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