Aprendizaje de Scikit
Entrenamiento y guardado de un modelo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import json import pandas as pd from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.externals import joblib iris = pd.read_csv('/home/ma-user/work/iris.csv') X = iris.drop(['variety'],axis=1) y = iris[['variety']] # Create a LogisticRegression instance and train model logisticRegression = LogisticRegression(C=1000.0, random_state=0) logisticRegression.fit(X,y) # Save model to local path joblib.dump(logisticRegression, '/tmp/sklearn.m') |
Antes del entrenamiento, descarga el conjunto de datos iris.csv, descomprímelo y súbelo al directorio /home/ma-user/work/ de la instancia del cuaderno. Descargue el conjunto de datos iris.csv desde https://gist.github.com/netj/8836201. Para obtener más información sobre cómo cargar un archivo en una instancia de notebook, consulte Escenarios de carga y entradas.
Después de guardar el modelo, debe subirse al directorio OBS antes de publicarse. Los archivos config.json y customize_service.py deben estar incluidos durante la publicación. Para obtener detalles sobre el método de definición, véase Introducción a las especificaciones del paquete modelo.
Código de inferencia
En el archivo de código de inferencia de modelo customize_service.py, agregue una clase de modelo hijo. Esta clase de modelo hijo hereda las propiedades de su clase de modelo padre. Para obtener más información sobre las instrucciones de importación de diferentes tipos de clases de modelo padre, consulte Tabla 1.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# coding:utf-8 import collections import json from sklearn.externals import joblib from model_service.python_model_service import XgSklServingBaseService class UserService(XgSklServingBaseService): # request data preprocess def _preprocess(self, data): list_data = [] json_data = json.loads(data, object_pairs_hook=collections.OrderedDict) for element in json_data["data"]["req_data"]: array = [] for each in element: array.append(element[each]) list_data.append(array) return list_data # predict def _inference(self, data): sk_model = joblib.load(self.model_path) pre_result = sk_model.predict(data) pre_result = pre_result.tolist() return pre_result # predict result process def _postprocess(self,data): resp_data = [] for element in data: resp_data.append({"predictresult": element}) return resp_data |