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