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
ML-introduktion Med Scikit-learn

bookUtvärdering av Modellen

Vid skapandet 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.

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

Att utvärdera prestanda på träningsuppsättningen ä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 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äningsuppsättning för att anpassa modellen och en testuppsättning 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å datasetet: 25–40 % för små dataset, 10–30 % för medelstora och mindre än 10 % för stora dataset.

I detta exempel, med endast 342 instanser (ett litet dataset), 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 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 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 skapandet 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.

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

Att utvärdera prestanda på träningsuppsättningen ä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 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äningsuppsättning för att anpassa modellen och en testuppsättning 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å datasetet: 25–40 % för små dataset, 10–30 % för medelstora och mindre än 10 % för stora dataset.

I detta exempel, med endast 342 instanser (ett litet dataset), 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 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 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