久久综合给合久久狠狠狠974色|亚洲成熟丰满熟妇高潮xxxxx|国产又黄又黄又大又粗又爽的视频|日韩久久久精品无码一区二区三区|中文字幕无码乱人伦一区二区三区|国产成人无码区免费内射一片色欲|亚洲av无码久久精品一区二区三区

害怕部署機器學習模型?這里有一篇手把手教程

2020-03-22 12:29:53  閱讀:-  來源:

照片由 Franck V 發(fā)布在 Unsplash 上

閱讀本文后,你將能夠部署機器學習模型,并用你想要的編程語言進行預測。沒錯,你可以堅持使用 Python,也可以通過 Java 或 Kotlin 直接在你的 Android 應(yīng)用程序中進行預測。另外,你可以直接在你的 web 應(yīng)用程序中使用該模型——你有很多很多選擇。為了簡單起見,我會用 Postman。

不過,我不會解釋如何將這個模型放到一個實時服務(wù)器上,因為選擇太多了。該模型將在你的本地主機上運行,因此,你將無法從不同的網(wǎng)絡(luò)訪問它(但請隨意使用 google 查詢?nèi)绾螌⒛P筒渴鸬?AWS 或類似的東西上)。

我已經(jīng)做了以下目錄結(jié)構(gòu):

ML 部署:

  • model / Train.py

  • app.py

如果你已經(jīng)通過 Anaconda 安裝了 Python,那么你可能已經(jīng)預先安裝了所有庫,除了 Flask。因此,啟動終端并執(zhí)行以下語句:

pip install Flaskpip install Flask-RESTful

進展是不是很順利?很好,現(xiàn)在讓我們來看看好東西。

制作基本預測腳本

如果您正在遵循目錄結(jié)構(gòu),那么現(xiàn)在應(yīng)該打開 model/Train.py 文件。你先要加載虹膜數(shù)據(jù)集,并使用一個簡單的決策樹分類器來訓練模型。訓練完成后,我將使用 joblib 庫保存模型,并將精度分數(shù)報告給用戶。

這里并不復雜,因為機器學習不是本文的重點,這里只是模型部署。下面是整個腳本:

from sklearn import datasets

from sklearn.tree import DecisionTreeClassifier

from sklearn.model_selection import train_test_split

from sklearn.metrics import accuracy_score

from sklearn.externals import joblib

def train_model:

iris_df = datasets.load_iris

x = iris_df.data

y = iris_df.target

X_train, X_test, y_train, y_test = train_test_split(x, y, test_size=0.25)

dt = DecisionTreeClassifier.fit(X_train, y_train)

preds = dt.predict(X_test)

accuracy = accuracy_score(y_test, preds)

joblib.dump(dt, 'iris-model.model')

print('Model Training Finished.\n\tAccuracy obtained: {}'.format(accuracy))

部署

現(xiàn)在你可以打開 app.py 文件并執(zhí)行一些導入操作。你需要操作系統(tǒng)模塊:Flask 和 Flask RESTful 中的一些東西,它們是 10 秒前創(chuàng)建的模型訓練腳本,你還要將它們和 joblib 加載到訓練模型中:

import os

from flask import Flask, jsonify, request

from flask_restful import Api, Resource

from model.Train import train_model

from sklearn.externals import joblib

現(xiàn)在你應(yīng)該從 Flask RESTful 中創(chuàng)建 Flask 和 Api 的實例。沒什么復雜的:

app = Flask(__name__)

api = Api(app)

接下來要做的是檢查模型是否已經(jīng)訓練好了。在 Train.py 中,你已經(jīng)聲明該模型將保存在文件 iris-model.model 文件中,并且如果該文件不存在,則應(yīng)該首先對模型進行訓練。訓練完成后,可以通過 joblib 加載:

if not os.path.isfile('iris-model.model'):

train_model

model = joblib.load('iris-model.model')

現(xiàn)在你需要聲明一個用于進行預測的類。Flask RESTful 使用此編碼約定,因此你的類將需要從 Flask RESTful 資源模塊繼承。在類中,可以聲明 get、post或任何其他處理數(shù)據(jù)的方法。

我們將使用 post,因此數(shù)據(jù)不會直接通過 URL 傳遞。你需要從用戶輸入中獲取屬性(根據(jù)用戶輸入的屬性值進行預測)。然后,可以調(diào)用加載模型的 .predict函數(shù)。僅僅因為這個數(shù)據(jù)集的目標變量的格式是(0,1,2)而不是('Iris-setosa','Iris versicolor','Iris virginica'),你還需要解決這個問題。最后,你可以返回預測的 JSON 表示:

