Normalizzare le scale per i vicini
Fa parte della sezione Apprendimento supervisionato del percorso Machine Learning di Coddy. Lezione 9 di 58.
k-NN misura la distanza, quindi una caratteristica con valori grandi prevale sulle altre, come avvertito nella sezione 2. Qui la distanza dal fiume, in metri, sovrasta l'altitudine:
Scala prima. Adatta il ridimensionatore solo sulle righe di addestramento, poi trasforma entrambi i set:
scaler = StandardScaler()
X_train_s = scaler.fit_transform(X_train)
X_test_s = scaler.transform(X_test)
model = KNeighborsClassifier()
model.fit(X_train_s, y_train)
print(model.score(X_test_s, y_test))Questo stampa 0.925, in aumento rispetto a 0.6. Le righe di test restano inedite: lo scaler non apprende nulla da esse.
Sfida
FacileUn contatore intelligente indovina quale elettrodomestico è in funzione in base alla sua potenza (watt) e alla durata di funzionamento (minuti), in meter.csv. Il codice iniziale legge k e stampa l'accuratezza di k-NN sulle caratteristiche non scalate.
- Adatta uno
StandardScaleralle righe di addestramento e trasformale entrambe. - Adatta un modello k-NN con lo stesso valore di k alle righe scalate; stampa la sua accuratezza con 3 decimali.
- Stampa il miglioramento.
Per un'altra casa e k = 5:
Unscaled accuracy: 0.65
Scaled accuracy: 0.875
Scaling gains 0.225Provalo tu
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.preprocessing import StandardScaler
# Una riga per ogni ciclo di funzionamento di un elettrodomestico: potenza in watt, durata in minuti, elettrodomestico utilizzato
meter = pd.read_csv("meter.csv")
X = meter[["watts", "minutes"]]
y = meter["appliance"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
k = int(input())
# k-NN sulle caratteristiche grezze
raw_model = KNeighborsClassifier(n_neighbors=k)
raw_model.fit(X_train, y_train)
raw = raw_model.score(X_test, y_test)
print(f"Unscaled accuracy: {round(raw, 3)}")
# 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 supervisionato
1Il tuo primo modello
Imparare dagli esempiInsiemi di addestramento e testAdattare e prevedereValutare un modelloRiepilogo: Ordinatore di semi4Regressione logistica
Previsioni sì o noLa soglia decisionaleI pesi come evidenzePiù classiRiepilogo: filtro antispam2Vicini più prossimi
Come decide k-NNScegliere kConfini decisionaliNormalizzare le scale per i viciniRiepilogo: vicini del vino5Misurare i classificatori
La matrice di confusionePrecisione e richiamoIl punteggio F1Classi sbilanciateCurve ROCRiepilogo: test di screening8Convalida incrociata
Validazione K-foldConfronto equo tra modelliRicerca a grigliaRiepilogo: riparazioni di skateboard11Progetto: specie di pinguini
Incontra i pinguiniPrepara i datiScegli un modelloOttimizza il miglioreDistribuisci il modello3Regressione lineare
Prevedere numeriPiù caratteristicheMisurare gli erroriGrafici dei residuiRiepilogo: noleggio di biciclette6Alberi decisionali
Gli alberi fanno domandeLeggere un alberoProfondità dell’alberoImportanza delle caratteristicheRiepilogo: decisioni sui prestitiEsercitati da solo: Compilatore Python online