Gridsearchcv
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 eseguito 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, addestrarlo con .fit(X, y).
- Il miglior modello (punteggio di validazione incrociata più alto) è accessibile tramite
.best_estimator_. - Il relativo punteggio di validazione incrociata 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
What other hyperparameters can I tune with GridSearchCV?
How do I interpret the results from GridSearchCV?
Can you explain how cross-validation works in this context?
Awesome!
Completion rate improved to 3.13
Gridsearchcv
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 eseguito 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, addestrarlo con .fit(X, y).
- Il miglior modello (punteggio di validazione incrociata più alto) è accessibile tramite
.best_estimator_. - Il relativo punteggio di validazione incrociata 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!