Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Utvärdering av Modellen | Modellering
Quizzes & Challenges
Quizzes
Challenges
/
Introduktion till maskininlärning med Python

bookUtvärdering av Modellen

Vid konstruktion av en prediktiv modell är det avgörande att fastställa hur väl den presterar innan den används för faktiska förutsägelser.

Utvärdering av modellen mäter hur exakt modellen gör förutsägelser. Metoden .score() ger denna bedömning.

Att utvärdera prestanda på träningsdata är missvisande, eftersom modellen sannolikt presterar bättre på data den redan har sett. För att få ett realistiskt mått måste utvärderingen göras på osedd data.

Formellt är målet att skapa en modell som generaliserar väl.

Note
Definition

Generaliseringsförmåga är modellens förmåga att prestera effektivt på ny, osedd data, utöver den data som användes vid träningen. Det mäter hur exakt modellens förutsägelser kan tillämpas på verkliga scenarier utanför träningsdatamängden.

Detta kan uppnås genom att slumpmässigt dela datamängden i två delar: en träningsmängd för att anpassa modellen och en testmängd för utvärdering.

Träna modellen med hjälp av träningsuppsättningen och utvärdera den sedan på testuppsättningen:

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

För att skapa en slumpmässig uppdelning av data, använd funktionen train_test_split() från modulen sklearn.model_selection.

Vanligtvis beror testuppsättningens storlek på datamängden: 25–40 % för små datamängder, 10–30 % för medelstora och mindre än 10 % för stora datamängder.

I detta exempel, med endast 342 instanser (en liten datamängd), avsätt 33 % för testuppsättningen:

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

Här representerar X_train och y_train träningsuppsättningen, medan X_test och y_test representerar testuppsättningen.

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

Modellen tränas nu med träningsuppsättningen med hjälp av .fit(X_train, y_train) och utvärderas med testuppsättningen med hjälp av .score(X_test, y_test).

Eftersom train_test_split() delar upp data slumpmässigt, skiljer sig tränings- och testuppsättningarna vid varje körning, vilket leder till varierande poäng. Med ett större dataset skulle dessa poäng bli mer stabila.

question mark

För att uppnå en 67%/33% fördelning mellan träning och test tar vi en tredjedel av de första raderna som testuppsättning och resten som träningsuppsättning. Är detta påstående korrekt?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 3

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Suggested prompts:

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?

bookUtvärdering av Modellen

Svep för att visa menyn

Vid konstruktion av en prediktiv modell är det avgörande att fastställa hur väl den presterar innan den används för faktiska förutsägelser.

Utvärdering av modellen mäter hur exakt modellen gör förutsägelser. Metoden .score() ger denna bedömning.

Att utvärdera prestanda på träningsdata är missvisande, eftersom modellen sannolikt presterar bättre på data den redan har sett. För att få ett realistiskt mått måste utvärderingen göras på osedd data.

Formellt är målet att skapa en modell som generaliserar väl.

Note
Definition

Generaliseringsförmåga är modellens förmåga att prestera effektivt på ny, osedd data, utöver den data som användes vid träningen. Det mäter hur exakt modellens förutsägelser kan tillämpas på verkliga scenarier utanför träningsdatamängden.

Detta kan uppnås genom att slumpmässigt dela datamängden i två delar: en träningsmängd för att anpassa modellen och en testmängd för utvärdering.

Träna modellen med hjälp av träningsuppsättningen och utvärdera den sedan på testuppsättningen:

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

För att skapa en slumpmässig uppdelning av data, använd funktionen train_test_split() från modulen sklearn.model_selection.

Vanligtvis beror testuppsättningens storlek på datamängden: 25–40 % för små datamängder, 10–30 % för medelstora och mindre än 10 % för stora datamängder.

I detta exempel, med endast 342 instanser (en liten datamängd), avsätt 33 % för testuppsättningen:

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

Här representerar X_train och y_train träningsuppsättningen, medan X_test och y_test representerar testuppsättningen.

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

Modellen tränas nu med träningsuppsättningen med hjälp av .fit(X_train, y_train) och utvärderas med testuppsättningen med hjälp av .score(X_test, y_test).

Eftersom train_test_split() delar upp data slumpmässigt, skiljer sig tränings- och testuppsättningarna vid varje körning, vilket leder till varierande poäng. Med ett större dataset skulle dessa poäng bli mer stabila.

question mark

För att uppnå en 67%/33% fördelning mellan träning och test tar vi en tredjedel av de första raderna som testuppsättning och resten som träningsuppsättning. Är detta påstående korrekt?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 3
some-alt