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 ML med Scikit-learn

bookSluttestimator

Til nå har Pipeline hovedsakelig blitt brukt til forbehandling. Forbehandling er imidlertid bare et mellomtrinn. Når dataene er transformert, sendes de vanligvis videre til en prediktor (modell) for å produsere resultater eller prediksjoner.

Pipeline-klassen støtter dette ved å tillate at estimatoren—ofte en prediktor—er det siste steget. Illustrasjonen nedenfor viser hvordan en Pipeline fungerer når dens siste komponent er en prediktor.

Note
Merk

Når .fit()-metoden til en pipeline kalles, utfører hver transformer .fit_transform(). Til sammenligning, når .predict() kalles, bruker pipelinen .transform() på dataene før de sendes til prediktoren.

Metoden .predict() brukes hovedsakelig for nye instanser, som må gjennomgå de samme transformasjonene som treningsdataene under .fit().

Hvorfor .transform()?

Pipelinen bruker .transform() i stedet for .fit_transform() når den håndterer nye datainstanser for prediksjon. Dette sikrer konsistent transformasjon mellom trenings- og testsett.

For eksempel, vurder et datasett med en kategorisk variabel 'Color' som må kodes før modelltrening:

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ørt 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

For å bruke den endelige estimatoren, må den legges til som siste steg i pipelinen. For eksempel vil vi i neste kapittel bruke en KNeighborsClassifier-modell som endelig estimator.

Syntaksen er som følger:

# 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)
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

Awesome!

Completion rate improved to 3.13

bookSluttestimator

Sveip for å vise menyen

Til nå har Pipeline hovedsakelig blitt brukt til forbehandling. Forbehandling er imidlertid bare et mellomtrinn. Når dataene er transformert, sendes de vanligvis videre til en prediktor (modell) for å produsere resultater eller prediksjoner.

Pipeline-klassen støtter dette ved å tillate at estimatoren—ofte en prediktor—er det siste steget. Illustrasjonen nedenfor viser hvordan en Pipeline fungerer når dens siste komponent er en prediktor.

Note
Merk

Når .fit()-metoden til en pipeline kalles, utfører hver transformer .fit_transform(). Til sammenligning, når .predict() kalles, bruker pipelinen .transform() på dataene før de sendes til prediktoren.

Metoden .predict() brukes hovedsakelig for nye instanser, som må gjennomgå de samme transformasjonene som treningsdataene under .fit().

Hvorfor .transform()?

Pipelinen bruker .transform() i stedet for .fit_transform() når den håndterer nye datainstanser for prediksjon. Dette sikrer konsistent transformasjon mellom trenings- og testsett.

For eksempel, vurder et datasett med en kategorisk variabel 'Color' som må kodes før modelltrening:

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ørt 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

For å bruke den endelige estimatoren, må den legges til som siste steg i pipelinen. For eksempel vil vi i neste kapittel bruke en KNeighborsClassifier-modell som endelig estimator.

Syntaksen er som følger:

# 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)
Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 3. Kapittel 5
some-alt