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

                      害怕部署機(jī)器學(xué)習(xí)模型?這里有一篇手把手教程

                      2020-03-23 06:00:48  閱讀:-  來(lái)源:

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

                      閱讀本文后,你將能夠部署機(jī)器學(xué)習(xí)模型,并用你想要的編程語(yǔ)言進(jìn)行預(yù)測(cè)。沒(méi)錯(cuò),你可以堅(jiān)持使用 Python,也可以通過(guò) Java 或 Kotlin 直接在你的 Android 應(yīng)用程序中進(jìn)行預(yù)測(cè)。另外,你可以直接在你的 web 應(yīng)用程序中使用該模型——你有很多很多選擇。為了簡(jiǎn)單起見(jiàn),我會(huì)用 Postman。

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

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

                      ML 部署:

                      • model / Train.py

                      • app.py

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

                      pip install Flaskpip install Flask-RESTful

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

                      制作基本預(yù)測(cè)腳本

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

                      這里并不復(fù)雜,因?yàn)闄C(jī)器學(xué)習(xí)不是本文的重點(diǎn),這里只是模型部署。下面是整個(gè)腳本:

                      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)在你可以打開(kāi) app.py 文件并執(zhí)行一些導(dǎo)入操作。你需要操作系統(tǒng)模塊:Flask 和 Flask RESTful 中的一些東西,它們是 10 秒前創(chuàng)建的模型訓(xùn)練腳本,你還要將它們和 joblib 加載到訓(xùn)練模型中:

                      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 的實(shí)例。沒(méi)什么復(fù)雜的:

                      app = Flask(__name__)

                      api = Api(app)

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

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

                      train_model

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

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

                      我們將使用 post,因此數(shù)據(jù)不會(huì)直接通過(guò) URL 傳遞。你需要從用戶輸入中獲取屬性(根據(jù)用戶輸入的屬性值進(jìn)行預(yù)測(cè))。然后,可以調(diào)用加載模型的 .predict函數(shù)。僅僅因?yàn)檫@個(gè)數(shù)據(jù)集的目標(biāo)變量的格式是(0,1,2)而不是('Iris-setosa','Iris versicolor','Iris virginica'),你還需要解決這個(gè)問(wèn)題。最后,你可以返回預(yù)測(cè)的 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

                      })

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

                      api.add_resource(MakePrediction, '/predict')

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

                      if __name__ == '__main__':

                      app.run(debug=True)

                      這樣做就對(duì)了。你可以通過(guò) Postman 或其他工具啟動(dòng)模型并進(jìn)行預(yù)測(cè)。

                      為了防止你漏掉什么,這里是整個(gè) 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)

                      好的,你準(zhǔn)備好了嗎?

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

                      python app.py

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

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

                      • 將方法更改為 POST

                      • 輸入 localhost:5000/predict 作為 URL

                      • 在 Body 選項(xiàng)卡中選擇 JSON

                      • 輸入一些 JSON 進(jìn)行預(yù)測(cè)

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

                      瞧!幾乎馬上你就能從你的模型中得到預(yù)測(cè)。

                      寫(xiě)在最后

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

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

                      via:http://t.cn/AirsMxVF

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

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

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

                      兴隆县| 贵定县| 乌拉特前旗| 临沂市| 灵山县| 嵊泗县| 洪泽县| 哈尔滨市| 定结县| 三门县| 鄄城县| 广西| 西青区| 巴彦淖尔市| 绥芬河市| 洪雅县| 东山县| 盐亭县| 屏山县| 汾阳市| 青神县| 六枝特区| 涿鹿县| 铁岭市| 荔波县| 吉首市| 荆州市| 县级市| 洪泽县| 玛纳斯县| 大名县| 慈溪市| 乌海市| 宁武县| 凤城市| 开远市| 云梦县| 曲靖市| 四川省| 陈巴尔虎旗| 塔河县|