Uitdaging: Het Beste K-Waarde Kiezen
Zoals getoond in de vorige hoofdstukken, kunnen de voorspellingen van het model variëren afhankelijk van de waarde van k (het aantal buren). Bij het bouwen van een k-NN-model is het belangrijk om de k-waarde te kiezen die de beste prestaties oplevert.
Een gangbare aanpak is het gebruik van cross-validatie om de modelprestaties te evalueren. U kunt een lus uitvoeren en cross-validatiescores voor een reeks k-waarden berekenen, en vervolgens de waarde met de hoogste score selecteren. Dit is de meest gebruikte methode.
Om dit uit te voeren, biedt sklearn een handig hulpmiddel: de GridSearchCV-klasse.
Constructor:
GridSearchCV(estimator, param_grid, scoring, cv = 5)estimator— het modelobject;param_grid— woordenboek met parameterwaarden om te doorzoeken;scoring— de metriek die wordt gebruikt voor de cross-validatiescore;
cv— het aantal folds (standaard 5);
Methoden:
fit(X, y)— traint de modellen met X, y;predict(X)— voorspelt de klasse voor X;score(X, y)— retourneert de nauwkeurigheid voor de X, y-set;
Attributen:
best_estimator_— object van het model met de hoogste score;best_score_— de score van debest_estimator_.
De parameter param_grid neemt een woordenboek waarin de sleutels parameternamen zijn en de waarden lijsten met opties om te proberen. Om bijvoorbeeld waarden van 1 tot 99 voor n_neighbors te testen, kunt u het volgende schrijven:
param_grid = {'n_neighbors': range(1, 100)}
Het aanroepen van de .fit(X, y)-methode op het GridSearchCV-object zal het parameterrooster doorzoeken om de beste parameters te vinden en vervolgens het model opnieuw trainen op de volledige dataset met deze beste parameters.
U kunt de beste score opvragen met het .best_score_-attribuut en voorspellingen doen met het geoptimaliseerde model via de .predict()-methode. Op dezelfde manier kunt u het beste model zelf ophalen met het .best_estimator_-attribuut.
Swipe to start coding
Je krijgt de Star Wars-beoordelingsdataset, opgeslagen als een DataFrame in de variabele df.
- Initialiseer
param_gridals een woordenboek met de parametern_neighborsen de waarden[3, 9, 18, 27]. - Maak een
GridSearchCV-object aan metparam_griden 4-voudige crossvalidatie, train het en sla het op in de variabelegrid_search. - Haal het beste model op uit
grid_searchen sla het op in de variabelebest_model. - Haal de score van het beste model op en sla deze op in de variabele
best_score.
Oplossing
Bedankt voor je feedback!
single
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Geweldig!
Completion tarief verbeterd naar 3.33
Uitdaging: Het Beste K-Waarde Kiezen
Veeg om het menu te tonen
Zoals getoond in de vorige hoofdstukken, kunnen de voorspellingen van het model variëren afhankelijk van de waarde van k (het aantal buren). Bij het bouwen van een k-NN-model is het belangrijk om de k-waarde te kiezen die de beste prestaties oplevert.
Een gangbare aanpak is het gebruik van cross-validatie om de modelprestaties te evalueren. U kunt een lus uitvoeren en cross-validatiescores voor een reeks k-waarden berekenen, en vervolgens de waarde met de hoogste score selecteren. Dit is de meest gebruikte methode.
Om dit uit te voeren, biedt sklearn een handig hulpmiddel: de GridSearchCV-klasse.
Constructor:
GridSearchCV(estimator, param_grid, scoring, cv = 5)estimator— het modelobject;param_grid— woordenboek met parameterwaarden om te doorzoeken;scoring— de metriek die wordt gebruikt voor de cross-validatiescore;
cv— het aantal folds (standaard 5);
Methoden:
fit(X, y)— traint de modellen met X, y;predict(X)— voorspelt de klasse voor X;score(X, y)— retourneert de nauwkeurigheid voor de X, y-set;
Attributen:
best_estimator_— object van het model met de hoogste score;best_score_— de score van debest_estimator_.
De parameter param_grid neemt een woordenboek waarin de sleutels parameternamen zijn en de waarden lijsten met opties om te proberen. Om bijvoorbeeld waarden van 1 tot 99 voor n_neighbors te testen, kunt u het volgende schrijven:
param_grid = {'n_neighbors': range(1, 100)}
Het aanroepen van de .fit(X, y)-methode op het GridSearchCV-object zal het parameterrooster doorzoeken om de beste parameters te vinden en vervolgens het model opnieuw trainen op de volledige dataset met deze beste parameters.
U kunt de beste score opvragen met het .best_score_-attribuut en voorspellingen doen met het geoptimaliseerde model via de .predict()-methode. Op dezelfde manier kunt u het beste model zelf ophalen met het .best_estimator_-attribuut.
Swipe to start coding
Je krijgt de Star Wars-beoordelingsdataset, opgeslagen als een DataFrame in de variabele df.
- Initialiseer
param_gridals een woordenboek met de parametern_neighborsen de waarden[3, 9, 18, 27]. - Maak een
GridSearchCV-object aan metparam_griden 4-voudige crossvalidatie, train het en sla het op in de variabelegrid_search. - Haal het beste model op uit
grid_searchen sla het op in de variabelebest_model. - Haal de score van het beste model op en sla deze op in de variabele
best_score.
Oplossing
Bedankt voor je feedback!
single