Mallin 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.
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.
123456789101112131415import 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))
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.
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
Mallin 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.
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.
123456789101112131415import 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))
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.
Kiitos palautteestasi!