PCA antes de um modelo
Parte da seção Aprendizado não supervisionado do Journey de Machine Learning da Coddy. Lição 32 de 51.
Menos atributos tornam um modelo mais rápido e dão a ele menos ruído para perseguir. PCA pode ficar em um pipeline, logo antes do modelo:
for n in [2, 5, 10, 20, 40, 64]:
model = make_pipeline(PCA(n_components=n), KNeighborsClassifier())
print(n, f"{cross_val_score(model, X, y, cv=5).mean():.3f}")Nos dígitos:
A acurácia se estabiliza perto de 20: as outras 44 direções quase não acrescentam nada. Cada divisão ajusta o PCA em suas próprias linhas de treinamento, então nada vaza.
Unidades diferentes? Coloque StandardScaler() primeiro, como sempre.
Desafio
MédioUm laboratório de azeite classifica os óleos pela luz que absorvem em 36 comprimentos de onda, além de 4 testes de laboratório. De quantas poucas características daria para precisar? O programa lê uma margem.
- Para cada
nemsizes, faça validação cruzada (5 partições) de um pipeline: padronizador, PCA comncomponentes,LogisticRegression(max_iter=1000). Imprima cada pontuação. - Imprima o menor número de componentes com pontuação dentro da margem em relação à melhor.
Para outro laboratório e 0.05:
2 components: 0.817
3 components: 0.833
4 components: 0.889
5 components: 0.928
10 components: 0.928
20 components: 0.917
40 components: 0.922
Fewest within 0.05 of the best: 4 componentsExperimente você mesmo
import pandas as pd
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import cross_val_score
# 180 azeites de oliva: luz absorvida em 36 comprimentos de onda, 4 testes de laboratório e a classificação
oils = pd.read_csv("oils.csv")
X = oils.drop(columns=["oil", "grade"])
y = oils["grade"]
sizes = [2, 3, 4, 5, 10, 20, 40]
slack = float(input())
# 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