Imputazione in una pipeline
Fa parte della sezione Apprendimento supervisionato del percorso Machine Learning di Coddy. Lezione 47 di 58.
I registri reali hanno lacune e la maggior parte dei modelli non le accetta. Un SimpleImputer riempie ogni lacuna con la media, la mediana o il valore più frequente della colonna.
Completa prima della divisione, e le righe di test contribuiscono a scegliere quel valore: una fuga di dati. Sette profondità d’immersione e un dato mancante:
In una pipeline, fit apprende i valori di riempimento solo dalle righe di addestramento:
from sklearn.impute import SimpleImputer
pipe = make_pipeline(SimpleImputer(strategy="median"), StandardScaler(), model)
pipe.fit(X_train, y_train)
print(pipe[0].statistics_) # i valori di riempimento del primo passaggioPer un registro di immersione (profondità, minuti, temperatura dell'acqua), stampa:
[19. 44. 21.]Anche con le parole, i passaggi relativi ai numeri diventano una corsia del ColumnTransformer:
lane = make_pipeline(SimpleImputer(strategy="median"), StandardScaler())
("numbers", lane, ["depth_m", "minutes"])Sfida
MedioUn servizio forestale prevede quali fulmini appiccano incendi, ma mancano alcune rilevazioni. Il codice iniziale suddivide wildfire.csv e legge una strategia, mean o median.
- Adatta una pipeline composta da un imputatore con quella strategia, uno scaler e una regressione logistica. Stampa la sua accuratezza sul test.
- Per ogni colonna, stampa il valore usato per il riempimento dalla pipeline e quello che si otterrebbe usando tutte le righe di
X, con 1 cifra decimale.
Un'altra foresta, con median:
Test accuracy: 0.840
humidity_pct: fill 46.0, all rows would give 46.0
wind_kmh: fill 29.0, all rows would give 32.0
temp_c: fill 25.0, all rows would give 26.0
days_without_rain: fill 23.0, all rows would give 23.0Nei casi in cui i due valori differiscono, riempire prima della suddivisione avrebbe permesso alle righe del test di influenzare i dati di addestramento.
Provalo tu
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import make_pipeline
# Fulmini in una foresta secca: il fulmine ha provocato un incendio (1) oppure no (0)?
# Mancano alcune rilevazioni meteorologiche.
strikes = pd.read_csv("wildfire.csv")
columns = ["humidity_pct", "wind_kmh", "temp_c", "days_without_rain"]
X = strikes[columns]
y = strikes["fire"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
strategy = 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 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 antispam7Sovraadattamento
Sottoadattamento e sovraadattamentoCurve di apprendimentoRegolarizzazioneSet di validazioneRiepilogo: ottimizzare un albero10Pipeline
PipelineColonne misteImputazione in una pipelineOttimizzazione di una pipelineRiepilogo: pulire e fare previsioni2Vicini 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