Django是一个流行的Python Web框架,它可以很方便地集成机器学习模型,进行预测和推理。我将介绍如何在Django项目中调用训练好的机器学习模型,并实现一个预测接口。
准备工作
首先我们需要一个训练好的机器学习模型。这里我们使用Scikit-Learn训练一个简单的线性回归模型作为示例。
import numpy as np
from sklearn.linear_model import LinearRegression
# 生成训练数据
X = np.array([[1], [2], [3], [4], [5]])
y = np.array([1, 3, 2, 3, 5])
# 训练模型
model = LinearRegression()
model.fit(X, y)
模型训练完成后,我们需要对模型进行序列化,方便在Django中加载使用。这里使用Joblib进行序列化。
import joblib
# 序列化模型
joblib.dump(model, 'model.joblib')
Django集成
在Django项目中,我们创建一个app,在这个app中集成机器学习模型。
首先在app的views.py
中加载模型:
import joblib
from django.conf import settings
import os
# 加载模型
model_path = os.path.join(settings.BASE_DIR, 'app/models/model.joblib')
model = joblib.load(model_path)
然后实现预测接口:
from rest_framework.decorators import api_view
from rest_framework.response import Response
@api_view(['POST'])
def predict(request):
data = request.data
# 进行预测
X = [[data['input']]]
y_pred = model.predict(X)[0]
result = {
'prediction': y_pred
}
return Response(result)
这里我们实现了一个简单的REST接口,前端可以通过POST请求,在request body中传入输入,获取模型预测结果。
最后在urls.py中配置这个预测接口的路由:
from django.urls import path
from .views import predict
urlpatterns = [
path('predict/', predict),
]
测试
运行Django服务器,我们可以测试这个预测接口:
curl -X POST -H "Content-Type: application/json" -d '{"input": 10}' http://localhost:8000/predict/
# 返回如下结果
{"prediction":8}
可以看到我们成功调用了机器学习模型进行了预测。通过类似的方式,可以很容易地在Django项目中集成各种机器学习模型,实现预测、推理等功能。