Stimatore Finale
Pipeline è stato precedentemente utilizzato per la pre-elaborazione, ma il suo vero scopo è concatenare la pre-elaborazione con un predittore finale. L'ultimo passaggio in una pipeline può essere qualsiasi stimatore (tipicamente un modello) che produce previsioni.
Quando si chiama .fit(), ogni trasformatore esegue .fit_transform().
Quando si chiama .predict(), la pipeline utilizza .transform() prima di inviare i dati allo stimatore finale.
Questo è necessario perché i nuovi dati devono essere trasformati esattamente come i dati di addestramento.
Perché .transform()?
L'utilizzo di .fit_transform() su nuovi dati potrebbe modificare le codifiche (ad esempio, in OneHotEncoder), creando colonne non corrispondenti e previsioni inaffidabili.
.transform() garantisce una pre-elaborazione coerente, ignorando le categorie non viste e mantenendo lo stesso ordine delle colonne.
Ecco come appare un 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 comporterebbe una trasformazione dei nuovi dati non coerente con il set di addestramento, rendendo le predizioni 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
È sufficiente aggiungere il modello come ultimo passaggio della pipeline:
pipe = make_pipeline(
ct,
SimpleImputer(strategy='most_frequent'),
StandardScaler(),
KNeighborsClassifier()
)
pipe.fit(X, y)
pipe.predict(X_new)
Questo consente di eseguire l'intero flusso di lavoro—preprocessing + previsione—con una sola chiamata.
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
Can you explain why using `.fit_transform()` on new data is problematic?
How does `.transform()` handle unseen categories in new data?
Can you show an example of a pipeline with a different final estimator?
Awesome!
Completion rate improved to 3.13
Stimatore Finale
Scorri per mostrare il menu
Pipeline è stato precedentemente utilizzato per la pre-elaborazione, ma il suo vero scopo è concatenare la pre-elaborazione con un predittore finale. L'ultimo passaggio in una pipeline può essere qualsiasi stimatore (tipicamente un modello) che produce previsioni.
Quando si chiama .fit(), ogni trasformatore esegue .fit_transform().
Quando si chiama .predict(), la pipeline utilizza .transform() prima di inviare i dati allo stimatore finale.
Questo è necessario perché i nuovi dati devono essere trasformati esattamente come i dati di addestramento.
Perché .transform()?
L'utilizzo di .fit_transform() su nuovi dati potrebbe modificare le codifiche (ad esempio, in OneHotEncoder), creando colonne non corrispondenti e previsioni inaffidabili.
.transform() garantisce una pre-elaborazione coerente, ignorando le categorie non viste e mantenendo lo stesso ordine delle colonne.
Ecco come appare un 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 comporterebbe una trasformazione dei nuovi dati non coerente con il set di addestramento, rendendo le predizioni 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
È sufficiente aggiungere il modello come ultimo passaggio della pipeline:
pipe = make_pipeline(
ct,
SimpleImputer(strategy='most_frequent'),
StandardScaler(),
KNeighborsClassifier()
)
pipe.fit(X, y)
pipe.predict(X_new)
Questo consente di eseguire l'intero flusso di lavoro—preprocessing + previsione—con una sola chiamata.
Grazie per i tuoi commenti!