top of page

Come salvare e caricare modelli di Machine Learning con Python e scikit-learn



Trovare un modello di machine learning accurato non è la fine del progetto.

In questo post scoprirai come salvare e caricare il tuo modello di machine learning in Python usando scikit-learn.


Come salvare e caricare modelli di Machine Learning con Python e scikit-learn
Come salvare e caricare modelli di Machine Learning con Python e scikit-learn


Ciò ti consente di salvare il tuo modello su file e caricarlo in un secondo momento per fare previsioni.


Panoramica dell'esercitazione

Questo tutorial è diviso in 3 parti, sono:

  1. Salva il tuo modello con pickle

  2. Salva il tuo modello con joblib

  3. Suggerimenti per salvare il tuo modello


Come salvare il tuo modello con Pickle

Pickle è il modo standard per serializzare oggetti in Python.


È possibile utilizzare l' operazione pickle per serializzare gli algoritmi di machine learning e salvare il formato serializzato in un file. Successivamente puoi caricare questo file per deserializzare il tuo modello e usarlo per fare nuove previsioni.


L'esempio seguente mostra come addestrare un modello di regressione logistica sul set di dati sull'insorgenza del diabete , salvare il modello in un file e caricarlo per fare previsioni sul set di test.


# Importiamo le librerie e scarichiamo il dataset
import pandas
from sklearn import model_selection
from sklearn.linear_model import LogisticRegression
import pickle
url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
dataframe = pandas.read_csv(url, names=names)
array = dataframe.values
X = array[:,0:8]
Y = array[:,8]
test_size = 0.33
seed = 7
X_train, X_test, Y_train, Y_test = model_selection.train_test_split(X, Y, test_size=test_size, random_state=seed)
# Alleniamo il moello sui dati di Train
model = LogisticRegression()
model.fit(X_train, Y_train)
# Salviamo il modello nella memoria locale del nostro PC
filename = 'finalized_model.sav'
pickle.dump(model, open(filename, 'wb'))
 
# qualche settimana dopo...
 
# Carichiamo il modello dalla memoria locale del nostro PC
loaded_model = pickle.load(open(filename, 'rb'))
result = loaded_model.score(X_test, Y_test)
print(result)


L'esecuzione dell'esempio salva il modello in finalized_model.sav nella directory di lavoro locale.


Nota : i risultati possono variare a causa della natura stocastica dell'algoritmo o della procedura di valutazione, o delle differenze nella precisione numerica. Considera di eseguire l'esempio alcune volte e confrontare il risultato medio.


Caricare il modello salvato e valutarlo fornisce una stima dell'accuratezza del modello su dati di test.


0.755905511811


Hai bisogno di aiuto con Machine Learning in Python?
Partecipa al nostro corso gratuito da oltre 120 lezioni e scopri la preparazione dei dati, gli algoritmi e altro (con il codice).
Fai clic per iscriverti ora e ottenere anche un ebook PDF gratuitis sul machine learning.



Come salvare il tuo modello con joblib

Joblib fa parte dell'ecosistema SciPy e fornisce utilità per la pipeline di lavori Python.

Fornisce utilità per il salvataggio e il caricamento di oggetti Python che utilizzano le strutture di dati NumPy, in modo efficiente.


Questo può essere utile per alcuni algoritmi di apprendimento automatico che richiedono molti parametri o archiviano l'intero set di dati (come K-Nearest Neighbors).

L'esempio seguente mostra come addestrare un modello di regressione logistica sul set di dati dell'insorgenza del diabete, salvare il modello in un file utilizzando joblib e caricarlo per fare previsioni sul set di test.



# Importiamo le librerie e scarichiamo il dataset
import pandas
from sklearn import model_selection
from sklearn.linear_model import LogisticRegression
import joblib
url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
dataframe = pandas.read_csv(url, names=names)
array = dataframe.values
X = array[:,0:8]
Y = array[:,8]
test_size = 0.33
seed = 7
X_train, X_test, Y_train, Y_test = model_selection.train_test_split(X, Y, test_size=test_size, random_state=seed)
# Alleniamo il modello sui dati di Training
model = LogisticRegression()
model.fit(X_train, Y_train)
# Salviamo il modello nella memoria locale del nostro PC
filename = 'finalized_model.sav'
joblib.dump(model, filename)
 
