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 mellemliggende trin. Når dataene er transformeret, sendes de typisk videre 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(). Omvendt, når .predict() kaldes, anvender pipelinen .transform() på dataene, før de sendes videre til prediktoren.

Metoden .predict() bruges primært til 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 variabel 'Color', der 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 tilføje nye. Dette ville medføre, at de nye data blev transformeret inkonsistent med træningssættet, hvilket gør forudsigelserne upålidelige.

Dog brugen af .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 anvende den endelige estimator skal den blot tilføjes som sidste trin i pipelinen. For eksempel vil vi i næste kapitel bruge en KNeighborsClassifier-model 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)
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 mellemliggende trin. Når dataene er transformeret, sendes de typisk videre 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(). Omvendt, når .predict() kaldes, anvender pipelinen .transform() på dataene, før de sendes videre til prediktoren.

Metoden .predict() bruges primært til 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 variabel 'Color', der 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 tilføje nye. Dette ville medføre, at de nye data blev transformeret inkonsistent med træningssættet, hvilket gør forudsigelserne upålidelige.

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

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 5
some-alt