single
Uitdaging: De 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 veelgebruikte methode is het gebruik van cross-validatie om de modelprestaties te evalueren. Je kunt een lus uitvoeren en cross-validatiescores voor een reeks k-waarden berekenen, waarna je de waarde met de hoogste score selecteert. Dit is de meest gebruikte methode.
Om dit uit te voeren biedt sklearn een handig hulpmiddel: de GridSearchCV-klasse.
De parameter param_grid neemt een dictionary waarbij 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, kun je het volgende schrijven:
param_grid = {'n_neighbors': range(1, 100)}
Door de methode .fit(X, y) aan te roepen op het GridSearchCV-object wordt het parameterrooster doorzocht om de beste parameters te vinden en vervolgens wordt het model opnieuw getraind op de volledige dataset met deze beste parameters.
Je kunt de beste score opvragen met het attribuut .best_score_ en voorspellingen doen met het geoptimaliseerde model via de methode .predict(). Op dezelfde manier kun je het beste model zelf ophalen met het attribuut .best_estimator_.
Veeg om te beginnen met coderen
Je krijgt de Star Wars-beoordelingsdataset, opgeslagen als een DataFrame in de variabele df.
- Initialiseer
param_gridals een dictionary met de parametern_neighborsen de waarden[3, 9, 18, 27]. - Maak een
GridSearchCV-object aan met behulp vanparam_griden 4-voudige cross-validatie, 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.