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()?
.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.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Awesome!
Completion rate improved to 3.13
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()?
.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.
Kiitos palautteestasi!