Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Krydsvalidering | Modellering
Introduktion til Maskinlæring med Python

Krydsvalidering

Stryg for at vise menuen

Opdelingen i trænings- og testdatasæt har to ulemper:

  1. Mindre træningsdata, hvilket kan reducere modellens kvalitet;
  2. 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.

folds_split

Brug derefter én fold som testdatasæt og kombiner de resterende fold til at danne træningsdatasættet.

CV trin 2

Som i enhver evalueringsproces bruges træningsdatasættet til at træne modellen, mens testdatasættet bruges til at måle dens ydeevne.

CrossValStep3

Processen gentages, så hver fold fungerer som testdatasæt én gang, mens de resterende fold udgør træningsdatasættet.

CV step 3

Krydsgodkendelse giver flere nøjagtighedsscorer—én for hver opdeling. Deres gennemsnit repræsenterer modellens gennemsnitlige ydeevne. I Python beregnes dette med cross_val_score().

Note
Bemærk

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

cross_val_score
1234567891011
import 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.

question mark

Hvorfor kan krydsvalidering foretrækkes frem for train-test split til evaluering af ydeevnen for en maskinlæringsmodel?

Vælg det korrekte svar

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 4

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Sektion 4. Kapitel 4
some-alt