Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Ricerca a Griglia Cv | Modellazione
Introduzione al ML con Scikit-Learn

bookRicerca a Griglia Cv

Ora è il momento di cercare di migliorare le prestazioni del modello! Questo si ottiene trovando i migliori iperparametri adatti al nostro compito.

Questo processo è chiamato ottimizzazione degli iperparametri. L'approccio predefinito consiste nel provare diversi valori di iperparametri e calcolare per ciascuno un punteggio di validazione incrociata. Successivamente, si sceglie semplicemente il valore che produce il miglior punteggio.

Questo processo può essere eseguito utilizzando la classe GridSearchCV del modulo sklearn.model_selection.

Durante la costruzione di un oggetto GridSearchCV, è necessario fornire il modello e la griglia dei parametri (e facoltativamente il metodo di scoring e il numero di fold). La griglia dei parametri (param_grid) è un dizionario che contiene tutte le configurazioni di iperparametri che si desidera provare. Ad esempio, param_grid={'n_neighbors': [1, 3, 5, 7]} proverà i valori 1, 3, 5 e 7 come numero di vicini.

Successivamente, si addestra il modello utilizzando il metodo .fit(X, y). Una volta completato l'addestramento, è possibile identificare il modello che ha ottenuto le migliori prestazioni — quello con il punteggio di validazione incrociata più alto, tipicamente basato sulla accuratezza — accedendo all'attributo .best_estimator_.

Per consultare il punteggio di validazione incrociata di questo modello ottimale, fare riferimento all'attributo .best_score_.

123456789101112131415
import pandas as pd from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import GridSearchCV df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_pipelined.csv') # Assign X, y variables (X is already preprocessed and y is already encoded) X, y = df.drop('species', axis=1), df['species'] # Create the param_grid and initialize GridSearchCV object param_grid = {'n_neighbors': [1,3,5,7,9]} grid_search = GridSearchCV(KNeighborsClassifier(), param_grid) # Train the GridSearchCV object. During training it finds the best parameters grid_search.fit(X, y) # Print the best estimator and its cross-validation score print(grid_search.best_estimator_) print(grid_search.best_score_)
copy

Il passo successivo consiste nel prendere il best_estimator_ e addestrarlo sull'intero dataset poiché sappiamo già che possiede i parametri migliori (tra quelli testati) e conosciamo il suo punteggio. Questo passaggio è così ovvio che GridSearchCV lo esegue di default.

Quindi l'oggetto (grid_search nel nostro esempio) diventa un modello addestrato con i parametri ottimali.
Ora è possibile utilizzare questo oggetto per la previsione o la valutazione. Per questo motivo GridSearchCV dispone dei metodi .predict() e .score().

123456789101112131415
import pandas as pd from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import GridSearchCV df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_pipelined.csv') # Assign X, y variables (X is already preprocessed and y is already encoded) X, y = df.drop('species', axis=1), df['species'] # Create the param_grid and initialize GridSearchCV object param_grid = {'n_neighbors': [1,3,5,7,9]} grid_search = GridSearchCV(KNeighborsClassifier(), param_grid) # Train the GridSearchCV object. During training it finds the best parameters grid_search.fit(X, y) # Evaluate the grid_search on the training set # It is done only to show that .score() method works, evaluating on training set is not reliable. print(grid_search.score(X, y))
copy
question mark

Una volta addestrato un oggetto GridSearchCV, è possibile utilizzarlo per effettuare predizioni tramite il metodo .predict(). È corretto?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 6

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Awesome!

Completion rate improved to 3.13

bookRicerca a Griglia Cv

Scorri per mostrare il menu

Ora è il momento di cercare di migliorare le prestazioni del modello! Questo si ottiene trovando i migliori iperparametri adatti al nostro compito.

Questo processo è chiamato ottimizzazione degli iperparametri. L'approccio predefinito consiste nel provare diversi valori di iperparametri e calcolare per ciascuno un punteggio di validazione incrociata. Successivamente, si sceglie semplicemente il valore che produce il miglior punteggio.

Questo processo può essere eseguito utilizzando la classe GridSearchCV del modulo sklearn.model_selection.

Durante la costruzione di un oggetto GridSearchCV, è necessario fornire il modello e la griglia dei parametri (e facoltativamente il metodo di scoring e il numero di fold). La griglia dei parametri (param_grid) è un dizionario che contiene tutte le configurazioni di iperparametri che si desidera provare. Ad esempio, param_grid={'n_neighbors': [1, 3, 5, 7]} proverà i valori 1, 3, 5 e 7 come numero di vicini.

Successivamente, si addestra il modello utilizzando il metodo .fit(X, y). Una volta completato l'addestramento, è possibile identificare il modello che ha ottenuto le migliori prestazioni — quello con il punteggio di validazione incrociata più alto, tipicamente basato sulla accuratezza — accedendo all'attributo .best_estimator_.

Per consultare il punteggio di validazione incrociata di questo modello ottimale, fare riferimento all'attributo .best_score_.

123456789101112131415
import pandas as pd from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import GridSearchCV df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_pipelined.csv') # Assign X, y variables (X is already preprocessed and y is already encoded) X, y = df.drop('species', axis=1), df['species'] # Create the param_grid and initialize GridSearchCV object param_grid = {'n_neighbors': [1,3,5,7,9]} grid_search = GridSearchCV(KNeighborsClassifier(), param_grid) # Train the GridSearchCV object. During training it finds the best parameters grid_search.fit(X, y) # Print the best estimator and its cross-validation score print(grid_search.best_estimator_) print(grid_search.best_score_)
copy

Il passo successivo consiste nel prendere il best_estimator_ e addestrarlo sull'intero dataset poiché sappiamo già che possiede i parametri migliori (tra quelli testati) e conosciamo il suo punteggio. Questo passaggio è così ovvio che GridSearchCV lo esegue di default.

Quindi l'oggetto (grid_search nel nostro esempio) diventa un modello addestrato con i parametri ottimali.
Ora è possibile utilizzare questo oggetto per la previsione o la valutazione. Per questo motivo GridSearchCV dispone dei metodi .predict() e .score().

123456789101112131415
import pandas as pd from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import GridSearchCV df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_pipelined.csv') # Assign X, y variables (X is already preprocessed and y is already encoded) X, y = df.drop('species', axis=1), df['species'] # Create the param_grid and initialize GridSearchCV object param_grid = {'n_neighbors': [1,3,5,7,9]} grid_search = GridSearchCV(KNeighborsClassifier(), param_grid) # Train the GridSearchCV object. During training it finds the best parameters grid_search.fit(X, y) # Evaluate the grid_search on the training set # It is done only to show that .score() method works, evaluating on training set is not reliable. print(grid_search.score(X, y))
copy
question mark

Una volta addestrato un oggetto GridSearchCV, è possibile utilizzarlo per effettuare predizioni tramite il metodo .predict(). È corretto?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 6
some-alt