Lopullinen 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.
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.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Mahtavaa!
Completion arvosana parantunut arvoon 4.55
Lopullinen 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.
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.
Kiitos palautteestasi!