Ricerca a Griglia Cv
Ora è il momento di migliorare le prestazioni del modello identificando gli iperparametri più adatti.
Questo processo è noto come ottimizzazione degli iperparametri. L'approccio standard consiste nel testare diversi valori di iperparametri, calcolare il punteggio di validazione incrociata per ciascuno e selezionare il valore che produce il punteggio più alto.
Questo processo può essere effettuato utilizzando la classe GridSearchCV
del modulo sklearn.model_selection
.
Quando si crea un oggetto GridSearchCV
, è necessario fornire il modello e la griglia dei parametri (param_grid
), e opzionalmente specificare la metrica di valutazione e il numero di fold. La griglia dei parametri è un dizionario di valori di iperparametri da testare. Ad esempio:
param_grid = {'n_neighbors': [1, 3, 5, 7]}
Questa configurazione valuta il modello con 1, 3, 5 e 7 vicini.
Dopo aver inizializzato GridSearchCV
, si addestra con .fit(X, y)
.
- Il miglior modello (punteggio di validazione incrociata più alto) è accessibile tramite
.best_estimator_
. - Il punteggio di validazione incrociata corrispondente può essere visualizzato tramite
.best_score_
.
123456789101112131415import 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_)
Il passo successivo consiste nel prendere il best_estimator_
e addestrarlo sull'intero dataset, poiché è già stato identificato come avente i parametri ottimali. Questo passaggio viene eseguito automaticamente da GridSearchCV
.
Di conseguenza, l'oggetto grid_search
stesso diventa un modello addestrato con i parametri ottimali. Può essere utilizzato direttamente per la previsione e la valutazione tramite i metodi .predict()
e .score()
.
123456789101112131415import 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))
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Awesome!
Completion rate improved to 3.13
Ricerca a Griglia Cv
Scorri per mostrare il menu
Ora è il momento di migliorare le prestazioni del modello identificando gli iperparametri più adatti.
Questo processo è noto come ottimizzazione degli iperparametri. L'approccio standard consiste nel testare diversi valori di iperparametri, calcolare il punteggio di validazione incrociata per ciascuno e selezionare il valore che produce il punteggio più alto.
Questo processo può essere effettuato utilizzando la classe GridSearchCV
del modulo sklearn.model_selection
.
Quando si crea un oggetto GridSearchCV
, è necessario fornire il modello e la griglia dei parametri (param_grid
), e opzionalmente specificare la metrica di valutazione e il numero di fold. La griglia dei parametri è un dizionario di valori di iperparametri da testare. Ad esempio:
param_grid = {'n_neighbors': [1, 3, 5, 7]}
Questa configurazione valuta il modello con 1, 3, 5 e 7 vicini.
Dopo aver inizializzato GridSearchCV
, si addestra con .fit(X, y)
.
- Il miglior modello (punteggio di validazione incrociata più alto) è accessibile tramite
.best_estimator_
. - Il punteggio di validazione incrociata corrispondente può essere visualizzato tramite
.best_score_
.
123456789101112131415import 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_)
Il passo successivo consiste nel prendere il best_estimator_
e addestrarlo sull'intero dataset, poiché è già stato identificato come avente i parametri ottimali. Questo passaggio viene eseguito automaticamente da GridSearchCV
.
Di conseguenza, l'oggetto grid_search
stesso diventa un modello addestrato con i parametri ottimali. Può essere utilizzato direttamente per la previsione e la valutazione tramite i metodi .predict()
e .score()
.
123456789101112131415import 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))
Grazie per i tuoi commenti!