涉及的步驟

  1. 構(gòu)建 Django 應(yīng)用程序
  2. 訓(xùn)練機器學(xué)習(xí)模型
  3. 測試 API

構(gòu)建 Django 應(yīng)用程序

讓我們創(chuàng)建并初始化開發(fā)環(huán)境。

python3 -m venv env
source env/bin/activate

安裝所需的軟件包:

pip install django djangorestframework sklearn numpy

打開命令行并輸入注釋以創(chuàng)建和復(fù)制存儲 Django 項目的目錄。為此應(yīng)用程序創(chuàng)建一個目錄并將其復(fù)制(cd)到該目錄中。

mkdir DjangoMLAPI 
cd DjangoMLAPI
django-admin startproject api

我們已經(jīng)創(chuàng)建了一個 Django 項目,其中將包含我們正在處理的所有代碼。它還將包含數(shù)據(jù)庫配置和應(yīng)用程序設(shè)置。

“項目”對應(yīng)于我們正在開發(fā)的應(yīng)用程序,而 Django 將項目中的包稱為“應(yīng)用程序”。主要包將是 API

Start Project API 創(chuàng)建了大量運行我們的項目所需的樣板代碼。它將類似于左側(cè)的文件樹。

外部 /api 文件夾只包含我們項目的所有代碼。

我們項目的主要 python 包是內(nèi)部的 /api。

python manage.py runserver

如果您在 Web 瀏覽器中輸入 127.0.0.1:8000,您應(yīng)該會看到默認的 Django 歡迎網(wǎng)頁。

之后,我們將在我們的項目中創(chuàng)建一個“應(yīng)用程序”。這將傳播 API 背后的機器學(xué)習(xí)。我們將命名這個聲音預(yù)測器。

cd api
python manage.py startapp soundpredictor

我們添加了一個名為 /soundpredictor 的文件夾,里面有很多文件。

view.py包含可以在每個請求上運行的代碼。因此,我們在方程中添加了矢量化和回歸邏輯。

apps.py是我們將在其中指定配置類的文件。這段代碼只會執(zhí)行一次,所以我們最終會把代碼放在那里加載我們的模型

讓我們將此應(yīng)用程序添加到 APPS_INSTALLED。打開 /api/api/settings.py 并將“聲音預(yù)測器”添加到 APPS_INSTALLED。

APPS_INSTALLED = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'predictor'
]

在 /soundpredictor 中創(chuàng)建一個名為 /models 的文件夾很重要。將經(jīng)過訓(xùn)練的模型移動到此目錄中。

請注意,在真實的生產(chǎn)環(huán)境中,這樣我們就不必在每次模型更改時重新部署應(yīng)用程序。但是,在這種情況下,我們只會在應(yīng)用程序中包含模型。

我們必須將這些行添加到設(shè)置中。此代碼將加載模型。

MODELS = os.path.join(BASE_DIR, 'soundpredictor/models')

編寫在應(yīng)用程序啟動時加載模型的代碼。在 /api/soundpredictor/apps.py 中部署代碼。創(chuàng)建模型路徑并將模型加載到單獨的變量中。

from django.apps import AppConfig
from django.conf import settings
import os
import pickle
class soundpredictorConfig(AppConfig):
path = os.path.join(settings.MODELS, 'models.p')
with open(path, 'rb') as pickled:
data = pickle.load(pickled)
regressor = data['regressor']
vectorize = data['vectorize']

現(xiàn)在我們需要創(chuàng)建一個視圖來鼓勵我們的回歸邏輯。打開 /api/predictor/views.py 并使用此代碼進行更新。

from django.shortcuts import render 
from .apps import soundpredictorConfig
from django.http import JsonResponse
from rest_framework.views import APIView
class call_model(APIView):
def get(self,request):
if request.method == 'GET':
sound = request.GET.get('sound')
vector = PredictorConfig.vectorizer.transform([sound])
prediction = soundpredictorConfig.regressor.predict(vector)[0]
response = {'dog': prediction}
return JsonResponse(response)

最后一步是將 URL 添加到我們的模型中,以便我們可以訪問它們。請將以下代碼添加到 /api/api/urls.py 中的 urls.py 文件中:

from django.urls import path
from predictor import viewsurlpatterns = [
path('classify/', views.call_model.as_view())
]
from django.conf.urls import url, include
from rest_framework.routers import DefaultRouter
urlpatterns = [
url(r"^api/v1/", include(router.urls)),
]

訓(xùn)練機器學(xué)習(xí)模型

要開始該項目,請打開一個 jupyter notebook。運行命令,

pip3 install jupyter notebook

ipython kernel install --user --name=venv

創(chuàng)建一個目錄來存儲筆記本文件,

mkdir research
cd research
jupyter notebook

這種預(yù)測分析是訓(xùn)練模型根據(jù)它的語氣來預(yù)測動物是否是鴨子。

因此,我們將使用虛構(gòu)數(shù)據(jù)訓(xùn)練模型。這表明它將以與您可能創(chuàng)建的任何其他 sklearn 模型相同的方式工作。

該算法將根據(jù)動物發(fā)出的聲音確定它是否是鴨子。

