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 maskininlärning med Python

Utvä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() 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 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.

TrainTestTable

Träna modellen med 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.

train_test_split

Vanligtvis beror testmängdens 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ätts 33 % för testmängden:

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äningsmängden, medan X_test och y_test representerar testmängden.

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))

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 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 en tredjedel av de första raderna som testuppsättning och resten som träningsuppsättning. Är detta påstående korrekt?

Vänligen välj det korrekta svaret

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

Avsnitt 4. Kapitel 3
some-alt