Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Sluttestimator | Pipeliner
ML-Introduksjon med Scikit-learn

bookSluttestimator

Fram til nå har Pipeline hovedsakelig blitt brukt til forbehandling. Forbehandling er imidlertid kun 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(). Derimot, 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.

Men ved å bruke .transform() sikrer du at de nye dataene blir kodet nøyaktig som treningsdataene, og ignorerer kategorier som ikke ble sett under trening:

Legge til den endelige estimator

For å bruke den endelige estimator, trenger du bare å legge den til som siste steg i pipelinen. For eksempel, i neste kapittel vil vi 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

Suggested prompts:

Can you explain why using .fit_transform() on new data is problematic?

How does the pipeline handle unseen categories during prediction?

Can you give more examples of using a final estimator in a pipeline?

Awesome!

Completion rate improved to 3.13

bookSluttestimator

Sveip for å vise menyen

Fram til nå har Pipeline hovedsakelig blitt brukt til forbehandling. Forbehandling er imidlertid kun 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(). Derimot, 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.

Men ved å bruke .transform() sikrer du at de nye dataene blir kodet nøyaktig som treningsdataene, og ignorerer kategorier som ikke ble sett under trening:

Legge til den endelige estimator

For å bruke den endelige estimator, trenger du bare å legge den til som siste steg i pipelinen. For eksempel, i neste kapittel vil vi 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