Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Sluttestimator | Pipeliner
Introduksjon til maskinlæring med Python

bookSluttestimator

Pipeline ble tidligere brukt til forbehandling, men dens egentlige formål er å kjede forbehandling sammen med en sluttprediktor. Det siste steget i en pipeline kan være en hvilken som helst estimator (vanligvis en modell) som produserer prediksjoner.

Note
Merk

Når du kaller .fit(), kjører hver transformer .fit_transform(). Når du kaller .predict(), bruker pipelinen .transform() før data sendes til sluttestimatoren. Dette er nødvendig fordi nye data må transformeres på nøyaktig samme måte som treningsdataene.

Hvorfor .transform()?

Å bruke .fit_transform() på nye data kan endre kodingene (for eksempel i OneHotEncoder), noe som kan føre til feil kolonner og upålitelige prediksjoner. .transform() garanterer konsistent forbehandling, ignorerer ukjente kategorier og beholder samme kolonnerekkefølge.

Slik ser én-hot kodede treningsdata ut:

Her er de nye instansene som skal predikeres:

Hvis .fit_transform() ble brukt på nye instanser, kunne OneHotEncoder generere kolonner i en annen rekkefølge eller til og med introdusere nye. Dette ville føre til at de nye dataene ble transformert inkonsistent med treningssettet, noe som gjør prediksjonene upålitelige.

Ved å bruke .transform() sikres det at de nye dataene kodes nøyaktig som treningsdataene, og kategorier som ikke ble sett under trening ignoreres:

Legge til den endelige estimatoren

Legg ganske enkelt til modellen som det siste steget i pipelinen:

pipe = make_pipeline(
    ct,
    SimpleImputer(strategy='most_frequent'),
    StandardScaler(),
    KNeighborsClassifier()
)
pipe.fit(X, y)
pipe.predict(X_new)

Dette gjør at hele arbeidsflyten—preprosessering + prediksjon—kan kjøres med ett kall.

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 3. Kapittel 5

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

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

bookSluttestimator

Sveip for å vise menyen

Pipeline ble tidligere brukt til forbehandling, men dens egentlige formål er å kjede forbehandling sammen med en sluttprediktor. Det siste steget i en pipeline kan være en hvilken som helst estimator (vanligvis en modell) som produserer prediksjoner.

Note
Merk

Når du kaller .fit(), kjører hver transformer .fit_transform(). Når du kaller .predict(), bruker pipelinen .transform() før data sendes til sluttestimatoren. Dette er nødvendig fordi nye data må transformeres på nøyaktig samme måte som treningsdataene.

Hvorfor .transform()?

Å bruke .fit_transform() på nye data kan endre kodingene (for eksempel i OneHotEncoder), noe som kan føre til feil kolonner og upålitelige prediksjoner. .transform() garanterer konsistent forbehandling, ignorerer ukjente kategorier og beholder samme kolonnerekkefølge.

Slik ser én-hot kodede treningsdata ut:

Her er de nye instansene som skal predikeres:

Hvis .fit_transform() ble brukt på nye instanser, kunne OneHotEncoder generere kolonner i en annen rekkefølge eller til og med introdusere nye. Dette ville føre til at de nye dataene ble transformert inkonsistent med treningssettet, noe som gjør prediksjonene upålitelige.

Ved å bruke .transform() sikres det at de nye dataene kodes nøyaktig som treningsdataene, og kategorier som ikke ble sett under trening ignoreres:

Legge til den endelige estimatoren

Legg ganske enkelt til modellen som det siste steget i pipelinen:

pipe = make_pipeline(
    ct,
    SimpleImputer(strategy='most_frequent'),
    StandardScaler(),
    KNeighborsClassifier()
)
pipe.fit(X, y)
pipe.predict(X_new)

Dette gjør at hele arbeidsflyten—preprosessering + prediksjon—kan kjøres med ett kall.

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 3. Kapittel 5
some-alt