本文介绍了如何在Django项目中使用Scikit-Learn训练的线性回归模型进行预测,并通过RESTfulAPI实现模型调用和预测功能。
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项目中集成各种机器学习模型,实现预测、推理等功能。