Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Endelig Estimator | Pipelines
ML Introduktion med Scikit-learn

bookEndelig Estimator

Indtil nu er Pipeline hovedsageligt blevet brugt til forbehandling. Forbehandling er dog kun et mellemtrin. Når dataene er transformeret, videregives de typisk til en prediktor (model) for at generere resultater eller forudsigelser.

Pipeline-klassen understøtter dette ved at tillade, at estimatoren—ofte en prediktor—er det sidste trin. Illustrationen nedenfor viser, hvordan en Pipeline fungerer, når dens sidste komponent er en prediktor.

Note
Bemærk

Når .fit()-metoden på en pipeline kaldes, udfører hver transformer .fit_transform(). Til sammenligning anvender pipelinen .predict() på dataene, før de videregives til prediktoren, når .transform() kaldes.

Metoden .predict() anvendes primært på nye instanser, som skal gennemgå de samme transformationer som træningsdataene under .fit().

Hvorfor .transform()?

Pipelinen anvender .transform() i stedet for .fit_transform() ved håndtering af nye datainstanser til forudsigelse. Dette sikrer konsekvent transformation mellem trænings- og testdatasæt.

For eksempel, overvej et datasæt med en kategorisk feature 'Color', som skal kodes før modeltræning:

Sådan ser one-hot kodede træningsdata ud:

Her er de nye instanser, der skal forudsiges:

Hvis .fit_transform() blev anvendt på nye instanser, kunne OneHotEncoder generere kolonner i en anden rækkefølge eller endda introducere nye. Dette ville medføre, at de nye data blev transformeret inkonsistent med træningssættet, hvilket gør forudsigelserne upålidelige.

Dog at bruge .transform() sikrer, at de nye data bliver kodet præcis som træningsdataene, og ignorerer kategorier, der ikke blev set under træningen:

Tilføjelse af den endelige estimator

For at bruge den endelige estimator skal du blot tilføje den som sidste trin i pipelinen. For eksempel vil vi i næste kapitel bruge en KNeighborsClassifier-model som den endelige 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)
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 5

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

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

bookEndelig Estimator

Stryg for at vise menuen

Indtil nu er Pipeline hovedsageligt blevet brugt til forbehandling. Forbehandling er dog kun et mellemtrin. Når dataene er transformeret, videregives de typisk til en prediktor (model) for at generere resultater eller forudsigelser.

Pipeline-klassen understøtter dette ved at tillade, at estimatoren—ofte en prediktor—er det sidste trin. Illustrationen nedenfor viser, hvordan en Pipeline fungerer, når dens sidste komponent er en prediktor.

Note
Bemærk

Når .fit()-metoden på en pipeline kaldes, udfører hver transformer .fit_transform(). Til sammenligning anvender pipelinen .predict() på dataene, før de videregives til prediktoren, når .transform() kaldes.

Metoden .predict() anvendes primært på nye instanser, som skal gennemgå de samme transformationer som træningsdataene under .fit().

Hvorfor .transform()?

Pipelinen anvender .transform() i stedet for .fit_transform() ved håndtering af nye datainstanser til forudsigelse. Dette sikrer konsekvent transformation mellem trænings- og testdatasæt.

For eksempel, overvej et datasæt med en kategorisk feature 'Color', som skal kodes før modeltræning:

Sådan ser one-hot kodede træningsdata ud:

Her er de nye instanser, der skal forudsiges:

Hvis .fit_transform() blev anvendt på nye instanser, kunne OneHotEncoder generere kolonner i en anden rækkefølge eller endda introducere nye. Dette ville medføre, at de nye data blev transformeret inkonsistent med træningssættet, hvilket gør forudsigelserne upålidelige.

Dog at bruge .transform() sikrer, at de nye data bliver kodet præcis som træningsdataene, og ignorerer kategorier, der ikke blev set under træningen:

Tilføjelse af den endelige estimator

For at bruge den endelige estimator skal du blot tilføje den som sidste trin i pipelinen. For eksempel vil vi i næste kapitel bruge en KNeighborsClassifier-model som den endelige 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)
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 5
some-alt