Kruisvalidering
Veeg om het menu te tonen
De train-test splitsing heeft twee nadelen:
- Minder trainingsdata, wat de modelkwaliteit kan verminderen;
- Afhankelijkheid van de willekeurige splitsing, wat leidt tot onstabiele resultaten. Om dit te voorkomen, gebruiken we cross-validatie.
Verdeel eerst de volledige dataset in 5 gelijke delen, ook wel folds genoemd.
Gebruik vervolgens één fold als de testset en combineer de overige folds om de trainingsset te vormen.
Zoals bij elk evaluatieproces wordt de trainingsset gebruikt om het model te trainen, terwijl de testset wordt gebruikt om de prestaties te meten.
Het proces wordt herhaald zodat elke fold één keer als testset fungeert, terwijl de overige folds de trainingsset vormen.
Cross-validatie levert meerdere nauwkeurigheidsscores op—één per splitsing.
Het gemiddelde hiervan geeft de gemiddelde prestatie van het model weer.
In Python wordt dit berekend met cross_val_score().
Je kunt elk aantal folds kiezen. Bijvoorbeeld, bij het gebruik van 10 folds wordt getraind op 9 delen en getest op 1 deel.
Dit wordt ingesteld via de cv parameter in 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())
Kruisvalidering is betrouwbaarder maar trager, omdat het model n keer wordt getraind en geëvalueerd.
Het wordt veel gebruikt bij hyperparameterafstemming, waarbij kruisvalidering wordt herhaald voor elke hyperparameterewaarde—bijvoorbeeld het testen van meerdere k-waarden in k-NN.
Dit helpt bij het kiezen van de optie die consistent het beste presteert.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.