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 prediktiv modell, er det avgjørende å fastslå hvor godt den presterer før den brukes til reelle prediksjoner.

Modellevaluering måler hvor nøyaktig modellen gir prediksjoner. Metoden .score() gir denne vurderingen.

Å evaluere ytelsen på treningssettet er misvisende, siden modellen sannsynligvis presterer bedre på data den allerede har sett. For å få et realistisk mål, må evalueringen gjøres på usett data.

Formelt sett er målet å lage en modell som generaliserer godt.

Note
Definisjon

Generalisering er modellens evne til å prestere effektivt på nye, ukjente data, utover bare dataene den ble trent på. Det måler hvor nøyaktig modellens prediksjoner kan anvendes på virkelige scenarier utenfor treningsdatasettet.

Dette kan oppnås ved å dele datasettet tilfeldig i to deler: et treningssett for å tilpasse modellen og et testsett for evaluering.

Tren modellen ved å bruke treningssettet og evaluer deretter på testsettet:

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

For å lage et tilfeldig utvalg av dataene, bruk funksjonen train_test_split() fra modulen sklearn.model_selection.

Størrelsen på testsettet avhenger vanligvis av datasettet: 25–40 % for små datasett, 10–30 % for middels store, og mindre enn 10 % for store datasett.

I dette eksemplet, med kun 342 forekomster (et lite datasett), sett av 33 % til testsettet:

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

Her representerer X_train og y_train treningssettet, mens X_test og y_test representerer testsettet.

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

Modellen trenes nå med treningssettet ved bruk av .fit(X_train, y_train) og evalueres med testsettet ved bruk av .score(X_test, y_test).

Siden train_test_split() deler dataene tilfeldig, vil trenings- og testsettene variere for hver kjøring, noe som fører til ulike resultater. Med et større datasett vil disse resultatene bli mer stabile.

question mark

For å oppnå et 67 %/33 % trenings-/testsplit, tar vi de første en tredjedel 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

Suggested prompts:

Can you explain why evaluating on the training set is misleading?

How does the random split affect model performance?

What does the `.score()` method actually measure?

Awesome!

Completion rate improved to 3.13

bookEvaluering av Modellen

Sveip for å vise menyen

Når man bygger en prediktiv modell, er det avgjørende å fastslå hvor godt den presterer før den brukes til reelle prediksjoner.

Modellevaluering måler hvor nøyaktig modellen gir prediksjoner. Metoden .score() gir denne vurderingen.

Å evaluere ytelsen på treningssettet er misvisende, siden modellen sannsynligvis presterer bedre på data den allerede har sett. For å få et realistisk mål, må evalueringen gjøres på usett data.

Formelt sett er målet å lage en modell som generaliserer godt.

Note
Definisjon

Generalisering er modellens evne til å prestere effektivt på nye, ukjente data, utover bare dataene den ble trent på. Det måler hvor nøyaktig modellens prediksjoner kan anvendes på virkelige scenarier utenfor treningsdatasettet.

Dette kan oppnås ved å dele datasettet tilfeldig i to deler: et treningssett for å tilpasse modellen og et testsett for evaluering.

Tren modellen ved å bruke treningssettet og evaluer deretter på testsettet:

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

For å lage et tilfeldig utvalg av dataene, bruk funksjonen train_test_split() fra modulen sklearn.model_selection.

Størrelsen på testsettet avhenger vanligvis av datasettet: 25–40 % for små datasett, 10–30 % for middels store, og mindre enn 10 % for store datasett.

I dette eksemplet, med kun 342 forekomster (et lite datasett), sett av 33 % til testsettet:

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

Her representerer X_train og y_train treningssettet, mens X_test og y_test representerer testsettet.

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

Modellen trenes nå med treningssettet ved bruk av .fit(X_train, y_train) og evalueres med testsettet ved bruk av .score(X_test, y_test).

Siden train_test_split() deler dataene tilfeldig, vil trenings- og testsettene variere for hver kjøring, noe som fører til ulike resultater. Med et større datasett vil disse resultatene bli mer stabile.

question mark

For å oppnå et 67 %/33 % trenings-/testsplit, tar vi de første en tredjedel 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