Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Korsvalidering | Modellering
Quizzes & Challenges
Quizzes
Challenges
/
Introduktion till maskininlärning med Python

bookKorsvalidering

Train-test-uppdelningen har två nackdelar:

  1. Mindre träningsdata, vilket kan minska modellens kvalitet;
  2. Beroende av den slumpmässiga uppdelningen, vilket leder till instabila resultat. För att hantera detta används cross-validation.

Först delas hela datasettet upp i 5 lika stora delar, kallade folds.

Därefter används en fold som testset och de återstående foldsen kombineras för att bilda träningssetet.

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 återstående delmängderna bildar 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().

Note
Notering

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 anges via parametern cv i 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())
copy

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 vid testning av flera k-värden i k-NN. Detta hjälper till att välja det alternativ som konsekvent presterar bäst.

question mark

Varför kan korsvalidering föredras framför train-test-split vid utvärdering av prestandan hos en maskininlärningsmodell?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 4

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

Suggested prompts:

Can you explain why cross-validation is more reliable than a simple train-test split?

How does cross-validation help with hyperparameter tuning?

What are some common variations of cross-validation besides k-fold?

Awesome!

Completion rate improved to 3.13

bookKorsvalidering

Svep för att visa menyn

Train-test-uppdelningen har två nackdelar:

  1. Mindre träningsdata, vilket kan minska modellens kvalitet;
  2. Beroende av den slumpmässiga uppdelningen, vilket leder till instabila resultat. För att hantera detta används cross-validation.

Först delas hela datasettet upp i 5 lika stora delar, kallade folds.

Därefter används en fold som testset och de återstående foldsen kombineras för att bilda träningssetet.

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 återstående delmängderna bildar 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().

Note
Notering

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 anges via parametern cv i 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())
copy

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 vid testning av flera k-värden i k-NN. Detta hjälper till att välja det alternativ som konsekvent presterar bäst.

question mark

Varför kan korsvalidering föredras framför train-test-split vid utvärdering av prestandan hos en maskininlärningsmodell?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 4
some-alt