Evaluering 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
.
123456789101112131415import 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))
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.
Tak for dine kommentarer!
Spørg AI
Spørg AI
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
Evaluering 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
.
123456789101112131415import 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))
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.
Tak for dine kommentarer!