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