創(chuàng)建虛構(gòu)數(shù)據(jù)后,每個內(nèi)部列表中的第一個索引是動物的聲音,第二個索引是指示動物是否是鴨子的布爾標簽。

data = [
['Honk', 1],
['Woof', 0],
['ruff', 0],
['bowwow', 0],
['cackle', 1],
['moo', 0],
['meow', 0],
['clang', 1],
['buzz', 0],
['quack', 0],
['pika', 0]
]

下一個任務(wù)是將上述數(shù)據(jù)轉(zhuǎn)換為特征和標簽列表。

X = []
y = []
for i in data:
X.append( i[0] )
y.append( i[1] )

在我們將特征轉(zhuǎn)換為列表后,擬合向量化器,并轉(zhuǎn)換特征。

from sklearn.feature_extraction.text import CountVectorizer
vectorize = CountVectorizer()
X_vectorized = vectorize.fit_transform(X)

我們正處于訓(xùn)練線性回歸模型的最后一步,

from sklearn.linear_model import LinearRegression
import numpy as npregressor = LinearRegression()
regressor.fit(X_vectorized, y)

我們必須用幾個例子來測試它以檢查模型是否正常工作,

test_feature = vectorizer.transform(['Honk'])
prediction = regressor.predict(test_feature)
print(prediction)
test_feature = vectorizer.transform(['bowwow'])
prediction = regressor.predict(test_feature)
print(prediction)
test_feature = vectorizer.transform(['meoww'])
prediction = regressor.predict(test_feature)
print(prediction)]
#=> [1.]
#=> [0.]
#=> [0.36363636]

模型看起來很完美。

Pickle 我們的模型到一個字節(jié)流中,以便它可以將它們存儲在應(yīng)用程序中。

import pickle
pick = {
'vectorize': vectorize,
'regressor': regressor
}
pickle.dump( pick, open( 'models' + ".p", "wb" ) )

測試 API

我們可以使用以下命令運行服務(wù)器:

python manage.py runserver

添加幾個 curl 請求來測試它。我們可以直接在瀏覽器地址欄中輸入網(wǎng)址。

curl -X GET http://127.0.0.1:8000/classify/?sound=buzz
#=> {"duck": 0.0}
curl -X GET http://127.0.0.1:8000/classify/?sound=quack
#=> {"duck": 1.0}

這個模型正在工作!接近 1 的數(shù)字表示它是一只鴨子,接近 0 的數(shù)字表示它不是一只鴨子。

我們也可以在瀏覽器中檢查這些。在網(wǎng)址:

http://127.0.0.1:8000/classify/?sound=buzz

http://127.0.0.1:8000/classify/?sound=quack

Django API 可以加載和運行經(jīng)過訓(xùn)練的機器學(xué)習(xí)模型,并使用 URL 測試應(yīng)用程序。

下載Python源代碼: plot_iris_svc.py

下載Jupyter notebook源代碼: plot_iris_svc.ipynb

本文章轉(zhuǎn)載微信公眾號@機器學(xué)習(xí)算法與知識圖譜

