 Utmaning: Välja det Bästa K-värdet
Utmaning: Välja det Bästa K-värdet
Som visats i tidigare kapitel kan modellens prediktioner variera beroende på värdet av k (antalet grannar). Vid konstruktion av en k-NN-modell är det viktigt att välja det k-värde som ger bäst prestanda.
En vanlig metod är att använda korsvalidering för att utvärdera modellens prestanda. Det går att köra en loop och beräkna korsvalideringspoäng för ett intervall av k-värden, och sedan välja det med högst poäng. Detta är den mest använda metoden.
För detta erbjuder sklearn ett praktiskt verktyg: klassen GridSearchCV.
param_grid-parametern tar en dictionary där nycklarna är parameternamn och värdena är listor med alternativ att testa. För att exempelvis testa värden från 1 till 99 för n_neighbors kan du skriva:
param_grid = {'n_neighbors': range(1, 100)}
Genom att anropa .fit(X, y)-metoden på GridSearchCV-objektet kommer parametergriden att genomsökas för att hitta de bästa parametrarna och därefter tränas modellen om på hela datasettet med dessa bästa parametrar.
Du kan komma åt bästa poäng med attributet .best_score_ och göra prediktioner med den optimerade modellen med hjälp av .predict()-metoden. På samma sätt kan du hämta bästa modellen själv med attributet .best_estimator_.
Swipe to start coding
Du har fått Star Wars-betygsdatasetet lagrat som en DataFrame i variabeln df.
- Initiera param_gridsom en ordbok som innehåller parameternn_neighborsmed värdena[3, 9, 18, 27].
- Skapa ett GridSearchCV-objekt medparam_gridoch 4-faldig korsvalidering, träna det och spara det i variabelngrid_search.
- Hämta den bästa modellen från grid_searchoch spara den i variabelnbest_model.
- Hämta poängen för den bästa modellen och spara den i variabeln best_score.
Lösning
Tack för dina kommentarer!
single
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Can you show me an example of how to use GridSearchCV with k-NN?
How do I interpret the results from GridSearchCV?
What other parameters can I tune with GridSearchCV besides n_neighbors?
Awesome!
Completion rate improved to 4.17 Utmaning: Välja det Bästa K-värdet
Utmaning: Välja det Bästa K-värdet
Svep för att visa menyn
Som visats i tidigare kapitel kan modellens prediktioner variera beroende på värdet av k (antalet grannar). Vid konstruktion av en k-NN-modell är det viktigt att välja det k-värde som ger bäst prestanda.
En vanlig metod är att använda korsvalidering för att utvärdera modellens prestanda. Det går att köra en loop och beräkna korsvalideringspoäng för ett intervall av k-värden, och sedan välja det med högst poäng. Detta är den mest använda metoden.
För detta erbjuder sklearn ett praktiskt verktyg: klassen GridSearchCV.
param_grid-parametern tar en dictionary där nycklarna är parameternamn och värdena är listor med alternativ att testa. För att exempelvis testa värden från 1 till 99 för n_neighbors kan du skriva:
param_grid = {'n_neighbors': range(1, 100)}
Genom att anropa .fit(X, y)-metoden på GridSearchCV-objektet kommer parametergriden att genomsökas för att hitta de bästa parametrarna och därefter tränas modellen om på hela datasettet med dessa bästa parametrar.
Du kan komma åt bästa poäng med attributet .best_score_ och göra prediktioner med den optimerade modellen med hjälp av .predict()-metoden. På samma sätt kan du hämta bästa modellen själv med attributet .best_estimator_.
Swipe to start coding
Du har fått Star Wars-betygsdatasetet lagrat som en DataFrame i variabeln df.
- Initiera param_gridsom en ordbok som innehåller parameternn_neighborsmed värdena[3, 9, 18, 27].
- Skapa ett GridSearchCV-objekt medparam_gridoch 4-faldig korsvalidering, träna det och spara det i variabelngrid_search.
- Hämta den bästa modellen från grid_searchoch spara den i variabelnbest_model.
- Hämta poängen för den bästa modellen och spara den i variabeln best_score.
Lösning
Tack för dina kommentarer!
single