Evaluering av Modellen
Når man bygger en prediktiv modell, er det avgjørende å fastslå hvor godt den presterer før den brukes til reelle prediksjoner.
Modellevaluering måler hvor nøyaktig modellen gir prediksjoner. Metoden .score()
gir denne vurderingen.
Å evaluere ytelsen på treningssettet er misvisende, siden modellen sannsynligvis presterer bedre på data den allerede har sett. For å få et realistisk mål, må evalueringen gjøres på usett data.
Formelt sett er målet å lage en modell som generaliserer godt.
Generalisering er modellens evne til å prestere effektivt på nye, ukjente data, utover bare dataene den ble trent på. Det måler hvor nøyaktig modellens prediksjoner kan anvendes på virkelige scenarier utenfor treningsdatasettet.
Dette kan oppnås ved å dele datasettet tilfeldig i to deler: et treningssett for å tilpasse modellen og et testsett for evaluering.
Tren modellen ved å bruke treningssettet og evaluer deretter på testsettet:
model.fit(X_train, y_train)
print(model.score(X_test, y_test))
For å lage et tilfeldig utvalg av dataene, bruk funksjonen train_test_split()
fra modulen sklearn.model_selection
.
Størrelsen på testsettet avhenger vanligvis av datasettet: 25–40 % for små datasett, 10–30 % for middels store, og mindre enn 10 % for store datasett.
I dette eksemplet, med kun 342 forekomster (et lite datasett), sett av 33 % til testsettet:
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)
Her representerer X_train
og y_train
treningssettet, mens X_test
og y_test
representerer testsettet.
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 trenes nå med treningssettet ved bruk av .fit(X_train, y_train)
og evalueres med testsettet ved bruk av .score(X_test, y_test)
.
Siden train_test_split()
deler dataene tilfeldig, vil trenings- og testsettene variere for hver kjøring, noe som fører til ulike resultater. Med et større datasett vil disse resultatene bli mer stabile.
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
Can you explain why evaluating on the training set is misleading?
How does the random split affect model performance?
What does the `.score()` method actually measure?
Awesome!
Completion rate improved to 3.13
Evaluering av Modellen
Sveip for å vise menyen
Når man bygger en prediktiv modell, er det avgjørende å fastslå hvor godt den presterer før den brukes til reelle prediksjoner.
Modellevaluering måler hvor nøyaktig modellen gir prediksjoner. Metoden .score()
gir denne vurderingen.
Å evaluere ytelsen på treningssettet er misvisende, siden modellen sannsynligvis presterer bedre på data den allerede har sett. For å få et realistisk mål, må evalueringen gjøres på usett data.
Formelt sett er målet å lage en modell som generaliserer godt.
Generalisering er modellens evne til å prestere effektivt på nye, ukjente data, utover bare dataene den ble trent på. Det måler hvor nøyaktig modellens prediksjoner kan anvendes på virkelige scenarier utenfor treningsdatasettet.
Dette kan oppnås ved å dele datasettet tilfeldig i to deler: et treningssett for å tilpasse modellen og et testsett for evaluering.
Tren modellen ved å bruke treningssettet og evaluer deretter på testsettet:
model.fit(X_train, y_train)
print(model.score(X_test, y_test))
For å lage et tilfeldig utvalg av dataene, bruk funksjonen train_test_split()
fra modulen sklearn.model_selection
.
Størrelsen på testsettet avhenger vanligvis av datasettet: 25–40 % for små datasett, 10–30 % for middels store, og mindre enn 10 % for store datasett.
I dette eksemplet, med kun 342 forekomster (et lite datasett), sett av 33 % til testsettet:
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)
Her representerer X_train
og y_train
treningssettet, mens X_test
og y_test
representerer testsettet.
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 trenes nå med treningssettet ved bruk av .fit(X_train, y_train)
og evalueres med testsettet ved bruk av .score(X_test, y_test)
.
Siden train_test_split()
deler dataene tilfeldig, vil trenings- og testsettene variere for hver kjøring, noe som fører til ulike resultater. Med et større datasett vil disse resultatene bli mer stabile.
Takk for tilbakemeldingene dine!