Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Lopullinen Estimaattori | Osio
Koneoppimisen Perusteet

bookLopullinen Estimaattori

Pipeline-luokkaa käytettiin aiemmin esikäsittelyyn, mutta sen todellinen tarkoitus on ketjuttaa esikäsittely lopulliseen ennustajaan. Putken viimeinen vaihe voi olla mikä tahansa estimaattori (yleensä malli), joka tuottaa ennusteita.

Note
Huomio

Kun kutsutaan .fit(), jokainen muunnin suorittaa .fit_transform(). Kun kutsutaan .predict(), pipeline käyttää .transform() ennen kuin se välittää datan lopulliselle estimaattorille. Tämä on välttämätöntä, koska uusi data täytyy muuntaa täsmälleen samalla tavalla kuin koulutusdata.

Miksi .transform()?

Uuden datan käsittely .fit_transform()-metodilla voisi muuttaa koodauksia (esim. OneHotEncoder), mikä johtaisi yhteensopimattomiin sarakkeisiin ja epäluotettaviin ennusteisiin. .transform() takaa yhtenäisen esikäsittelyn, ohittaa tuntemattomat kategoriat ja säilyttää saman sarakejärjestyksen.

Tältä näyttää one-hot-koodattu koulutusdata:

Tässä ovat uudet ennustettavat havainnot:

Jos .fit_transform() sovellettaisiin uusiin havaintoihin, OneHotEncoder voisi luoda sarakkeet eri järjestyksessä tai jopa lisätä uusia. Tämä johtaisi siihen, että uusi data muunnettaisiin eri tavalla kuin koulutusdata, mikä tekisi ennusteista epäluotettavia.

Kuitenkin käyttämällä .transform()-metodia varmistetaan, että uusi data koodataan täsmälleen samalla tavalla kuin koulutusdata, eikä koulutuksessa näkymättömiä kategorioita huomioida:

Lopullisen estimaattorin lisääminen

Lisää malli yksinkertaisesti putken viimeiseksi vaiheeksi:

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

Tämä mahdollistaa koko työnkulun—esikäsittely + ennustus—suorittamisen yhdellä kutsulla.

question mark

Mitkä väittämät lopullisesta estimaattorista ja esikäsittelystä putkessa ovat oikein?

Select all correct answers

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 21

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

bookLopullinen Estimaattori

Pyyhkäise näyttääksesi valikon

Pipeline-luokkaa käytettiin aiemmin esikäsittelyyn, mutta sen todellinen tarkoitus on ketjuttaa esikäsittely lopulliseen ennustajaan. Putken viimeinen vaihe voi olla mikä tahansa estimaattori (yleensä malli), joka tuottaa ennusteita.

Note
Huomio

Kun kutsutaan .fit(), jokainen muunnin suorittaa .fit_transform(). Kun kutsutaan .predict(), pipeline käyttää .transform() ennen kuin se välittää datan lopulliselle estimaattorille. Tämä on välttämätöntä, koska uusi data täytyy muuntaa täsmälleen samalla tavalla kuin koulutusdata.

Miksi .transform()?

Uuden datan käsittely .fit_transform()-metodilla voisi muuttaa koodauksia (esim. OneHotEncoder), mikä johtaisi yhteensopimattomiin sarakkeisiin ja epäluotettaviin ennusteisiin. .transform() takaa yhtenäisen esikäsittelyn, ohittaa tuntemattomat kategoriat ja säilyttää saman sarakejärjestyksen.

Tältä näyttää one-hot-koodattu koulutusdata:

Tässä ovat uudet ennustettavat havainnot:

Jos .fit_transform() sovellettaisiin uusiin havaintoihin, OneHotEncoder voisi luoda sarakkeet eri järjestyksessä tai jopa lisätä uusia. Tämä johtaisi siihen, että uusi data muunnettaisiin eri tavalla kuin koulutusdata, mikä tekisi ennusteista epäluotettavia.

Kuitenkin käyttämällä .transform()-metodia varmistetaan, että uusi data koodataan täsmälleen samalla tavalla kuin koulutusdata, eikä koulutuksessa näkymättömiä kategorioita huomioida:

Lopullisen estimaattorin lisääminen

Lisää malli yksinkertaisesti putken viimeiseksi vaiheeksi:

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

Tämä mahdollistaa koko työnkulun—esikäsittely + ennustus—suorittamisen yhdellä kutsulla.

question mark

Mitkä väittämät lopullisesta estimaattorista ja esikäsittelystä putkessa ovat oikein?

Select all correct answers

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 21
some-alt