Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Evaluering af Modellen | Modellering
Quizzes & Challenges
Quizzes
Challenges
/
Introduktion til Maskinlæring med Python

bookEvaluering af Modellen

Ved opbygning af en prædiktiv model er det afgørende at fastslå hvor godt den præsterer, før den anvendes til reelle forudsigelser.

Model-evaluering måler, hvor præcist modellen laver forudsigelser. Metoden .score() giver denne vurdering.

Evaluering af præstationen på træningssættet er misvisende, da modellen sandsynligvis klarer sig bedre på data, den allerede har set. For at opnå et realistisk mål skal evalueringen foretages på usete data.

Formelt er målet at skabe en model, der generaliserer godt.

Note
Definition

Generalization er modellens evne til at præstere effektivt på nye, usete data, ud over blot de data, den er blevet trænet på. Det måler, hvor præcist modellens forudsigelser kan anvendes på virkelige scenarier uden for træningsdatasættet.

Dette kan opnås ved tilfældig opdeling af datasættet i to dele: et træningssæt til at tilpasse modellen og et test-sæt til evaluering.

Træn modellen ved hjælp af træningssættet og evaluer derefter på testdatasættet:

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

For at oprette en tilfældig opdeling af dataene, anvendes funktionen train_test_split() fra modulet sklearn.model_selection.

Typisk afhænger størrelsen på testdatasættet af datasættet: 25–40% for små datasæt, 10–30% for mellemstore, og mindre end 10% for store datasæt.

I dette eksempel, med kun 342 forekomster (et lille datasæt), allokeres 33% til testdatasættet:

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

Her repræsenterer X_train og y_train træningssættet, mens X_test og y_test repræsenterer testdatasættet.

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 trænes nu med træningssættet ved hjælp af .fit(X_train, y_train) og evalueres med test-sættet ved hjælp af .score(X_test, y_test).

Da train_test_split() opdeler data tilfældigt, vil trænings- og test-sæt være forskellige ved hver kørsel, hvilket medfører varierende scorer. Med et større datasæt vil disse scorer blive mere stabile.

question mark

For at opnå en 67%/33% trænings-test opdeling, tager vi den første tredjedel af rækkerne som test-sæt og resten som træningssæt. Er denne påstand korrekt?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 3

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

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?

bookEvaluering af Modellen

Stryg for at vise menuen

Ved opbygning af en prædiktiv model er det afgørende at fastslå hvor godt den præsterer, før den anvendes til reelle forudsigelser.

Model-evaluering måler, hvor præcist modellen laver forudsigelser. Metoden .score() giver denne vurdering.

Evaluering af præstationen på træningssættet er misvisende, da modellen sandsynligvis klarer sig bedre på data, den allerede har set. For at opnå et realistisk mål skal evalueringen foretages på usete data.

Formelt er målet at skabe en model, der generaliserer godt.

Note
Definition

Generalization er modellens evne til at præstere effektivt på nye, usete data, ud over blot de data, den er blevet trænet på. Det måler, hvor præcist modellens forudsigelser kan anvendes på virkelige scenarier uden for træningsdatasættet.

Dette kan opnås ved tilfældig opdeling af datasættet i to dele: et træningssæt til at tilpasse modellen og et test-sæt til evaluering.

Træn modellen ved hjælp af træningssættet og evaluer derefter på testdatasættet:

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

For at oprette en tilfældig opdeling af dataene, anvendes funktionen train_test_split() fra modulet sklearn.model_selection.

Typisk afhænger størrelsen på testdatasættet af datasættet: 25–40% for små datasæt, 10–30% for mellemstore, og mindre end 10% for store datasæt.

I dette eksempel, med kun 342 forekomster (et lille datasæt), allokeres 33% til testdatasættet:

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

Her repræsenterer X_train og y_train træningssættet, mens X_test og y_test repræsenterer testdatasættet.

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 trænes nu med træningssættet ved hjælp af .fit(X_train, y_train) og evalueres med test-sættet ved hjælp af .score(X_test, y_test).

Da train_test_split() opdeler data tilfældigt, vil trænings- og test-sæt være forskellige ved hver kørsel, hvilket medfører varierende scorer. Med et større datasæt vil disse scorer blive mere stabile.

question mark

For at opnå en 67%/33% trænings-test opdeling, tager vi den første tredjedel af rækkerne som test-sæt og resten som træningssæt. Er denne påstand korrekt?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 3
some-alt