Mallin Arviointi
Pyyhkäise näyttääksesi valikon
Kun rakennetaan ennustavaa mallia, on ratkaisevan tärkeää selvittää 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 opetusdatalla 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.
Yleistettävyys 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 data satunnaisesti kahteen osaan: opetusdataan mallin sovittamista varten ja testidataan arviointia varten.
Mallin koulutus opetusdatalla ja arviointi testidatalla:
model.fit(X_train, y_train)
print(model.score(X_test, y_test))
Satunnaisen jaon luomiseen käytetään 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 edustavat opetusjoukkoa, kun taas X_test ja y_test edustavat testijoukkoa.
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 on nyt opetettu opetusjoukolla käyttäen .fit(X_train, y_train) ja arvioitu testijoukolla käyttäen .score(X_test, y_test).
Koska train_test_split() jakaa datan satunnaisesti, opetus- ja testijoukot eroavat jokaisella ajokerralla, mikä johtaa vaihteleviin tuloksiin. Suuremmalla aineistolla nämä tulokset olisivat vakaampia.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme