Krydsvalidering
Stryg for at vise menuen
Opdelingen i trænings- og testdatasæt har to ulemper:
- Mindre træningsdata, hvilket kan reducere modellens kvalitet;
- Afhængighed af den tilfældige opdeling, hvilket kan give ustabile resultater. For at løse dette anvendes krydvalidiering.
Først opdeles hele datasættet i 5 lige store dele, kaldet folds.
Brug derefter én fold som testdatasæt og kombiner de resterende fold til at danne træningsdatasættet.
Som i enhver evalueringsproces bruges træningsdatasættet til at træne modellen, mens testdatasættet bruges til at måle dens ydeevne.
Processen gentages, så hver fold fungerer som testdatasæt én gang, mens de resterende fold udgør træningsdatasættet.
Krydsgodkendelse giver flere nøjagtighedsscorer—én for hver opdeling.
Deres gennemsnit repræsenterer modellens gennemsnitlige ydeevne.
I Python beregnes dette med cross_val_score().
Du kan vælge et vilkårligt antal fold. For eksempel betyder brug af 10 fold, at der trænes på 9 dele og testes på 1.
Dette indstilles via cv-parameteren 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())
Krydsvalidering er mere pålidelig, men langsommere, da modellen trænes og evalueres n gange.
Det anvendes bredt til justering af hyperparametre, hvor krydsvalidering gentages for hver hyperparameter-værdi—for eksempel ved at teste flere k-værdier i k-NN.
Dette hjælper med at vælge den mulighed, der konsekvent klarer sig bedst.
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat