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

bookLopullinen Estimaattori

Tähän asti Pipeline-luokkaa on käytetty pääasiassa esikäsittelyyn. Esikäsittely on kuitenkin vain väliaskel. Kun data on muunnettu, se siirretään yleensä ennustajalle (mallille) tulosten tai ennusteiden tuottamiseksi.

Pipeline-luokka tukee tätä sallimalla estimaattorin—usein ennustajan—olla viimeinen vaihe. Alla oleva kuva havainnollistaa, miten Pipeline toimii, kun sen viimeinen komponentti on ennustaja.

Note
Huomio

Kun pipeline:n .fit()-metodia kutsutaan, jokainen muunnin suorittaa .fit_transform(). Vastaavasti, kun .predict()-metodia kutsutaan, pipeline käyttää .transform()-metodia dataan ennen kuin se siirretään ennustajalle.

.predict()-metodia käytetään pääasiassa uusiin havaintoihin, jotka tulee käsitellä samoilla muunnoksilla kuin koulutusdatan yhteydessä .fit()-vaiheessa.

Miksi .transform()?

Pipeline käyttää .transform()-metodia eikä .fit_transform()-metodia käsitellessään uusia datahavaintoja ennustamista varten. Tämä takaa yhtenäisen muunnoksen koulutus- ja testiaineistojen välillä.

Esimerkiksi, jos aineistossa on kategorinen ominaisuus 'Color', joka täytyy koodata ennen mallin koulutusta:

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

Lopullisen estimaattorin käyttöön riittää, että lisäät sen putken viimeiseksi vaiheeksi. Esimerkiksi seuraavassa luvussa käytämme KNeighborsClassifier-mallia lopullisena estimaattorina.

Syntaksi on seuraava:

# Creating a pipeline
pipe = make_pipeline(ct, 
                     SimpleImputer(strategy='most_frequent'),
					 StandardScaler(),
                     KNeighborsClassifier()
                    )
# Training a model using pipeline
pipe.fit(X, y)
# Predicting new instances
pipe.predict(X_new)
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

Suggested prompts:

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

How does the pipeline handle unseen categories during prediction?

Can you give more examples of using a final estimator in a pipeline?

Awesome!

Completion rate improved to 3.13

bookLopullinen Estimaattori

Pyyhkäise näyttääksesi valikon

Tähän asti Pipeline-luokkaa on käytetty pääasiassa esikäsittelyyn. Esikäsittely on kuitenkin vain väliaskel. Kun data on muunnettu, se siirretään yleensä ennustajalle (mallille) tulosten tai ennusteiden tuottamiseksi.

Pipeline-luokka tukee tätä sallimalla estimaattorin—usein ennustajan—olla viimeinen vaihe. Alla oleva kuva havainnollistaa, miten Pipeline toimii, kun sen viimeinen komponentti on ennustaja.

Note
Huomio

Kun pipeline:n .fit()-metodia kutsutaan, jokainen muunnin suorittaa .fit_transform(). Vastaavasti, kun .predict()-metodia kutsutaan, pipeline käyttää .transform()-metodia dataan ennen kuin se siirretään ennustajalle.

.predict()-metodia käytetään pääasiassa uusiin havaintoihin, jotka tulee käsitellä samoilla muunnoksilla kuin koulutusdatan yhteydessä .fit()-vaiheessa.

Miksi .transform()?

Pipeline käyttää .transform()-metodia eikä .fit_transform()-metodia käsitellessään uusia datahavaintoja ennustamista varten. Tämä takaa yhtenäisen muunnoksen koulutus- ja testiaineistojen välillä.

Esimerkiksi, jos aineistossa on kategorinen ominaisuus 'Color', joka täytyy koodata ennen mallin koulutusta:

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

Lopullisen estimaattorin käyttöön riittää, että lisäät sen putken viimeiseksi vaiheeksi. Esimerkiksi seuraavassa luvussa käytämme KNeighborsClassifier-mallia lopullisena estimaattorina.

Syntaksi on seuraava:

# Creating a pipeline
pipe = make_pipeline(ct, 
                     SimpleImputer(strategy='most_frequent'),
					 StandardScaler(),
                     KNeighborsClassifier()
                    )
# Training a model using pipeline
pipe.fit(X, y)
# Predicting new instances
pipe.predict(X_new)
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 5
some-alt