Udfordring: Valg af den Bedste K-værdi
Som vist i de foregående kapitler, kan modellens forudsigelser variere afhængigt af værdien af k (antallet af naboer). Når der opbygges en k-NN-model, er det vigtigt at vælge den k-værdi, der giver bedst ydeevne.
En almindelig tilgang er at anvende krydsvalidering til at evaluere modellens ydeevne. Det er muligt at køre et loop og beregne krydsvalideringsscore for et interval af k-værdier, og derefter vælge den med den højeste score. Dette er den mest udbredte metode.
Til dette formål tilbyder sklearn et praktisk værktøj: klassen GridSearchCV.
Konstruktør:
GridSearchCV(estimator, param_grid, scoring, cv = 5)estimator— modelobjektet;param_grid— ordbog med parameterværdier, der skal afprøves;scoring— metrikken, der anvendes til krydsvalideringsscore;cv— antal fold (5 som standard);
Metoder:
fit(X, y)— træner modellerne ved brug af X, y;predict(X)— forudsiger klassen for X;score(X, y)— returnerer nøjagtigheden for X, y sættet;
Attributter:
best_estimator_— objekt for modellen med højeste score;best_score_— scoren forbest_estimator_.
Parameteren param_grid tager en ordbog, hvor nøglerne er parameternavne og værdierne er lister over muligheder, der skal afprøves. For eksempel, for at teste værdier fra 1 til 99 for n_neighbors, kan følgende skrives:
param_grid = {'n_neighbors': range(1, 100)}
Ved at kalde .fit(X, y)-metoden på GridSearchCV-objektet vil parametergridet blive gennemgået for at finde de bedste parametre, hvorefter modellen gen-trænes på hele datasættet med disse bedste parametre.
Det er muligt at tilgå bedste score ved hjælp af attributten .best_score_ og foretage forudsigelser med den optimerede model ved brug af .predict()-metoden. Ligeledes kan bedste model selv hentes via attributten .best_estimator_.
Swipe to start coding
Du har fået tildelt Star Wars-bedømmelsesdatasættet, som er gemt som en DataFrame i variablen df.
- Initialiser
param_gridsom en ordbog, der indeholder parameterenn_neighborsmed værdierne[3, 9, 18, 27]. - Opret et
GridSearchCV-objekt ved hjælp afparam_gridmed 4-fold krydsvalidering, træn det, og gem det i variablengrid_search. - Hent den bedste model fra
grid_searchog gem den i variablenbest_model. - Hent scoren for den bedste model og gem den i variablen
best_score.
Løsning
Tak for dine kommentarer!
single
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
Fantastisk!
Completion rate forbedret til 3.33
Udfordring: Valg af den Bedste K-værdi
Stryg for at vise menuen
Som vist i de foregående kapitler, kan modellens forudsigelser variere afhængigt af værdien af k (antallet af naboer). Når der opbygges en k-NN-model, er det vigtigt at vælge den k-værdi, der giver bedst ydeevne.
En almindelig tilgang er at anvende krydsvalidering til at evaluere modellens ydeevne. Det er muligt at køre et loop og beregne krydsvalideringsscore for et interval af k-værdier, og derefter vælge den med den højeste score. Dette er den mest udbredte metode.
Til dette formål tilbyder sklearn et praktisk værktøj: klassen GridSearchCV.
Konstruktør:
GridSearchCV(estimator, param_grid, scoring, cv = 5)estimator— modelobjektet;param_grid— ordbog med parameterværdier, der skal afprøves;scoring— metrikken, der anvendes til krydsvalideringsscore;cv— antal fold (5 som standard);
Metoder:
fit(X, y)— træner modellerne ved brug af X, y;predict(X)— forudsiger klassen for X;score(X, y)— returnerer nøjagtigheden for X, y sættet;
Attributter:
best_estimator_— objekt for modellen med højeste score;best_score_— scoren forbest_estimator_.
Parameteren param_grid tager en ordbog, hvor nøglerne er parameternavne og værdierne er lister over muligheder, der skal afprøves. For eksempel, for at teste værdier fra 1 til 99 for n_neighbors, kan følgende skrives:
param_grid = {'n_neighbors': range(1, 100)}
Ved at kalde .fit(X, y)-metoden på GridSearchCV-objektet vil parametergridet blive gennemgået for at finde de bedste parametre, hvorefter modellen gen-trænes på hele datasættet med disse bedste parametre.
Det er muligt at tilgå bedste score ved hjælp af attributten .best_score_ og foretage forudsigelser med den optimerede model ved brug af .predict()-metoden. Ligeledes kan bedste model selv hentes via attributten .best_estimator_.
Swipe to start coding
Du har fået tildelt Star Wars-bedømmelsesdatasættet, som er gemt som en DataFrame i variablen df.
- Initialiser
param_gridsom en ordbog, der indeholder parameterenn_neighborsmed værdierne[3, 9, 18, 27]. - Opret et
GridSearchCV-objekt ved hjælp afparam_gridmed 4-fold krydsvalidering, træn det, og gem det i variablengrid_search. - Hent den bedste model fra
grid_searchog gem den i variablenbest_model. - Hent scoren for den bedste model og gem den i variablen
best_score.
Løsning
Tak for dine kommentarer!
single