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 olennaista 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 arvion 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 se on opetettu. Se mittaa, kuinka tarkasti mallin ennusteita 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), varataan 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 ovat opetusjoukko, kun taas X_test ja y_test ovat testijoukko.

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 ajokerralla, mikä johtaa vaihteleviin tuloksiin. Suuremmalla tietoaineistolla nämä tulokset vakiintuisivat.

question mark

Saavuttaaksemme 67%/33% koulutus-testi-jaon, otamme ensimmäisen kolmanneksen riveistä testijoukoksi ja loput koulutusjoukoksi. Onko tämä väite 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 olennaista 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 arvion 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 se on opetettu. Se mittaa, kuinka tarkasti mallin ennusteita 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), varataan 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 ovat opetusjoukko, kun taas X_test ja y_test ovat testijoukko.

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 ajokerralla, mikä johtaa vaihteleviin tuloksiin. Suuremmalla tietoaineistolla nämä tulokset vakiintuisivat.

question mark

Saavuttaaksemme 67%/33% koulutus-testi-jaon, otamme ensimmäisen kolmanneksen riveistä testijoukoksi ja loput koulutusjoukoksi. Onko tämä väite oikein?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 3
some-alt