Written by
in
จาก Kaggle – วิธีการใช้ Logistic Regression บนข้อมูล Iris เราได้ Model มาแล้ว แต่ จะนำสู่ Production ได้อย่างไร ?
ใน Python มี Object Serialization ทำให้สามารถเก็บ Object ที่สร้างขึ้น ไปไว้ในไฟล์ ซึ่ง มีให้ใช้หลายตัว ได้แก่
มีคนทำการทดสอบความเร็ว พบว่า cpickle เร็วสุด (https://stackoverflow.com/questions/12615525/what-are-the-different-use-cases-of-joblib-versus-pickle) แต่ในที่นี้ จะใช้ joblib เพราะน่าจะเหมาะกับงานที่ต้องมีการ Load Data ขนาดใหญ่ ใช้งานร่วมกันหลาย Process (เท่าที่เข้าใจครับ)
การสร้างไฟล์ .pkl บน kaggle ดังนี้
from sklearn.externals import joblib joblib.dump(model, 'myiris.pkl')
ต่อไป จะเป็นขั้นตอนการติดตั้ง และการใช้ Flask ซึ่งเป็น Python Microframework และ ใช้ Flask RESTful เพื่อสร้าง REST API
pip install flask flask-restful
from flask import Flask, request from flask_restful import Resource, Api, reqparse from sklearn.externals import joblib import pandas as pd #from sklearn.linear_model import LogisticRegression app = Flask(__name__) api = Api(app) # Model model = joblib.load('myiris.pkl') class Iris(Resource): def get(self): return { "greeting":"Hello From IRIS Dataset"} def post(self): parser = reqparse.RequestParser() parser.add_argument('sl') parser.add_argument('sw') parser.add_argument('pl') parser.add_argument('pw') args = parser.parse_args() x = pd.DataFrame([[ args['sl'],args['sw'], args['pl'],args['pw'] ]] ,\ columns=['sepal_length', 'sepal_width', 'petal_length', 'petal_width']) result = model.predict(x) return {"result": result[0]}, 201 api.add_resource(Iris, "/iris") app.run(debug=True)
python iris.py
ได้ผลดังนี้
เดี๋ยวค่อยมาลงรายละเอียดเรื่อง วิธีการใช้งาน Flask และ การใช้ Machine Learning แบบต่าง ๆ กัน
Your email address will not be published. Required fields are marked *
Comment *
Name *
Email *
Website
Save my name, email, and website in this browser for the next time I comment.
Δ
Leave a Reply