Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Lopullinen Estimaattori | Putkistot
Quizzes & Challenges
Quizzes
Challenges
/
Johdatus koneoppimiseen Pythonilla

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()?

.fit_transform()-metodin käyttäminen uudelle datalle 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 epäjohdonmukaisesti koulutusdatan kanssa, mikä tekisi ennusteista epäluotettavia.

Kuitenkin käyttämällä .transform() 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 putkiston viimeiseksi vaiheeksi:

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

Tämän avulla koko työnkulku—esikäsittely + ennustus—voidaan suorittaa yhdellä kutsulla.

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 5

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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

Awesome!

Completion rate improved to 3.13

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()?

.fit_transform()-metodin käyttäminen uudelle datalle 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 epäjohdonmukaisesti koulutusdatan kanssa, mikä tekisi ennusteista epäluotettavia.

Kuitenkin käyttämällä .transform() 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 putkiston viimeiseksi vaiheeksi:

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

Tämän avulla koko työnkulku—esikäsittely + ennustus—voidaan suorittaa yhdellä kutsulla.

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 5
some-alt