Come salvare il modello creato con Scikit-Learn
Dopo l'apprendimento posso utilizzare la funzione dump() del modulo joblib per salvare il modello in un file.
joblib.dump(model, 'filename.sav')
La funzione serializza il modello e lo salva in un file fisico sul PC, rendendolo persistente.
In questo modo posso caricare il modello in altri programmi o macchine, senza dover addestrare nuovamente la macchina.
Come caricare il modello su un'altra macchina?
Per caricare il modello dal file uso la funzione load() di joblib.
modello = load('filename.sav')
Python carica il modello dal file e lo salva nella variabile modello.
Un esempio pratico
In questo script addestro la macchina a classificare i dati di training del dataset Iris.
- import pandas as pd
- from sklearn.linear_model import Perceptron
- from sklearn import datasets
- from sklearn.model_selection import train_test_split
- df = datasets.load_iris()
- x = df.data
- y = df.target
- x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3, random_state=0)
- # addestramento modello
- model = Perceptron()
- model.fit(x_train, y_train)
- #salvataggio
- from joblib import dump, load
- dump(model, 'prova.sav')
- #caricamento
- model2 = load('prova.sav')
Nella riga 10 carico l'algoritmo di classificazione Perceptron e lo utilizzo nella riga seguente per addestrare la macchina.
Al termine dell'addestramento, nella riga 14 salvo il modello con la funzione dump() di joblib nel file prova.sav.
dump(model, 'prova.sav')
Infine, nella riga 16 ricarico il file 'prova.sav' tramite la funzione load() di joblib e lo salvo nella variabile model2.
model2 = load('prova.sav')
Al termine dello script model e model2 contengono lo stesso modello decisionale.
Un metodo alternativo
In alternativa posso usare le funzioni dumps() e load() del modulo pickle
import pickle
s = pickle.dumps(model)
model2 = pickle.loads(s)
La funzione dumps() serializza il modello e lo salva nella variabile s.
La funzione loads() invece recupera il modello dalla variabile s e lo assegna alla variabile model2
E così via.
