如何使用 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+ 閱讀量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.