Pipeline
Fa parte della sezione Apprendimento supervisionato del percorso Machine Learning di Coddy. Lezione 45 di 58.
Le tabelle reali arrivano con lacune, parole e scale diverse. In questo capitolo crei un unico oggetto che le pulisce e fa previsioni, una pipeline:
Inizia in piccolo: make_pipeline concatena uno scaler e un modello:
from sklearn.pipeline import make_pipeline
pipe = make_pipeline(StandardScaler(), KNeighborsClassifier())
pipe.fit(X_train, y_train)
print(pipe.score(X_test, y_test))Per 200 saldature di prova, forti o deboli, questo stampa 0.86, rispetto a 0.74 senza ridimensionamento.
fit apprende il ridimensionamento dalle righe di addestramento, poi addestra. Ogni riga successiva viene ridimensionata automaticamente allo stesso modo.
Sfida
MedioUn’azienda di mongolfiere decide ogni sera se il giorno successivo sarà una giornata di volo. Il codice iniziale esegue la scalatura manualmente: l’accuratezza sul test è buona, ma le previsioni non vengono mai scalate, quindi indica yes con qualsiasi condizione meteorologica.
- Sostituiscilo con una pipeline, prima uno scaler e poi k-NN, addestrata sulle righe di training.
- Stampa la sua accuratezza sul test e usala per valutare la previsione.
Un’altra azienda, giorno 20, 32, 7000, 9:
Test accuracy: 0.880
Flying day: noProvalo tu
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.pipeline import make_pipeline
# Días anteriores en una empresa de globos aerostáticos: día apto para volar (1) o no (0)
days = pd.read_csv("balloons.csv")
X = days[["wind_kmh", "gusts_kmh", "visibility_m", "passengers"]].to_numpy()
y = days["flying_day"].to_numpy()
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
# Pronóstico para mañana: viento, ráfagas, visibilidad y pasajeros con reserva
day = np.array([[float(input()), float(input()), float(input()), float(input())]])
# Escalado manual: la puntuación parece correcta, pero el pronóstico nunca se escala
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
model = KNeighborsClassifier()
model.fit(X_train_scaled, y_train)
print(f"Test accuracy: {model.score(X_test_scaled, y_test):.3f}")
if model.predict(day)[0] == 1:
print("Flying day: yes")
else:
print("Flying day: no")
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