Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Slutlig Estimator | Pipelines
Quizzes & Challenges
Quizzes
Challenges
/
Introduktion till maskininlärning med Python

bookSlutlig Estimator

Pipeline användes tidigare för förbehandling, men dess verkliga syfte är att kedja förbehandling med en slutlig prediktor. Det sista steget i en pipeline kan vara vilken estimator som helst (vanligtvis en modell) som genererar prediktioner.

Note
Notera

Vid anrop av .fit() kör varje transformer .fit_transform(). Vid anrop av .predict() använder pipelinen .transform() innan data skickas till den slutliga estimatern. Detta krävs eftersom ny data måste transformeras exakt som träningsdatan.

Varför .transform()?

Att använda .fit_transform() på ny data kan ändra kodningar (t.ex. i OneHotEncoder), vilket skapar omatchade kolumner och opålitliga prediktioner. .transform() garanterar konsekvent förbehandling, ignorerar okända kategorier och behåller samma kolumnordning.

Så här ser ett one-hot-kodat träningsdata ut:

Här är de nya instanserna att förutsäga:

Om .fit_transform() skulle tillämpas på nya instanser kan OneHotEncoder generera kolumner i en annan ordning eller till och med introducera nya. Detta skulle göra att de nya data transformeras inkonsekvent med träningsuppsättningen, vilket gör förutsägelser opålitliga.

Att använda .transform() säkerställer dock att den nya datan kodas exakt som träningsdatan, och ignorerar kategorier som inte sågs under träningen:

Lägga till den slutliga estimatoren

Lägg helt enkelt till modellen som det sista steget i pipelinen:

pipe = make_pipeline(
    ct,
    SimpleImputer(strategy='most_frequent'),
    StandardScaler(),
    KNeighborsClassifier()
)
pipe.fit(X, y)
pipe.predict(X_new)

Detta gör att hela arbetsflödet—förbehandling + prediktion—kan köras med ett enda anrop.

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 5

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Suggested prompts:

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

How does `.transform()` handle unseen categories in new data?

Can you show an example of a pipeline with a different final estimator?

Awesome!

Completion rate improved to 3.13

bookSlutlig Estimator

Svep för att visa menyn

Pipeline användes tidigare för förbehandling, men dess verkliga syfte är att kedja förbehandling med en slutlig prediktor. Det sista steget i en pipeline kan vara vilken estimator som helst (vanligtvis en modell) som genererar prediktioner.

Note
Notera

Vid anrop av .fit() kör varje transformer .fit_transform(). Vid anrop av .predict() använder pipelinen .transform() innan data skickas till den slutliga estimatern. Detta krävs eftersom ny data måste transformeras exakt som träningsdatan.

Varför .transform()?

Att använda .fit_transform() på ny data kan ändra kodningar (t.ex. i OneHotEncoder), vilket skapar omatchade kolumner och opålitliga prediktioner. .transform() garanterar konsekvent förbehandling, ignorerar okända kategorier och behåller samma kolumnordning.

Så här ser ett one-hot-kodat träningsdata ut:

Här är de nya instanserna att förutsäga:

Om .fit_transform() skulle tillämpas på nya instanser kan OneHotEncoder generera kolumner i en annan ordning eller till och med introducera nya. Detta skulle göra att de nya data transformeras inkonsekvent med träningsuppsättningen, vilket gör förutsägelser opålitliga.

Att använda .transform() säkerställer dock att den nya datan kodas exakt som träningsdatan, och ignorerar kategorier som inte sågs under träningen:

Lägga till den slutliga estimatoren

Lägg helt enkelt till modellen som det sista steget i pipelinen:

pipe = make_pipeline(
    ct,
    SimpleImputer(strategy='most_frequent'),
    StandardScaler(),
    KNeighborsClassifier()
)
pipe.fit(X, y)
pipe.predict(X_new)

Detta gör att hela arbetsflödet—förbehandling + prediktion—kan köras med ett enda anrop.

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 5
some-alt