Kryssvalidering
Train-test-delingen har to ulemper:
- Mindre treningsdata, noe som kan redusere modellkvaliteten;
- Avhengighet av tilfeldig deling, som gir ustabile resultater. For å løse dette bruker vi kryssvalidering.
Først deles hele datasettet inn i 5 like store deler, kalt folds.
Deretter brukes én fold som testsett, og de resterende foldene kombineres for å danne treningssettet.
Som i enhver evalueringsprosess brukes treningssettet til å trene modellen, mens testsettet brukes til å måle ytelsen.
Prosessen gjentas slik at hvert fold fungerer som testsett én gang, mens de gjenværende foldene utgjør treningssettet.
Kryssvalidering gir flere nøyaktighetspoeng—ett per deling.
Deres gjennomsnitt representerer modellens gjennomsnittlige ytelse.
I Python beregnes dette med cross_val_score().
Du kan velge et hvilket som helst antall fold. For eksempel betyr bruk av 10 fold at du trener på 9 deler og tester på 1.
Dette angis 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())
Kryssvalidering er mer pålitelig, men tregere, siden modellen trenes og evalueres n ganger.
Dette brukes mye i hyperparameterjustering, der kryssvalidering gjentas for hver hyperparameterverdi—for eksempel ved å teste flere k-verdier i k-NN.
Dette bidrar til å velge det alternativet som konsekvent gir best resultater.
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Awesome!
Completion rate improved to 3.13
Kryssvalidering
Sveip for å vise menyen
Train-test-delingen har to ulemper:
- Mindre treningsdata, noe som kan redusere modellkvaliteten;
- Avhengighet av tilfeldig deling, som gir ustabile resultater. For å løse dette bruker vi kryssvalidering.
Først deles hele datasettet inn i 5 like store deler, kalt folds.
Deretter brukes én fold som testsett, og de resterende foldene kombineres for å danne treningssettet.
Som i enhver evalueringsprosess brukes treningssettet til å trene modellen, mens testsettet brukes til å måle ytelsen.
Prosessen gjentas slik at hvert fold fungerer som testsett én gang, mens de gjenværende foldene utgjør treningssettet.
Kryssvalidering gir flere nøyaktighetspoeng—ett per deling.
Deres gjennomsnitt representerer modellens gjennomsnittlige ytelse.
I Python beregnes dette med cross_val_score().
Du kan velge et hvilket som helst antall fold. For eksempel betyr bruk av 10 fold at du trener på 9 deler og tester på 1.
Dette angis 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())
Kryssvalidering er mer pålitelig, men tregere, siden modellen trenes og evalueres n ganger.
Dette brukes mye i hyperparameterjustering, der kryssvalidering gjentas for hver hyperparameterverdi—for eksempel ved å teste flere k-verdier i k-NN.
Dette bidrar til å velge det alternativet som konsekvent gir best resultater.
Takk for tilbakemeldingene dine!