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

bookMallin Arviointi

Kun rakennetaan ennustavaa mallia, on ratkaisevan tärkeää määrittää kuinka hyvin se suoriutuu ennen kuin sitä käytetään todellisiin ennusteisiin.

Mallin arviointi mittaa, kuinka tarkasti malli tekee ennusteita. .score()-metodi tarjoaa tämän arvion.

Suorituskyvyn arviointi koulutusdatalla on harhaanjohtavaa, sillä malli todennäköisesti suoriutuu paremmin datalla, jonka se on jo nähnyt. Realistisen mittauksen saamiseksi arviointi on tehtävä näkemättömällä datalla.

Virallisesti tavoitteena on luoda malli, joka yleistää hyvin.

Note
Määritelmä

Yleistämiskyky tarkoittaa mallin kykyä suoriutua tehokkaasti uudella, aiemmin näkemättömällä datalla, ei pelkästään sillä datalla, jolla malli on opetettu. Se mittaa, kuinka tarkasti mallin ennusteet voidaan soveltaa todellisiin tilanteisiin koulutusdatan ulkopuolella.

Tämä voidaan saavuttaa jakamalla aineisto satunnaisesti kahteen osaan: koulutusjoukkoon mallin opettamista varten ja testijoukkoon arviointia varten.

Kouluta malli käyttämällä opetusjoukkoa ja arvioi se sitten testijoukolla:

model.fit(X_train, y_train)
print(model.score(X_test, y_test))

Luo satunnainen jako datasta käyttämällä train_test_split()-funktiota sklearn.model_selection -moduulista.

Testijoukon koko riippuu tyypillisesti aineistosta: 25–40 % pienille aineistoille, 10–30 % keskisuurille ja alle 10 % suurille aineistoille.

Tässä esimerkissä, jossa on vain 342 havaintoa (pieni aineisto), varaa 33 % testijoukolle:

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)

Tässä X_train ja y_train edustavat opetusjoukkoa, kun taas X_test ja y_test edustavat testijoukkoa.

123456789101112131415
import pandas as pd from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import train_test_split df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_pipelined.csv') # Assign X, y variables (X is already preprocessed and y is already encoded) X, y = df.drop('species', axis=1), df['species'] # Train-test split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33) # Initialize and train a model knn5 = KNeighborsClassifier().fit(X_train, y_train) # Trained 5 neighbors model knn1 = KNeighborsClassifier(n_neighbors=1).fit(X_train, y_train) # Trained 1 neighbor model # Print the scores of both models print('5 Neighbors score:',knn5.score(X_test, y_test)) print('1 Neighbor score:',knn1.score(X_test, y_test))
copy

Malli koulutetaan nyt koulutusjoukolla käyttäen .fit(X_train, y_train) ja arvioidaan testijoukolla käyttäen .score(X_test, y_test).

Koska train_test_split() jakaa datan satunnaisesti, koulutus- ja testijoukot eroavat jokaisella suorituskerralla, mikä johtaa vaihteleviin tuloksiin. Suuremmalla tietoaineistolla nämä tulokset olisivat vakaampia.

question mark

Jotta saavutetaan 67%/33% koulutus-testi-jako, otetaan ensimmäinen kolmasosa riveistä testijoukoksi ja loput koulutusjoukoksi. Onko tämä väittämä oikein?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 3

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

bookMallin Arviointi

Pyyhkäise näyttääksesi valikon

Kun rakennetaan ennustavaa mallia, on ratkaisevan tärkeää määrittää kuinka hyvin se suoriutuu ennen kuin sitä käytetään todellisiin ennusteisiin.

Mallin arviointi mittaa, kuinka tarkasti malli tekee ennusteita. .score()-metodi tarjoaa tämän arvion.

Suorituskyvyn arviointi koulutusdatalla on harhaanjohtavaa, sillä malli todennäköisesti suoriutuu paremmin datalla, jonka se on jo nähnyt. Realistisen mittauksen saamiseksi arviointi on tehtävä näkemättömällä datalla.

Virallisesti tavoitteena on luoda malli, joka yleistää hyvin.

Note
Määritelmä

Yleistämiskyky tarkoittaa mallin kykyä suoriutua tehokkaasti uudella, aiemmin näkemättömällä datalla, ei pelkästään sillä datalla, jolla malli on opetettu. Se mittaa, kuinka tarkasti mallin ennusteet voidaan soveltaa todellisiin tilanteisiin koulutusdatan ulkopuolella.

Tämä voidaan saavuttaa jakamalla aineisto satunnaisesti kahteen osaan: koulutusjoukkoon mallin opettamista varten ja testijoukkoon arviointia varten.

Kouluta malli käyttämällä opetusjoukkoa ja arvioi se sitten testijoukolla:

model.fit(X_train, y_train)
print(model.score(X_test, y_test))

Luo satunnainen jako datasta käyttämällä train_test_split()-funktiota sklearn.model_selection -moduulista.

Testijoukon koko riippuu tyypillisesti aineistosta: 25–40 % pienille aineistoille, 10–30 % keskisuurille ja alle 10 % suurille aineistoille.

Tässä esimerkissä, jossa on vain 342 havaintoa (pieni aineisto), varaa 33 % testijoukolle:

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)

Tässä X_train ja y_train edustavat opetusjoukkoa, kun taas X_test ja y_test edustavat testijoukkoa.

123456789101112131415
import pandas as pd from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import train_test_split df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_pipelined.csv') # Assign X, y variables (X is already preprocessed and y is already encoded) X, y = df.drop('species', axis=1), df['species'] # Train-test split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33) # Initialize and train a model knn5 = KNeighborsClassifier().fit(X_train, y_train) # Trained 5 neighbors model knn1 = KNeighborsClassifier(n_neighbors=1).fit(X_train, y_train) # Trained 1 neighbor model # Print the scores of both models print('5 Neighbors score:',knn5.score(X_test, y_test)) print('1 Neighbor score:',knn1.score(X_test, y_test))
copy

Malli koulutetaan nyt koulutusjoukolla käyttäen .fit(X_train, y_train) ja arvioidaan testijoukolla käyttäen .score(X_test, y_test).

Koska train_test_split() jakaa datan satunnaisesti, koulutus- ja testijoukot eroavat jokaisella suorituskerralla, mikä johtaa vaihteleviin tuloksiin. Suuremmalla tietoaineistolla nämä tulokset olisivat vakaampia.

question mark

Jotta saavutetaan 67%/33% koulutus-testi-jako, otetaan ensimmäinen kolmasosa riveistä testijoukoksi ja loput koulutusjoukoksi. Onko tämä väittämä oikein?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 3
some-alt