Evaluering 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.
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.
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))
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.
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 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.
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.
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))
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.
Tak for dine kommentarer!