Sluttestimator
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.
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.
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
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
Sluttestimator
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.
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.
Takk for tilbakemeldingene dine!