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-olion .fit()-metodia kutsutaan, jokainen muunnin suorittaa .fit_transform(). Sen sijaan, kun kutsutaan .predict(), pipeline käyttää .transform()-metodia dataan ennen sen siirtämistä ennustajalle.

.predict()-metodia käytetään pääasiassa uusille havaintoarvoille, 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 havaintoarvoja 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 opetusdata:

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 opetusjoukon kanssa, 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-olion .fit()-metodia kutsutaan, jokainen muunnin suorittaa .fit_transform(). Sen sijaan, kun kutsutaan .predict(), pipeline käyttää .transform()-metodia dataan ennen sen siirtämistä ennustajalle.

.predict()-metodia käytetään pääasiassa uusille havaintoarvoille, 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 havaintoarvoja 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 opetusdata:

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 opetusjoukon kanssa, 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