Krydsvalidering
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 krydsgodkendelse.
Først opdeles hele datasættet i 5 lige store dele, kaldet folds.
Dernæst bruges én fold som testdatasæt, og de resterende fold kombineres til et træningsdatasæt.
Som i enhver evalueringsproces bruges træningssættet til at træne modellen, mens testdatasættet anvendes til at måle dens ydeevne.
Processen gentages, så hvert fold fungerer som testdatasæt én gang, mens de resterende fold udgør træningssættet.
Krydvalidiering 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())
Krydvalidiering er mere pålidelig, men langsommere, da modellen trænes og evalueres n gange.
Det anvendes bredt i hyperparameter-tuning, hvor krydvalidiering gentages for hver hyperparameterværdi—for eksempel ved test af 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
Awesome!
Completion rate improved to 3.13
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 krydsgodkendelse.
Først opdeles hele datasættet i 5 lige store dele, kaldet folds.
Dernæst bruges én fold som testdatasæt, og de resterende fold kombineres til et træningsdatasæt.
Som i enhver evalueringsproces bruges træningssættet til at træne modellen, mens testdatasættet anvendes til at måle dens ydeevne.
Processen gentages, så hvert fold fungerer som testdatasæt én gang, mens de resterende fold udgør træningssættet.
Krydvalidiering 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())
Krydvalidiering er mere pålidelig, men langsommere, da modellen trænes og evalueres n gange.
Det anvendes bredt i hyperparameter-tuning, hvor krydvalidiering gentages for hver hyperparameterværdi—for eksempel ved test af 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!