Sfida: Scelta del Miglior Valore di K
Come mostrato nei capitoli precedenti, le previsioni del modello possono variare a seconda del valore di k (il numero di vicini). Quando si costruisce un modello k-NN, è importante scegliere il valore di k che offre le migliori prestazioni.
Un approccio comune consiste nell'utilizzare la validazione incrociata per valutare le prestazioni del modello. È possibile eseguire un ciclo e calcolare i punteggi di validazione incrociata per un intervallo di valori di k, quindi selezionare quello con il punteggio più alto. Questo è il metodo più ampiamente utilizzato.
Per eseguire questa operazione, sklearn offre uno strumento pratico: la classe GridSearchCV.
Costruttore:
GridSearchCV(estimator, param_grid, scoring, cv = 5)estimator— oggetto modello;param_grid— dizionario con i valori dei parametri da esplorare;scoring— metrica utilizzata per il punteggio della validazione incrociata;cv— numero di fold (5 per impostazione predefinita);
Metodi:
fit(X, y)— addestramento dei modelli utilizzando X, y;predict(X)— previsione della classe per X;score(X, y)— restituisce l'accuratezza per il set X, y;
Attributi:
best_estimator_— oggetto del modello con il punteggio più alto;best_score_— punteggio delbest_estimator_.
Il parametro param_grid accetta un dizionario in cui le chiavi sono i nomi dei parametri e i valori sono le liste delle opzioni da provare. Ad esempio, per testare i valori da 1 a 99 per n_neighbors, si può scrivere:
param_grid = {'n_neighbors': range(1, 100)}
Chiamando il metodo .fit(X, y) sull'oggetto GridSearchCV verrà eseguita una ricerca nella griglia dei parametri per trovare i migliori parametri e quindi ri-addestrare il modello sull'intero dataset utilizzando tali parametri ottimali.
È possibile accedere al miglior punteggio utilizzando l'attributo .best_score_ ed effettuare previsioni con il modello ottimizzato tramite il metodo .predict(). Analogamente, è possibile recuperare il miglior modello stesso tramite l'attributo .best_estimator_.
Swipe to start coding
Ti viene fornito il dataset delle valutazioni di Star Wars memorizzato come DataFrame nella variabile df.
- Inizializza
param_gridcome un dizionario contenente il parametron_neighborscon i valori[3, 9, 18, 27]. - Crea un oggetto
GridSearchCVutilizzandoparam_gridcon una validazione incrociata a 4 fold, addestralo e memorizzalo nella variabilegrid_search. - Recupera il modello migliore da
grid_searche memorizzalo nella variabilebest_model. - Recupera il punteggio del modello migliore e memorizzalo nella variabile
best_score.
Soluzione
Grazie per i tuoi commenti!
single
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Fantastico!
Completion tasso migliorato a 3.33
Sfida: Scelta del Miglior Valore di K
Scorri per mostrare il menu
Come mostrato nei capitoli precedenti, le previsioni del modello possono variare a seconda del valore di k (il numero di vicini). Quando si costruisce un modello k-NN, è importante scegliere il valore di k che offre le migliori prestazioni.
Un approccio comune consiste nell'utilizzare la validazione incrociata per valutare le prestazioni del modello. È possibile eseguire un ciclo e calcolare i punteggi di validazione incrociata per un intervallo di valori di k, quindi selezionare quello con il punteggio più alto. Questo è il metodo più ampiamente utilizzato.
Per eseguire questa operazione, sklearn offre uno strumento pratico: la classe GridSearchCV.
Costruttore:
GridSearchCV(estimator, param_grid, scoring, cv = 5)estimator— oggetto modello;param_grid— dizionario con i valori dei parametri da esplorare;scoring— metrica utilizzata per il punteggio della validazione incrociata;cv— numero di fold (5 per impostazione predefinita);
Metodi:
fit(X, y)— addestramento dei modelli utilizzando X, y;predict(X)— previsione della classe per X;score(X, y)— restituisce l'accuratezza per il set X, y;
Attributi:
best_estimator_— oggetto del modello con il punteggio più alto;best_score_— punteggio delbest_estimator_.
Il parametro param_grid accetta un dizionario in cui le chiavi sono i nomi dei parametri e i valori sono le liste delle opzioni da provare. Ad esempio, per testare i valori da 1 a 99 per n_neighbors, si può scrivere:
param_grid = {'n_neighbors': range(1, 100)}
Chiamando il metodo .fit(X, y) sull'oggetto GridSearchCV verrà eseguita una ricerca nella griglia dei parametri per trovare i migliori parametri e quindi ri-addestrare il modello sull'intero dataset utilizzando tali parametri ottimali.
È possibile accedere al miglior punteggio utilizzando l'attributo .best_score_ ed effettuare previsioni con il modello ottimizzato tramite il metodo .predict(). Analogamente, è possibile recuperare il miglior modello stesso tramite l'attributo .best_estimator_.
Swipe to start coding
Ti viene fornito il dataset delle valutazioni di Star Wars memorizzato come DataFrame nella variabile df.
- Inizializza
param_gridcome un dizionario contenente il parametron_neighborscon i valori[3, 9, 18, 27]. - Crea un oggetto
GridSearchCVutilizzandoparam_gridcon una validazione incrociata a 4 fold, addestralo e memorizzalo nella variabilegrid_search. - Recupera il modello migliore da
grid_searche memorizzalo nella variabilebest_model. - Recupera il punteggio del modello migliore e memorizzalo nella variabile
best_score.
Soluzione
Grazie per i tuoi commenti!
single