PCA prima di un modello
Fa parte della sezione Apprendimento non supervisionato del percorso Machine Learning di Coddy. Lezione 32 di 51.
Meno caratteristiche rendono un modello più veloce e gli danno meno rumore da inseguire. PCA può essere inserita in una pipeline, subito prima del modello:
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}")Sulle cifre:
La precisione si stabilizza intorno a 20: le altre 44 direzioni non aggiungono quasi nulla. Ogni fold adatta PCA alle proprie righe di addestramento, quindi non ci sono perdite di dati.
Unità miste? Metti StandardScaler() per primo, come sempre.
Sfida
MedioUn laboratorio di olio d'oliva classifica gli oli in base alla luce che assorbono a 36 lunghezze d'onda, oltre a 4 test di laboratorio. Quante poche caratteristiche basterebbero? Il programma legge un margine.
- Per ogni
ninsizes, esegui la convalida incrociata (5 fold) di una pipeline: scaler, PCA conncomponenti,LogisticRegression(max_iter=1000). Stampa ogni punteggio. - Stampa il minor numero di componenti con un punteggio entro il margine dal migliore.
Per un altro laboratorio 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 componentsProvalo tu
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 oli d'oliva: luce assorbita a 36 lunghezze d'onda, 4 test di laboratorio e il grado di qualità
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())
# Scrivi il tuo codice qui sotto
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Apprendimento non supervisionato
1Trovare gruppi
Apprendimento senza etichetteMisurare la similaritàK-Means a manoK-Means in scikit-learnRiepilogo: iscritti alla palestra4Clustering gerarchico
Unire passo dopo passoModelli agglomerativiDendrogrammiRiepilogo: razze canine7PCA nella pratica
Vedere 64 dimensioniComponenti come schemiComprimere e ricostruirePCA prima di un modelloRiepilogo: scanner facciale10Progetto: Esplorare le cifre
Osserva le cifreRiduci con PCARaggruppa le cifreDai un nome ai gruppiTrova gli elementi insoliti2Scelta di k
InerziaIl metodo del gomitoPunteggi silhouetteScala prima del clusteringRiepilogo: zone di consegnaEsercitati da solo: Compilatore Python online