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

bookSlutestimator

Indtil nu er Pipeline hovedsageligt blevet brugt til forbehandling. Forbehandling er dog kun et mellemtrin. 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() 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 konsistent transformation mellem trænings- og testdatasæt.

For eksempel, overvej et datasæt med en kategorisk variabel '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 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 brug 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 du blot tilføje den 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

bookSlutestimator

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, 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() 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 konsistent transformation mellem trænings- og testdatasæt.

For eksempel, overvej et datasæt med en kategorisk variabel '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 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 brug 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 du blot tilføje den 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