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
ML Introduktion med Scikit-learn

bookEvaluering af Modellen

Når man opbygger 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 nøjagtigt 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 set er målet at skabe en model, der generaliserer godt.

Note
Definition

Generaliserbarhed 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 nøjagtigt 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), tildeles 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ættene variere ved hver kørsel, hvilket fører til forskellige scorer. Med et større datasæt ville 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

Awesome!

Completion rate improved to 3.13

bookEvaluering af Modellen

Stryg for at vise menuen

Når man opbygger 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 nøjagtigt 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 set er målet at skabe en model, der generaliserer godt.

Note
Definition

Generaliserbarhed 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 nøjagtigt 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), tildeles 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ættene variere ved hver kørsel, hvilket fører til forskellige scorer. Med et større datasæt ville 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