如何使用 Django 部署机器学习模型?


Django 是一个用于创建可扩展且健壮的 Web 应用程序的高级 Python 框架。在 Python 中,这是使用最广泛的框架。它遵循 MVT(模型-视图-模板)设计模式。其他 MVC 框架,如 Ruby on Rails 和 Laravel,与它密切相关。MVC 框架的显示和模型元素由控制器管理,但在 Django 中,框架隐式地处理控制器的任务。Django 允许您在一个项目中开发多个应用程序。应用程序具有独立运行所需的所有功能。应用程序被视为一个包,可以在其他应用程序中重复使用,无需进行重大修改。这是使用 Django 创建 Web 应用程序的最大优势。

什么是 Django REST Framework?

Django REST 框架是使用 Django 和 Python 构建强大的 Web API 的出色工具。它允许您轻松地序列化数据并与其他程序共享。它充当数据库和执行数据库查询和数据格式化的应用程序之间的屏障。在大多数情况下,JSON 用于格式化数据。

在 Django 中集成机器学习模型的方法

机器学习模型通常在 Python 中开发,并在 Jupyter Notebook 或其他 IDE(集成开发环境)中本地执行。为了使您的机器学习模型在 Web 应用程序中可用,可以执行以下操作。

在 Web 应用程序中硬编码 ML 模型。这是在 Web 上部署机器学习模型(如支持向量机或线性回归分类器)最简单的方法。但是,如果您尝试创建更复杂的模型(如神经网络),它有很多局限性。

最有效的方法是在 ML 模型和 Web 界面之间创建通信接口。它将获取模型的数据,然后模型将自行处理数据。一旦您从模型收到预测,此接口将引导您返回到 Web 应用程序的末端。我们可以通过 REST API 或 WebSocket 来实现这一点。

在 Django 项目中集成糖尿病预测模型

在 Django 项目中集成机器学习模型需要几个步骤。

  • 首先,您需要将机器学习模型下载为 .py 文件。

  • 然后,应在训练后保存模型以避免过拟合。

  • 之后,应创建一个应用程序,该应用程序通过 HTML 表单获取用户数据并输出预测结果。

让我们开始将模型与 Django 项目集成。


在本例中,example 是一个 Django 项目,而 mlmodel 是 example 项目中的一个 Django 应用程序。

下一步是创建一个 Django 应用程序,其中将包含与此模型的链接。

我们必须创建机器学习模型的 .py 文件。您可以在 Jupyter 和 Google Colab 中将笔记本下载为 Python 文件。

然后,由于在相同数据上多次训练模型会导致过拟合,因此我们将模型保存在文件中。这可以通过使用 joblib 库来完成,该库允许您将模型转储到 .sav 文件中。此步骤不可跳过,因为如果训练后的模型未保存,则模型的准确性将受到影响。

#Training the model
cls=svm.SVC(kernel='linear')
#fitting triaining data to the classifier
cls.fit(x_train,y_train)
filename= 'saved_model.sav'
saved_model=joblib.dump(cls,filename)

以上代码片段显示了如何使用 joblib 库保存模型。

然后,我们将处理模板,即用户将通过其输入数据并显示预测结果的 HTML 代码。因此,我们将需要 form.html 和 result.html 页面。

form.html 将包含一个 HTML 表单,该表单将所有必要的字段作为输入,并在提交表单后,用户将被重定向到 result.html,并在其中显示预测结果。

然后,我们必须将保存的模型、.py 文件和数据集保存在与应用程序相同的文件夹中。

此后,项目的文件夹结构如下所示。


然后,您可以为 mlmodel 应用程序编写 views.py 和 urls.py,并运行应用程序。

urls.py 应包含允许计算机知道将哪个链接重定向到哪个页面的信息。

在本例中,我使用了一个糖尿病预测模型并将其与 Django 项目集成。.

#urls.py in mlmodel
from django.contrib import admin
from django.urls import path
from . import views
urlpatterns = [
   path('diabetes',views.diabetes,name='diabetes'),
   path('result',views.result,name='result'),
]

views.py 将包含有关如何处理用户输入信息的代码。

from django.shortcuts import render
from django.http import HttpResponse
import joblib
import numpy as np
def diabetes(request):
   return render(request, 'diabetes.html')
def result(request):
   cls=joblib.load('saved_model.sav')
   lis=[]
   lis.append(request.GET['Pregnancies'])
   lis.append(request.GET['Glucose'])
   lis.append(request.GET['Blood Pressure'])
   lis.append(request.GET['Skin Thickness'])
   lis.append(request.GET['Insulin'])
   lis.append(request.GET['BMI'])
   lis.append(request.GET['DPF'])
   lis.append(request.GET['Age'])
   #print(lis)
   data_array = np.asarray(lis)
   arr= data_array.reshape(1,-1)
   ans = cls.predict(arr)
   print(ans)
   finalans=''
   if(ans==1):
      finalans='You may have diabetes'
   elif(ans==0):
      finalans = 'You do not have diabetes'
   return render(request, "result.html",{'ans':finalans})

模板可以根据开发人员的选择进行制作。但是结果页面应打印 views.py 文件发送的“ans”。

用户将需要在其中输入数据的表单可能如下面的屏幕截图所示。


结果页面可能如下面的屏幕截图所示。


您已成功将机器学习模型集成到 Django 项目中。

更新于:2022年9月5日

6K+ 阅读量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告