熱門推薦
一個賬號試用1000+ API
助力AI無縫鏈接物理世界 · 無需多次注冊
3000+提示詞助力AI大模型
和專業(yè)工程師共享工作效率翻倍的秘密
返回頂部
上一篇
kfp-server-api:一個省時高效的 Python 庫
下一篇
Python + BaiduTransAPI :快速檢索千篇英文文獻(附源碼)
国内精品久久久久影院日本,日本中文字幕视频,99久久精品99999久久,又粗又大又黄又硬又爽毛片
国产精品一区二区三区网站| 亚洲欧洲精品一区二区精品久久久 | 中文字幕在线观看不卡| 日本一区二区三区高清不卡| 国产午夜亚洲精品羞羞网站| 国产精品久久久久精k8| 一区二区三区四区在线免费观看| 亚洲精品日产精品乱码不卡| 亚洲福利国产精品| 蜜桃视频在线观看一区| 国产精品888| 97se狠狠狠综合亚洲狠狠| 欧美午夜一区二区三区| 欧美α欧美αv大片| 国产日产欧美一区二区三区| 亚洲精品国产a久久久久久| 视频一区国产视频| 天天综合日日夜夜精品| 国产精品国产精品国产专区不片| 99精品久久只有精品| 久久精品999| 日本欧美一区二区在线观看| 日产国产高清一区二区三区| 在线观看日韩电影| 国产精品久久久久桃色tv| ...xxx性欧美| 免费在线观看日韩欧美| 国产aⅴ综合色| 欧洲中文字幕精品| 欧美成人a视频| 亚洲天堂2014| 精品在线视频一区| 成人国产在线观看| 欧美一区二区福利在线| 自拍偷自拍亚洲精品播放| 免费观看30秒视频久久| 一本一本大道香蕉久在线精品 | 亚洲欧美另类久久久精品| 捆绑调教一区二区三区| 成人av网站大全| 欧美sm极限捆绑bd| 亚洲国产视频网站| 丁香婷婷综合网| 日韩区在线观看| 亚洲国产综合色| 成人av网站在线观看免费| 欧美一区二区三区喷汁尤物| 亚洲精品写真福利| 国产不卡视频在线播放| 欧美一区二区二区| 亚洲国产成人av网| 91在线丨porny丨国产| 国产亚洲精品福利| 精品无人码麻豆乱码1区2区| 欧美片网站yy| 亚洲一区二区三区美女| 色哟哟在线观看一区二区三区| 久久久久九九视频| 国产一区日韩二区欧美三区| 欧美肥妇bbw| 亚洲va欧美va国产va天堂影院| 99精品1区2区| 综合网在线视频| av资源站一区| 国产精品美女久久久久久久| 国产经典欧美精品| 久久久91精品国产一区二区三区| 狠狠色综合日日| 久久综合九色综合欧美亚洲| 麻豆国产欧美一区二区三区| 日韩无一区二区| 麻豆精品国产91久久久久久| 欧美成人午夜电影| 精品一区二区三区久久| 欧美精品一区二| 国产精品18久久久久久vr| 国产亚洲精久久久久久| 国产成人久久精品77777最新版本| 精品第一国产综合精品aⅴ| 国产综合久久久久影院| 久久综合色天天久久综合图片| 国产资源在线一区| 久久天天做天天爱综合色| 国产激情91久久精品导航 | 奇米综合一区二区三区精品视频 | 久久久久久麻豆| 高清国产一区二区| 亚洲欧洲精品天堂一级 | 国产一区二区三区综合| 国产精品国产三级国产aⅴ中文| 丰满放荡岳乱妇91ww| 椎名由奈av一区二区三区| 日本道色综合久久| 婷婷中文字幕综合| 2023国产精品| 97久久精品人人爽人人爽蜜臀| 亚洲综合av网| 精品免费一区二区三区| 成人理论电影网| 亚洲国产成人高清精品| 欧美精品一区二区在线播放| 成人性色生活片| 亚洲高清中文字幕| 久久综合国产精品| 色哟哟精品一区| 精品一区二区三区久久| 亚洲女人****多毛耸耸8| 欧美一区二区三区性视频| 国产成人免费视频网站高清观看视频| 亚洲九九爱视频| ww久久中文字幕| 欧美性生活大片视频| 国产成人在线网站| 亚洲午夜久久久久中文字幕久| 欧美精品一区二区三区蜜桃| 欧美最新大片在线看| 国产精品香蕉一区二区三区| 亚洲国产一区二区三区青草影视| 久久久久亚洲综合| 欧美精品日韩精品| 91在线视频观看| 国产美女精品在线| 五月综合激情网| 亚洲欧美日韩久久| 久久久久久久精| 日韩欧美激情一区| 欧美日韩一区二区三区在线| 成人av在线影院| 国产电影一区在线| 久久狠狠亚洲综合| 日本亚洲免费观看| 亚洲高清免费一级二级三级| 成人欧美一区二区三区小说| 国产午夜亚洲精品羞羞网站| 日韩欧美亚洲一区二区| 欧美色倩网站大全免费| 99re热这里只有精品视频| 国产美女一区二区| 久久国产生活片100| 日韩国产在线观看一区| 亚洲综合视频在线| 亚洲精品国产精华液| 亚洲欧美另类久久久精品| 国产精品美女久久久久aⅴ国产馆| 精品美女在线观看| 欧美成人女星排名| 欧美videofree性高清杂交| 91精品国产综合久久久久| 欧美日韩不卡在线| 欧美日韩日日夜夜| 3atv一区二区三区| 69堂国产成人免费视频| 91精品在线一区二区| 在线播放欧美女士性生活| 欧美网站大全在线观看| 欧美性生活大片视频| 91成人免费网站| 91久久国产最好的精华液| 一本大道久久a久久综合| 99久久婷婷国产综合精品电影| 懂色av中文一区二区三区 | 欧美色区777第一页| 欧美日韩亚洲高清一区二区| 欧美区一区二区三区| 日韩一区二区中文字幕| 久久一区二区三区四区| 中文无字幕一区二区三区 | 国产成人在线免费观看| 成人精品国产免费网站| 一本一道波多野结衣一区二区| 欧美三电影在线| 精品国产一区二区在线观看| 国产女人aaa级久久久级 | 午夜精品久久久久久久 | 777午夜精品视频在线播放| 日韩一级片在线播放| 久久综合狠狠综合| 国产精品婷婷午夜在线观看| 亚洲欧美日韩中文播放| 日韩精品成人一区二区三区| 国产在线视视频有精品| 97精品久久久久中文字幕| 欧美挠脚心视频网站| 精品国产a毛片| 亚洲天天做日日做天天谢日日欢| 亚洲成人第一页| 国产**成人网毛片九色| 精品1区2区3区| 久久综合一区二区| 亚洲精品亚洲人成人网| 欧美a级一区二区| av中文一区二区三区| 91精品国产综合久久久久久| 欧美韩日一区二区三区四区| 午夜一区二区三区视频| 国产黑丝在线一区二区三区| 欧美视频在线一区| 国产精品日日摸夜夜摸av| 免费在线欧美视频| 色婷婷久久久综合中文字幕|