Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Evaluering av Modellen | Modellering
ML Introduksjon med Scikit-learn

bookEvaluering av Modellen

Når man bygger en modell for prediksjoner, er det avgjørende å forstå hvor godt modellen presterer før man gjør faktiske prediksjoner.

Evaluering av en modell innebærer å vurdere hvor godt den gjør det i prediksjoner. Dette er grunnen til at .score()-metoden er viktig.

Å evaluere modellen ved å bruke treningsdatasettet kan imidlertid gi upålitelige resultater, fordi en modell sannsynligvis presterer bedre på data den er trent på enn på nye, ukjente data. Derfor er det viktig å evaluere modellen på data den aldri har sett før for å virkelig forstå ytelsen.

Med mer formelle ord ønsker vi en modell som generaliserer godt.

Dette kan vi gjøre ved å tilfeldig dele dataene inn i et treningssett og et testsett.

Nå kan vi trene modellen på treningssettet og evaluere ytelsen på testsettet.

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

For å tilfeldig dele opp dataene, kan vi bruke funksjonen train_test_split() fra modulen sklearn.model_selection.

Vanligvis bruker vi 25-40 % av dataene til testsettet når datasettet er lite, 10-30 % for et middels stort datasett, og mindre enn 10 % for store datasett.

I vårt eksempel, med kun 342 forekomster — klassifisert som et lite datasett — vil vi tildele 33 % av dataene til testsettet.

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

Vi refererer til treningssettet som X_train og y_train, og testsettet som X_test og y_test.

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

Legg merke til at vi nå bruker treningssettet i .fit(X_train, y_train) og testsettet i .score(X_test, y_test).

Siden train_test_split() deler datasettet tilfeldig, vil trenings- og testsettene være forskjellige hver gang du kjører koden. Du kan kjøre det flere ganger og se at resultatene varierer. Disse resultatene vil bli mer stabile hvis datasettets størrelse øker.

question mark

For å oppnå et 67 %/33 % trenings-/testsplit, tar vi den første tredjedelen av radene som testsett og resten som treningssett. Er denne påstanden korrekt?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 3

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Awesome!

Completion rate improved to 3.13

bookEvaluering av Modellen

Sveip for å vise menyen

Når man bygger en modell for prediksjoner, er det avgjørende å forstå hvor godt modellen presterer før man gjør faktiske prediksjoner.

Evaluering av en modell innebærer å vurdere hvor godt den gjør det i prediksjoner. Dette er grunnen til at .score()-metoden er viktig.

Å evaluere modellen ved å bruke treningsdatasettet kan imidlertid gi upålitelige resultater, fordi en modell sannsynligvis presterer bedre på data den er trent på enn på nye, ukjente data. Derfor er det viktig å evaluere modellen på data den aldri har sett før for å virkelig forstå ytelsen.

Med mer formelle ord ønsker vi en modell som generaliserer godt.

Dette kan vi gjøre ved å tilfeldig dele dataene inn i et treningssett og et testsett.

Nå kan vi trene modellen på treningssettet og evaluere ytelsen på testsettet.

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

For å tilfeldig dele opp dataene, kan vi bruke funksjonen train_test_split() fra modulen sklearn.model_selection.

Vanligvis bruker vi 25-40 % av dataene til testsettet når datasettet er lite, 10-30 % for et middels stort datasett, og mindre enn 10 % for store datasett.

I vårt eksempel, med kun 342 forekomster — klassifisert som et lite datasett — vil vi tildele 33 % av dataene til testsettet.

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

Vi refererer til treningssettet som X_train og y_train, og testsettet som X_test og y_test.

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

Legg merke til at vi nå bruker treningssettet i .fit(X_train, y_train) og testsettet i .score(X_test, y_test).

Siden train_test_split() deler datasettet tilfeldig, vil trenings- og testsettene være forskjellige hver gang du kjører koden. Du kan kjøre det flere ganger og se at resultatene varierer. Disse resultatene vil bli mer stabile hvis datasettets størrelse øker.

question mark

For å oppnå et 67 %/33 % trenings-/testsplit, tar vi den første tredjedelen av radene som testsett og resten som treningssett. Er denne påstanden korrekt?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 3
some-alt