Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Stimatore Finale | Pipeline
Quizzes & Challenges
Quizzes
Challenges
/
Introduzione al Machine Learning con Python

bookStimatore 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.

Note
Nota

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.

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 5

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Suggested prompts:

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

bookStimatore 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.

Note
Nota

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.

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 5
some-alt