PCA antes de un modelo
Parte de la sección Aprendizaje no supervisado del Journey de Machine Learning de Coddy. Lección 32 de 51.
Menos características hacen que un modelo sea más rápido y le dan menos ruido que perseguir. PCA puede ir en una canalización, justo antes del 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}")En los dígitos:
La precisión se estabiliza cerca de 20: las otras 44 direcciones no aportan casi nada. Cada partición ajusta PCA con sus propias filas de entrenamiento, así que no hay filtraciones.
¿Unidades mixtas? Coloca StandardScaler() primero, como siempre.
Desafío
IntermedioUn laboratorio de aceite de oliva clasifica los aceites según la luz que absorben en 36 longitudes de onda, además de 4 pruebas de laboratorio. ¿Cuántas características bastarían? El programa lee una holgura.
- Para cada
nensizes, valida cruzadamente (5 particiones) una canalización: escalador, PCA conncomponentes,LogisticRegression(max_iter=1000). Imprime cada puntuación. - Imprime el menor número de componentes cuya puntuación esté dentro de la holgura respecto a la mejor.
Para otro laboratorio y 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 componentsPruébalo tú mismo
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 aceites de oliva: luz absorbida a 36 longitudes de onda, 4 pruebas de laboratorio y la categoría
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())
# Escribe tu código a continuación
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Aprendizaje no supervisado
1Encontrar grupos
Aprender sin etiquetasMedir la similitudK-Means a manoK-Means en scikit-learnRepaso: miembros del gimnasio7PCA en la práctica
Visualizar 64 dimensionesComponentes como patronesComprimir y reconstruirPCA antes de un modeloRepaso: escáner facial10Proyecto: Explorador de dígitos
Observa los dígitosReduce con PCAAgrupa los dígitosPon nombre a los gruposEncuentra los diferentes2Elegir k
InerciaEl método del codoPuntuaciones de siluetaEscalar antes de agruparRepaso: zonas de entrega3Interpretación de los clústeres
Perfilado de clústeresCentros en unidades realesClústeres frente a etiquetas conocidasCuándo falla K-MeansRepaso: cata de téPractica por tu cuenta: Compilador de Python online