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 model til forudsigelser, er det afgørende at forstå hvor godt modellen præsterer inden der foretages egentlige forudsigelser.

Evaluering af en model indebærer vurdering af dens præstation i forbindelse med forudsigelser. Derfor er .score()-metoden vigtig.

Dog kan evaluering af modellen ved brug af træningsdatasættet give upålidelige resultater, fordi en model sandsynligvis præsterer bedre på data, den er blevet trænet på, end på nye, usete data. Det er derfor vigtigt at evaluere modellen på data, den aldrig har set før for reelt at forstå dens præstation.

Mere formelt ønsker vi en model, der generaliserer godt.

Dette kan gøres ved tilfældigt at opdele data i et træningssæt og et test-sæt.

Nu kan vi træne modellen på træningssættet og evaluere dens præstation på test-sættet.

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

For at opdele dataene tilfældigt kan vi bruge funktionen train_test_split() fra modulet sklearn.model_selection.

Typisk anvendes 25-40% af dataene til et testdatasæt, når datasættet er lille, 10-30% for et mellemstort datasæt og mindre end 10% for store datasæt.

I vores eksempel, med kun 342 observationer — klassificeret som et lille datasæt — vil vi allokere 33% af dataene til testdatasættet.

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

Vi refererer til træningsdatasættet som X_train og y_train, og testdatasættet 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

Bemærk, at vi nu bruger træningssættet i .fit(X_train, y_train) og test-sættet i .score(X_test, y_test).

Da train_test_split() opdeler datasættet tilfældigt, vil der være forskellige trænings- og test-sæt hver gang du kører koden. Du kan køre det flere gange og se, at scorerne varierer. Disse scorer vil blive mere stabile, hvis datasættets størrelse øges.

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 model til forudsigelser, er det afgørende at forstå hvor godt modellen præsterer inden der foretages egentlige forudsigelser.

Evaluering af en model indebærer vurdering af dens præstation i forbindelse med forudsigelser. Derfor er .score()-metoden vigtig.

Dog kan evaluering af modellen ved brug af træningsdatasættet give upålidelige resultater, fordi en model sandsynligvis præsterer bedre på data, den er blevet trænet på, end på nye, usete data. Det er derfor vigtigt at evaluere modellen på data, den aldrig har set før for reelt at forstå dens præstation.

Mere formelt ønsker vi en model, der generaliserer godt.

Dette kan gøres ved tilfældigt at opdele data i et træningssæt og et test-sæt.

Nu kan vi træne modellen på træningssættet og evaluere dens præstation på test-sættet.

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

For at opdele dataene tilfældigt kan vi bruge funktionen train_test_split() fra modulet sklearn.model_selection.

Typisk anvendes 25-40% af dataene til et testdatasæt, når datasættet er lille, 10-30% for et mellemstort datasæt og mindre end 10% for store datasæt.

I vores eksempel, med kun 342 observationer — klassificeret som et lille datasæt — vil vi allokere 33% af dataene til testdatasættet.

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

Vi refererer til træningsdatasættet som X_train og y_train, og testdatasættet 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

Bemærk, at vi nu bruger træningssættet i .fit(X_train, y_train) og test-sættet i .score(X_test, y_test).

Da train_test_split() opdeler datasættet tilfældigt, vil der være forskellige trænings- og test-sæt hver gang du kører koden. Du kan køre det flere gange og se, at scorerne varierer. Disse scorer vil blive mere stabile, hvis datasættets størrelse øges.

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