我知道 scikit-learn 模型可以通过使用 joblib(如此处所述:http://scikit-learn.org/stable/modules/model_persistence.html)保存在文件中。
但是,由于我在 postgresql plpythonu 函数中有机器学习过程,我宁愿将模型持久化在 Postgresql 数据库中。
什么是推荐的,在 Postgresql 数据库中存储 scikit-learn 模型的最方便的方法?
请您参考如下方法:
如果您使用的是 Django,则可以将 sci-kit 学习模型二值化
使用泡菜,然后将其保存到
具有 BinaryField 成员的表。
一个简单的例子:
views.py(保存)
from sklearn import svm
import pickle
from ml.models import MlModels
from rest_framework.response import Response
@api_view(['GET'])
def save(request):
if request.method == 'GET':
X = [[0.12, 22, 33, 100], [0.19, 19, 99, 33], [0.5, 50, 150, 0]]
y = [1, 0, 1]
model = svm()
model.fit(X=X, y=y)
data = pickle.dumps(model)
MlModels.objects.create(model=data)
return Response(status=status.HTTP_200_OK)
模型.py
from django.db import models
class MlModels(models.Model):
model = models.BinaryField()
views.py(使用)
import pickle
from ml.models import MlModels
from rest_framework.response import Response
@api_view(['GET'])
def predict(request):
if request.method == "GET":
X = [[0.12, 22, 33, 100]]
raw_model = MlModel.objects.all()[0]
model = pickle.loads(raw_model.model)
print(model.predict(X))
return Response(status=status.HTTP_200_OK)