PCA
Parte da seção Aprendizado não supervisionado do Journey de Machine Learning da Coddy. Lição 26 de 51.
PCA encontra a direção de maior dispersão, depois a melhor direção em ângulo reto em relação a ela, e assim por diante: os componentes. Nos gêmeos do vinho:
As projeções de cada linha nos primeiros componentes se tornam suas novas características:
from sklearn.decomposition import PCA
scaled = StandardScaler().fit_transform(X)
points = PCA(n_components=2).fit_transform(scaled)
print(X.shape, points.shape)Para todas as 13 medições de vinho, isso imprime (178, 13) (178, 2).
Faça o escalonamento primeiro. A PCA busca dispersão, então um recurso em unidades grandes, como a prolina na casa das centenas, se destaca apenas pelo tamanho:
Desafio
MédioUm laboratório de água testa garrafas de três fontes, com 8 medições cada. Um mapa 2D consegue distinguir as fontes? draw_springs(ax, points) colore quaisquer pontos 2D de acordo com a fonte.
- Padronize
Xe, em seguida, reduza-o a 2 componentes com PCA, empoints. - Imprima o número de características antes e depois.
- Desenhe os pontos com
draw_springse mostre o gráfico.
Para outro laboratório, com 6 medições:
From 6 features to 2O Coddy descreve seu mapa.
Experimente você mesmo
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
# Um laboratório de análise de água: 8 medições para cada uma das 120 garrafas de três nascentes
waters = pd.read_csv("waters.csv")
X = waters.drop(columns="spring")
# Plota pontos 2D em um gráfico de dispersão, com um grupo por nascente e uma legenda
def draw_springs(ax, points):
for spring in ["alpine", "volcanic", "coastal"]:
rows = (waters["spring"] == spring).to_numpy()
ax.scatter(points[rows, 0], points[rows, 1], s=16, label=spring)
ax.legend()
fig, ax = plt.subplots()
ax.set_title("Spring Waters in 2D")
ax.set_xlabel("First component")
ax.set_ylabel("Second component")
# Escreva seu código abaixo
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
1Encontrando Grupos
Aprendendo sem RótulosMedindo a SimilaridadeK-Means à MãoK-Means no scikit-learnRevisão: Frequentadores da Academia4Clustering Hierárquico
Mesclando passo a passoModelos aglomerativosDendrogramasRevisão: raças de cães7PCA na prática
Visualizando 64 dimensõesComponentes como padrõesComprimir e reconstruirPCA antes de um modeloRecapitulação: scanner facial10Projeto: Explorando os Dígitos
Observe os DígitosReduza com PCAAgrupe os DígitosDê Nome aos GruposEncontre os Diferentes2Escolhendo k
InérciaO método do cotoveloPontuações de silhuetaEscale antes de agruparRecapitulando: zonas de entregaPratique por conta própria: Compilador de Python online