zla*_*tko 8 postgresql persistence scikit-learn
我知道 scikit-learn 模型可以通过使用 joblib 保存在文件中(如下所述:http://scikit-learn.org/stable/modules/model_persistence.html)。但是,由于我在 postgresql plpythonu 函数中有机器学习过程,所以我宁愿将模型保留在 Postgresql 数据库中。
在 Postgresql 数据库中存储 scikit-learn 模型的最方便的推荐方法是什么?
如果您使用 Django,您可以对 sci-kit 学习模型进行二值化
使用 pickle,然后将其保存到具有 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)
Run Code Online (Sandbox Code Playgroud)
模型.py
from django.db import models
class MlModels(models.Model):
model = models.BinaryField()
Run Code Online (Sandbox Code Playgroud)
视图.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)
Run Code Online (Sandbox Code Playgroud)
以下是 Python 中的示例代码,用于将训练后的模型发送到 Postgres 表。请注意,您首先需要创建一个具有“bytea”类型列的表,以二进制格式存储 pickle sklearn 模型。
from sklearn import svm
import psycopg2
import pickle
#### # Connect to Postgres
connection = psycopg2.connect(user, password, host, port, database)
cur = connection.cursor()
model = svm.OneClassSVM()
model.fit(features) # features are some training data
data = pickle.dumps(model) # first we should pickle the model
#### # Assuming you have a Postgres table with columns epoch and file
sql = "INSERT INTO sampletable (epoch, file) VALUES(%s)"
cur.execute(sql, (epoch, psycopg2.Binary(data)))
connection.commit()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3823 次 |
| 最近记录: |