Evaluering av Modellen
Når man bygger en modell for prediksjoner, er det avgjørende å forstå hvor godt modellen presterer før man gjør faktiske prediksjoner.
Evaluering av en modell innebærer å vurdere hvor godt den gjør det i prediksjoner. Dette er grunnen til at .score()
-metoden er viktig.
Å evaluere modellen ved å bruke treningsdatasettet kan imidlertid gi upålitelige resultater, fordi en modell sannsynligvis presterer bedre på data den er trent på enn på nye, ukjente data. Derfor er det viktig å evaluere modellen på data den aldri har sett før for å virkelig forstå ytelsen.
Med mer formelle ord ønsker vi en modell som generaliserer godt.
Dette kan vi gjøre ved å tilfeldig dele dataene inn i et treningssett og et testsett.
Nå kan vi trene modellen på treningssettet og evaluere ytelsen på testsettet.
model.fit(X_train, y_train)
print(model.score(X_test, y_test))
For å tilfeldig dele opp dataene, kan vi bruke funksjonen train_test_split()
fra modulen sklearn.model_selection
.
Vanligvis bruker vi 25-40 % av dataene til testsettet når datasettet er lite, 10-30 % for et middels stort datasett, og mindre enn 10 % for store datasett.
I vårt eksempel, med kun 342 forekomster — klassifisert som et lite datasett — vil vi tildele 33 % av dataene til testsettet.
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)
Vi refererer til treningssettet som X_train
og y_train
, og testsettet 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))
Legg merke til at vi nå bruker treningssettet i .fit(X_train, y_train)
og testsettet i .score(X_test, y_test)
.
Siden train_test_split()
deler datasettet tilfeldig, vil trenings- og testsettene være forskjellige hver gang du kjører koden. Du kan kjøre det flere ganger og se at resultatene varierer. Disse resultatene vil bli mer stabile hvis datasettets størrelse øker.
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Awesome!
Completion rate improved to 3.13
Evaluering av Modellen
Sveip for å vise menyen
Når man bygger en modell for prediksjoner, er det avgjørende å forstå hvor godt modellen presterer før man gjør faktiske prediksjoner.
Evaluering av en modell innebærer å vurdere hvor godt den gjør det i prediksjoner. Dette er grunnen til at .score()
-metoden er viktig.
Å evaluere modellen ved å bruke treningsdatasettet kan imidlertid gi upålitelige resultater, fordi en modell sannsynligvis presterer bedre på data den er trent på enn på nye, ukjente data. Derfor er det viktig å evaluere modellen på data den aldri har sett før for å virkelig forstå ytelsen.
Med mer formelle ord ønsker vi en modell som generaliserer godt.
Dette kan vi gjøre ved å tilfeldig dele dataene inn i et treningssett og et testsett.
Nå kan vi trene modellen på treningssettet og evaluere ytelsen på testsettet.
model.fit(X_train, y_train)
print(model.score(X_test, y_test))
For å tilfeldig dele opp dataene, kan vi bruke funksjonen train_test_split()
fra modulen sklearn.model_selection
.
Vanligvis bruker vi 25-40 % av dataene til testsettet når datasettet er lite, 10-30 % for et middels stort datasett, og mindre enn 10 % for store datasett.
I vårt eksempel, med kun 342 forekomster — klassifisert som et lite datasett — vil vi tildele 33 % av dataene til testsettet.
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)
Vi refererer til treningssettet som X_train
og y_train
, og testsettet 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))
Legg merke til at vi nå bruker treningssettet i .fit(X_train, y_train)
og testsettet i .score(X_test, y_test)
.
Siden train_test_split()
deler datasettet tilfeldig, vil trenings- og testsettene være forskjellige hver gang du kjører koden. Du kan kjøre det flere ganger og se at resultatene varierer. Disse resultatene vil bli mer stabile hvis datasettets størrelse øker.
Takk for tilbakemeldingene dine!