# Qualche giorno o settimana dopo ..
 
# Carichiamo il modello dalla memoria locale del nostro PC
loaded_model = joblib.load(filename)
result = loaded_model.score(X_test, Y_test)
print(result)

L'esecuzione dell'esempio salva il modello in un file come finalized_model.sav e crea anche un file per ogni matrice NumPy nel modello (quattro file aggiuntivi).

Nota : i risultati possono variare a causa della natura stocastica dell'algoritmo o della procedura di valutazione, o delle differenze nella precisione numerica. Considera di eseguire l'esempio alcune volte e confrontare il risultato medio.

Dopo che il modello è stato caricato, viene riportata una stima dell'accuratezza del modello su dati di test.

0.755905511811

Suggerimenti per salvare il tuo modello

Questa sezione elenca alcune considerazioni importanti durante la finalizzazione dei modelli di machine learning.

  • Versione Python . Prendi nota della versione Python. Quasi sicuramente hai bisogno della stessa versione principale (e forse minore) di Python usata per serializzare il modello quando in seguito lo carichi e lo deserializzi.

  • Versioni della libreria . La versione di tutte le principali librerie utilizzate nel tuo progetto di machine learning deve quasi certamente essere la stessa durante la deserializzazione di un modello salvato. Questo non è limitato alla versione di NumPy e alla versione di scikit-learn.

  • Serializzazione manuale . Potresti voler emettere manualmente i parametri del tuo modello appreso in modo da poterli utilizzare direttamente in scikit-learn o in un'altra piattaforma in futuro. Spesso gli algoritmi utilizzati dagli algoritmi di apprendimento automatico per fare previsioni sono molto più semplici di quelli utilizzati per apprendere i parametri possono essere facili da implementare nel codice personalizzato su cui hai il controllo.

Prendere nota della versione in modo da poter ricreare l'ambiente se per qualche motivo non è possibile ricaricare il modello su un'altra macchina o su un'altra piattaforma in un secondo momento.





Riepilogo

In questo post hai scoperto come rendere persistenti i tuoi algoritmi di machine learning in Python con scikit-learn.

Hai imparato due tecniche che puoi usare:

  • L'API pickle per la serializzazione di oggetti Python standard.

  • L'API joblib per serializzare in modo efficiente oggetti Python con array NumPy.

Hai domande sul salvataggio e sul caricamento del tuo modello? Poni le tue domande nei commenti e faremo del nostro meglio per risponderti.

PCR (5).gif
PCR (4).gif
PCR.gif
PCR.gif
PCR.gif
PCR.gif
PCR (5).gif
3.gif
Vediamo se riesci a cliccarmi ! Nascondo una Sorpresa... (2).png

Ciao 

🤗 Articoli consigliati dalla nostra
Intelligenza Artificiale in base ai tuoi interessi

Correlazione Alta

Correlazione Media

Correlazione Bassa

Iscriviti

VUOI DIVENTARE UN MEMBRO DI INTELLIGENZA ARTIFICIALE ITALIA GRATUITAMENTE E TRARNE I SEGUENTI BENEFICI?

Corsi Gratis

più di 150 lezioni online

Dataset Gratis

più di 150o dataset

Ebook Gratis

più di 10 libri da leggere

Editor Gratis

un editor python online

Progetti Gratis

più di 25 progetti python

App Gratis

4 servizi web con I.A.

Unisciti Ora a oltre
1.000.000
di lettori e appassionanti d'I.A.

Tutto ciò che riguarda l'intelligenza Artificiale, in unico posto, in italiano e gratis.

MEGLIO DI COSI' NON SI PUO' FARE

Dopo l'iscrizione riceverai diversi Regali

VUOI SCRIVERE ARTICOLI INSIEME A NOI.

Grazie

bottom of page