class MakePrediction(Resource):

@staticmethod

def post:

posted_data = request.get_json

sepal_length = posted_data['sepal_length']

sepal_width = posted_data['sepal_width']

petal_length = posted_data['petal_length']

petal_width = posted_data['petal_width']

prediction = model.predict([[sepal_length, sepal_width, petal_length, petal_width]])[0]

if prediction == 0:

predicted_class = 'Iris-setosa'

elif prediction == 1:

predicted_class = 'Iris-versicolor'

else:

predicted_class = 'Iris-virginica'

return jsonify({

'Prediction': predicted_class

})

我們就快完成了,加油!你還需要聲明一個路由,URL 的一部分將用于處理請求:

api.add_resource(MakePrediction, '/predict')

最后一件事是告訴 Python 去調(diào)試模式運行應(yīng)用程序:

if __name__ == '__main__':

app.run(debug=True)

這樣做就對了。你可以通過 Postman 或其他工具啟動模型并進行預測。

為了防止你漏掉什么,這里是整個 app.py 文件,你可以參考:

import os

from flask import Flask, jsonify, request

from flask_restful import Api, Resource

from model.Train import train_model

from sklearn.externals import joblib

app = Flask(__name__)

api = Api(app)

if not os.path.isfile('iris-model.model'):

train_model

model = joblib.load('iris-model.model')

class MakePrediction(Resource):

@staticmethod

def post:

posted_data = request.get_json

sepal_length = posted_data['sepal_length']

sepal_width = posted_data['sepal_width']

petal_length = posted_data['petal_length']

petal_width = posted_data['petal_width']

prediction = model.predict([[sepal_length, sepal_width, petal_length, petal_width]])[0]

if prediction == 0:

predicted_class = 'Iris-setosa'

elif prediction == 1:

predicted_class = 'Iris-versicolor'

else:

predicted_class = 'Iris-virginica'

return jsonify({

'Prediction': predicted_class

})

api.add_resource(MakePrediction, '/predict')

if __name__ == '__main__':

app.run(debug=True)

好的,你準備好了嗎?

不錯!導航到根目錄(app.py 就在根目錄中),啟動終端并執(zhí)行以下操作:

python app.py

大約一秒鐘后,你將得到一個輸出,顯示應(yīng)用程序正在本地主機上運行。

現(xiàn)在我將打開 Postman 并執(zhí)行以下操作:

  • 將方法更改為 POST

  • 輸入 localhost:5000/predict 作為 URL

  • 在 Body 選項卡中選擇 JSON

  • 輸入一些 JSON 進行預測

然后你可以點擊發(fā)送:

瞧!幾乎馬上你就能從你的模型中得到預測。

寫在最后

我希望你能看完這篇文章。如果你只是復制粘貼的所有內(nèi)容,只要你安裝了所有必需的庫,那么應(yīng)該就可以繼續(xù)。

我強烈建議你在自己的數(shù)據(jù)集和業(yè)務(wù)問題上利用這些新獲得的知識。如果你用 Python 以外的語言編寫應(yīng)用程序,并且使用 Python 只是為了數(shù)據(jù)和機器學習相關(guān)的東西,那么它就很有用了。

via:http://t.cn/AirsMxVF

雷鋒網(wǎng)年度評選——尋找19大行業(yè)的最佳AI落地實踐

創(chuàng)立于2017年的「AI最佳掘金案例年度榜單」,是業(yè)內(nèi)首個人工智能商業(yè)案例評選活動。雷鋒網(wǎng)從商用維度出發(fā),尋找人工智能在各個行業(yè)的最佳落地實踐。

第三屆評選已正式啟動,關(guān)注微信公眾號“雷鋒網(wǎng)”,回復關(guān)鍵詞“榜單”參與報名。詳情可咨詢微信號:xqxq_xq

江川县| 云和县| 祥云县| 城市| 根河市| 石家庄市| 嘉荫县| 杂多县| 永和县| 岳西县| 芮城县| 昭通市| 衡南县| 高青县| 中西区| 喀什市| 章丘市| 海口市| 张掖市| 永新县| 八宿县| 蛟河市| 勃利县| 手游| 邵阳县| 五原县| 巨鹿县| 雷山县| 灵川县| 浮梁县| 额尔古纳市| 延川县| 东丰县| 平遥县| 宁晋县| 绥化市| 安陆市| 昌都县| 巴林右旗| 巴中市| 皮山县|