Guardar un modelo de aprendizaje automático

En el aprendizaje automático, mientras trabajamos con la biblioteca de aprendizaje de scikit , necesitamos guardar los modelos entrenados en un archivo y restaurarlos para reutilizarlos para comparar el modelo con otros modelos y probar el modelo con nuevos datos. El guardado de datos se denomina serialización , mientras que la restauración de datos se denomina deserialización .

Además, tratamos con diferentes tipos y tamaños de datos. Algunos conjuntos de datos se entrenan fácilmente, es decir, toman menos tiempo para entrenar, pero los conjuntos de datos cuyo tamaño es grande (más de 1 GB) pueden tomar mucho tiempo para entrenar en una máquina local, incluso con GPU. Cuando necesitemos los mismos datos entrenados en algún proyecto diferente o más tarde en algún momento, para evitar la pérdida de tiempo de entrenamiento, almacene el modelo entrenado para que pueda usarse en cualquier momento en el futuro. 

Hay dos formas en que podemos guardar un modelo en scikit learn:

Camino 1: Cuerda de salmuera

El módulo pickle implementa un algoritmo fundamental pero poderoso para serializar y deserializar una estructura de objeto de Python. 

El modelo Pickle proporciona las siguientes funciones:

  • pickle.dump para serializar una jerarquía de objetos, simplemente use dump(). 
  • pickle.load para deserializar un flujo de datos, llame a la función loads().

Ejemplo: apliquemos K vecino más cercano en el conjunto de datos del iris y luego guardemos el modelo. 

Python3

from sklearn.neighbors import KNeighborsClassifier as KNN
import numpy as np
 
# Load dataset
from sklearn.datasets import load_iris
iris = load_iris()
 
X = iris.data
y = iris.target
 
# Split dataset into train and test
X_train, X_test, y_train, y_test = \
    train_test_split(X, y, test_size=0.3,
                     random_state=2018)
 
# import KNeighborsClassifier model
knn = KNN(n_neighbors=3)
 
# train model
knn.fit(X_train, y_train)

Producción:

Guarde un modelo en una string usando pickle:

Python3

import pickle
 
# Save the trained model as a pickle string.
saved_model = pickle.dumps(knn)
 
# Load the pickled model
knn_from_pickle = pickle.loads(saved_model)
 
# Use the loaded pickled model to make predictions
knn_from_pickle.predict(X_test)

Producción: 

Forma 2: modelo en escabeche como un archivo usando joblib

Joblib es el reemplazo de pickle, ya que es más eficiente en objetos que llevan grandes arrays numpy. Estas funciones también aceptan objetos similares a archivos en lugar de nombres de archivos. 

joblib.dump to serialize an object hierarchy 
joblib.load to deserialize a data stream
from joblib import parallel, delayed

Guardar en un archivo en escabeche usando joblib 

Python3

from joblib import Parallel, delayed
import joblib
 
 
# Save the model as a pickle in a file
joblib.dump(knn, 'filename.pkl')
 
# Load the model from the file
knn_from_joblib = joblib.load('filename.pkl')
 
# Use the loaded model to make predictions
knn_from_joblib.predict(X_test)

Producción: 

 

Publicación traducida automáticamente

Artículo escrito por aakarsha_chugh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *