Stimatore Finale
Fino a questo punto, la Pipeline è stata utilizzata principalmente per la pre-elaborazione. Tuttavia, la pre-elaborazione rappresenta solo una fase intermedia. Una volta che i dati sono stati trasformati, vengono generalmente passati a un predittore (modello) per produrre risultati o previsioni.
La classe Pipeline supporta questa funzionalità consentendo che l'estimatore—spesso un predittore—sia l'ultimo passaggio. L'illustrazione seguente mostra come funziona una Pipeline quando il suo ultimo componente è un predittore.
Quando viene chiamato il metodo .fit() di una pipeline, ogni trasformatore esegue .fit_transform(). Al contrario, quando viene chiamato .predict(), la pipeline applica .transform() ai dati prima di passarli al predittore.
Il metodo .predict() viene utilizzato principalmente per nuove istanze, che devono subire le stesse trasformazioni dei dati di addestramento durante .fit().
Perché .transform()?
La pipeline applica .transform() invece di .fit_transform() quando gestisce nuove istanze di dati per la previsione. Questo garantisce una trasformazione coerente tra i set di addestramento e di test.
Ad esempio, si consideri un dataset con una caratteristica categorica 'Color' che deve essere codificata prima dell'addestramento del modello:
Ecco come appare il set di dati di addestramento codificato one-hot:
Ecco le nuove istanze da prevedere:
Se .fit_transform() venisse applicato a nuove istanze, il OneHotEncoder potrebbe generare colonne in un ordine diverso o persino introdurne di nuove. Questo causerebbe una trasformazione dei nuovi dati non coerente con il set di addestramento, rendendo le previsioni inaffidabili.
Tuttavia, l'utilizzo di .transform() garantisce che i nuovi dati vengano codificati esattamente come i dati di addestramento, ignorando le categorie non viste durante l'addestramento:
Aggiunta dell'Estimatore Finale
Per utilizzare l'estimatore finale, è sufficiente aggiungerlo come ultimo passaggio della pipeline. Ad esempio, nel prossimo capitolo utilizzeremo un modello KNeighborsClassifier come estimatore finale.
La sintassi è la seguente:
# Creating a pipeline
pipe = make_pipeline(ct,
SimpleImputer(strategy='most_frequent'),
StandardScaler(),
KNeighborsClassifier()
)
# Training a model using pipeline
pipe.fit(X, y)
# Predicting new instances
pipe.predict(X_new)
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Awesome!
Completion rate improved to 3.13
Stimatore Finale
Scorri per mostrare il menu
Fino a questo punto, la Pipeline è stata utilizzata principalmente per la pre-elaborazione. Tuttavia, la pre-elaborazione rappresenta solo una fase intermedia. Una volta che i dati sono stati trasformati, vengono generalmente passati a un predittore (modello) per produrre risultati o previsioni.
La classe Pipeline supporta questa funzionalità consentendo che l'estimatore—spesso un predittore—sia l'ultimo passaggio. L'illustrazione seguente mostra come funziona una Pipeline quando il suo ultimo componente è un predittore.
Quando viene chiamato il metodo .fit() di una pipeline, ogni trasformatore esegue .fit_transform(). Al contrario, quando viene chiamato .predict(), la pipeline applica .transform() ai dati prima di passarli al predittore.
Il metodo .predict() viene utilizzato principalmente per nuove istanze, che devono subire le stesse trasformazioni dei dati di addestramento durante .fit().
Perché .transform()?
La pipeline applica .transform() invece di .fit_transform() quando gestisce nuove istanze di dati per la previsione. Questo garantisce una trasformazione coerente tra i set di addestramento e di test.
Ad esempio, si consideri un dataset con una caratteristica categorica 'Color' che deve essere codificata prima dell'addestramento del modello:
Ecco come appare il set di dati di addestramento codificato one-hot:
Ecco le nuove istanze da prevedere:
Se .fit_transform() venisse applicato a nuove istanze, il OneHotEncoder potrebbe generare colonne in un ordine diverso o persino introdurne di nuove. Questo causerebbe una trasformazione dei nuovi dati non coerente con il set di addestramento, rendendo le previsioni inaffidabili.
Tuttavia, l'utilizzo di .transform() garantisce che i nuovi dati vengano codificati esattamente come i dati di addestramento, ignorando le categorie non viste durante l'addestramento:
Aggiunta dell'Estimatore Finale
Per utilizzare l'estimatore finale, è sufficiente aggiungerlo come ultimo passaggio della pipeline. Ad esempio, nel prossimo capitolo utilizzeremo un modello KNeighborsClassifier come estimatore finale.
La sintassi è la seguente:
# Creating a pipeline
pipe = make_pipeline(ct,
SimpleImputer(strategy='most_frequent'),
StandardScaler(),
KNeighborsClassifier()
)
# Training a model using pipeline
pipe.fit(X, y)
# Predicting new instances
pipe.predict(X_new)
Grazie per i tuoi commenti!