Korsvalidering
Svep för att visa menyn
Train-test-uppdelningen har två nackdelar:
- Mindre träningsdata, vilket kan minska modellens kvalitet;
- Beroende av den slumpmässiga uppdelningen, vilket leder till instabila resultat. För att lösa detta används cross-validation.
Först delas hela datamängden upp i 5 lika stora delar, kallade folds.
Använd sedan en vikning som testuppsättning och kombinera de återstående vikningarna för att skapa träningsuppsättningen.
Som i alla utvärderingsprocesser används träningsuppsättningen för att träna modellen, medan testuppsättningen används för att mäta dess prestanda.
Processen upprepas så att varje delmängd fungerar som testuppsättning en gång, medan de övriga delmängderna utgör träningsuppsättningen.
Korsvalidering ger flera noggrannhetspoäng—en per uppdelning.
Deras medelvärde representerar modellens genomsnittliga prestanda.
I Python beräknas detta med cross_val_score().
Du kan välja valfritt antal vikningar. Till exempel innebär användning av 10 vikningar att träna på 9 delar och testa på 1.
Detta ställs in via parametern cv i cross_val_score().
1234567891011import pandas as pd from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import cross_val_score 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'] # Print the cross-val scores and the mean for KNeighborsClassifier with 5 neighbors scores = cross_val_score(KNeighborsClassifier(), X, y) print(scores) print(scores.mean())
Korsvalidering är mer tillförlitlig men långsammare, eftersom modellen tränas och utvärderas n gånger.
Det används ofta vid hyperparametertuning, där korsvalidering upprepas för varje hyperparametervärde—till exempel att testa flera k-värden i k-NN.
Detta hjälper till att välja det alternativ som konsekvent presterar bäst.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal