Utfordring: Velge den Beste K-verdien
Som vist i de forrige kapitlene, kan modellens prediksjoner variere avhengig av verdien til k (antall naboer). Ved bygging av en k-NN-modell er det viktig å velge k-verdien som gir best ytelse.
En vanlig tilnærming er å bruke kryssvalidering for å evaluere modellens ytelse. Du kan kjøre en løkke og beregne kryssvalideringsscore for et utvalg av k-verdier, og deretter velge den med høyest score. Dette er den mest brukte metoden.
For å utføre dette tilbyr sklearn et praktisk verktøy: klassen GridSearchCV.
Konstruktør:
GridSearchCV(estimator, param_grid, scoring, cv = 5)estimator— modellobjektet;param_grid— ordbok med parametere og verdier som skal testes;scoring— metrikken som brukes for kryssvalideringsscore;cv— antall fold (5 som standard);
Metoder:
fit(X, y)— trener modellene ved bruk av X, y;predict(X)— predikerer klassen for X;score(X, y)— returnerer nøyaktigheten for X, y-settet;
Attributter:
best_estimator_— objektet for modellen med høyest score;best_score_— scoren tilbest_estimator_.
Parameteren param_grid tar en ordbok der nøklene er parameternavn og verdiene er lister med alternativer som skal prøves. For eksempel, for å teste verdier fra 1 til 99 for n_neighbors, kan du skrive:
param_grid = {'n_neighbors': range(1, 100)}
Ved å kalle metoden .fit(X, y) på GridSearchCV-objektet vil parameterområdet bli gjennomgått for å finne de beste parameterne, og deretter trenes modellen på hele datasettet med disse beste parameterne.
Du kan få tilgang til beste score ved å bruke attributtet .best_score_ og gjøre prediksjoner med den optimaliserte modellen ved å bruke metoden .predict(). Tilsvarende kan du hente beste modell selv ved å bruke attributtet .best_estimator_.
Swipe to start coding
Du har fått Star Wars-vurderingsdatasettet lagret som en DataFrame i variabelen df.
- Initialiser
param_gridsom en ordbok som inneholder parameterenn_neighborsmed verdiene[3, 9, 18, 27]. - Opprett et
GridSearchCV-objekt ved å brukeparam_gridmed 4-fold kryssvalidering, tren det, og lagre det i variabelengrid_search. - Hent den beste modellen fra
grid_searchog lagre den i variabelenbest_model. - Hent scoren til den beste modellen og lagre den i variabelen
best_score.
Løsning
Takk for tilbakemeldingene dine!
single
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
Fantastisk!
Completion rate forbedret til 3.33
Utfordring: Velge den Beste K-verdien
Sveip for å vise menyen
Som vist i de forrige kapitlene, kan modellens prediksjoner variere avhengig av verdien til k (antall naboer). Ved bygging av en k-NN-modell er det viktig å velge k-verdien som gir best ytelse.
En vanlig tilnærming er å bruke kryssvalidering for å evaluere modellens ytelse. Du kan kjøre en løkke og beregne kryssvalideringsscore for et utvalg av k-verdier, og deretter velge den med høyest score. Dette er den mest brukte metoden.
For å utføre dette tilbyr sklearn et praktisk verktøy: klassen GridSearchCV.
Konstruktør:
GridSearchCV(estimator, param_grid, scoring, cv = 5)estimator— modellobjektet;param_grid— ordbok med parametere og verdier som skal testes;scoring— metrikken som brukes for kryssvalideringsscore;cv— antall fold (5 som standard);
Metoder:
fit(X, y)— trener modellene ved bruk av X, y;predict(X)— predikerer klassen for X;score(X, y)— returnerer nøyaktigheten for X, y-settet;
Attributter:
best_estimator_— objektet for modellen med høyest score;best_score_— scoren tilbest_estimator_.
Parameteren param_grid tar en ordbok der nøklene er parameternavn og verdiene er lister med alternativer som skal prøves. For eksempel, for å teste verdier fra 1 til 99 for n_neighbors, kan du skrive:
param_grid = {'n_neighbors': range(1, 100)}
Ved å kalle metoden .fit(X, y) på GridSearchCV-objektet vil parameterområdet bli gjennomgått for å finne de beste parameterne, og deretter trenes modellen på hele datasettet med disse beste parameterne.
Du kan få tilgang til beste score ved å bruke attributtet .best_score_ og gjøre prediksjoner med den optimaliserte modellen ved å bruke metoden .predict(). Tilsvarende kan du hente beste modell selv ved å bruke attributtet .best_estimator_.
Swipe to start coding
Du har fått Star Wars-vurderingsdatasettet lagret som en DataFrame i variabelen df.
- Initialiser
param_gridsom en ordbok som inneholder parameterenn_neighborsmed verdiene[3, 9, 18, 27]. - Opprett et
GridSearchCV-objekt ved å brukeparam_gridmed 4-fold kryssvalidering, tren det, og lagre det i variabelengrid_search. - Hent den beste modellen fra
grid_searchog lagre den i variabelenbest_model. - Hent scoren til den beste modellen og lagre den i variabelen
best_score.
Løsning
Takk for tilbakemeldingene dine!
single