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
Introduktion till ML med Scikit-learn

bookUtvärdering av Modellen

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

Modellevaluering mäter hur noggrant modellen gör förutsägelser. Metoden .score() tillhandahåller denna bedömning.

Att utvärdera prestanda på träningsmängden ä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äning. Det mäter hur noggrant 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 storleken på testuppsättningen 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, kommer tränings- och testuppsättningarna att skilja sig åt vid varje körning, vilket leder till varierande poäng. Med en större datamängd 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 den första tredjedelen av 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?

Awesome!

Completion rate improved to 3.13

bookUtvärdering av Modellen

Svep för att visa menyn

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

Modellevaluering mäter hur noggrant modellen gör förutsägelser. Metoden .score() tillhandahåller denna bedömning.

Att utvärdera prestanda på träningsmängden ä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äning. Det mäter hur noggrant 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 storleken på testuppsättningen 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, kommer tränings- och testuppsättningarna att skilja sig åt vid varje körning, vilket leder till varierande poäng. Med en större datamängd 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 den första tredjedelen av 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