Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Utfordring: Velge den Beste K-verdien | Seksjon
Grunnleggende Overvåket Læring

bookUtfordring: 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 til best_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)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_.

Oppgave

Swipe to start coding

Du har fått Star Wars-vurderingsdatasettet lagret som en DataFrame i variabelen df.

  • Initialiser param_grid som en ordbok som inneholder parameteren n_neighbors med verdiene [3, 9, 18, 27].
  • Opprett et GridSearchCV-objekt ved å bruke param_grid med 4-fold kryssvalidering, tren det, og lagre det i variabelen grid_search.
  • Hent den beste modellen fra grid_search og lagre den i variabelen best_model.
  • Hent scoren til den beste modellen og lagre den i variabelen best_score.

Løsning

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 20
single

single

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

close

bookUtfordring: 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 til best_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)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_.

Oppgave

Swipe to start coding

Du har fått Star Wars-vurderingsdatasettet lagret som en DataFrame i variabelen df.

  • Initialiser param_grid som en ordbok som inneholder parameteren n_neighbors med verdiene [3, 9, 18, 27].
  • Opprett et GridSearchCV-objekt ved å bruke param_grid med 4-fold kryssvalidering, tren det, og lagre det i variabelen grid_search.
  • Hent den beste modellen fra grid_search og lagre den i variabelen best_model.
  • Hent scoren til den beste modellen og lagre den i variabelen best_score.

Løsning

Switch to desktopBytt til skrivebordet for virkelighetspraksisFortsett der du er med et av alternativene nedenfor
Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 20
single

single

some-alt