Guarde el clasificador en el disco en scikit-learn en Python

En este artículo, cubriremos cómo guardar un clasificador Guardar en el disco en scikit-learn usando Python .

Siempre entrenamos nuestros modelos, ya sean clasificadores, regresores, etc., con la biblioteca de aprendizaje de scikit, que requiere un tiempo considerable para entrenar. Entonces podemos guardar nuestros modelos entrenados y luego recuperarlos cuando sea necesario. Esto nos ahorra mucho tiempo. La serialización es el proceso de guardar datos, mientras que la deserialización es el proceso de restaurarlos, aprenderemos a guardar los modelos clasificadores de dos maneras:

Método 1: Usando Pickle

Pickle es una biblioteca proporcionada por Python y es la forma estándar de guardar y recuperar archivos del almacenamiento. Primero serializa el modelo de objetos y luego lo guarda en el disco. Luego lo recuperamos usando deserialización. El decapado es un proceso en el que una jerarquía de objetos de Python se convierte en un flujo de bytes. Unpickling es el inverso del proceso Pickling donde un flujo de bytes se convierte en una jerarquía de objetos. 

  • dumps(): esta función se llama para serializar una jerarquía de objetos.
  • loads(): esta función se llama para deserializar un flujo de datos.

Sintaxis :

# Guardar modelo

encurtido de importación

pickle.dump(modelo, abierto(“modelo_clf_pickle”, ‘wb’))

# cargar recuperar

mi_modelo_clf = pickle.load(open(“modelo_clf_pickle”, ‘rb’))

Ejemplo: 

Tenemos el conjunto de datos del iris en el que entrenamos el clasificador K Nearest Neighbor. Luego guardamos el modelo usando el pickle y luego lo recuperamos usando el pickle y calculamos el puntaje del clasificador.

Python3

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
import pickle
  
# load the iris dataset as an example
iris = load_iris()
  
# store the feature matrix (X) and response vector (y)
X = iris.data
y = iris.target
  
# splitting X and y into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(
  X, y, test_size=0.4, random_state=1)
  
# training the model on training set
model_clf = KNeighborsClassifier(n_neighbors=3)
model_clf.fit(X_train, y_train)
  
# Saving classifier using pickle
pickle.dump(model_clf, open("model_clf_pickle", 'wb'))
  
# load classifier using pickle
my_model_clf = pickle.load(open("model_clf_pickle", 'rb'))
result_score = my_model_clf.score(X_test,y_test)
print("Score: ",result_score)

Producción

Score:  0.9833333333333333

Método 2: usar la biblioteca joblib

Joblib es el reemplazo de un pickle, ya que es más eficiente en objetos que llevan arrays NumPy grandes. Esto se crea únicamente con el fin de guardar los modelos y recuperarlos cuando sea necesario. Estas funciones también aceptan objetos similares a archivos en lugar de nombres de archivos.

  • joblib.dump se utiliza para serializar una jerarquía de objetos 
  • joblib.load se utiliza para deserializar un flujo de datos

Sintaxis :

# Save model
joblib.dump(model,"model_name.pkl")

# Retrieve model
joblib.load("model_name.pkl")

Ejemplo

Tenemos el conjunto de datos del iris en el que entrenamos el clasificador K Nearest Neighbor. Luego guardamos el modelo usando joblib y luego lo recuperamos usando joblib. Finalmente, calculamos la puntuación del clasificador.

Python3

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
import joblib
  
# load the iris dataset as an example
iris = load_iris()
  
# store the feature matrix (X) and response vector
# (y)
X = iris.data
y = iris.target
  
# splitting X and y into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.4, random_state=1)
  
# training the model on training set
model_clf = KNeighborsClassifier(n_neighbors=3)
model_clf.fit(X_train, y_train)
  
# Saving classifier using joblib
joblib.dump(model_clf, 'model_clf.pkl')
  
# load classifier using joblib
my_model_clf = joblib.load("model_clf.pkl")
result_score = my_model_clf.score(X_test, y_test)
print("Score: ", result_score)

Producción:

Score:  0.9833333333333333

Publicación traducida automáticamente

Artículo escrito por manavsarkar07 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 *