原創(chuàng)|使用教程|編輯:鄭恭琳|2018-01-11 09:55:23.000|閱讀 617 次
概述:Python和R是實現(xiàn)ML應(yīng)用程序的兩種非常流行的語言,在野外部署通常需要與用另一種語言編寫的應(yīng)用程序集成。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
Python和R是數(shù)據(jù)中心工程師最流行的編程語言之一。但是,它們并不總是構(gòu)建應(yīng)用程序的其余部分的語言。這就是為什么你有時需要找到一種方法來將用Python或R編寫的機(jī)器學(xué)習(xí)模型部署到基于.NET等語言的環(huán)境中。
在本文中,我將展示如何使用Web API將機(jī)器學(xué)習(xí)模型集成到.NET編寫的應(yīng)用程序中。
我們可以使用Flask作為共享和主持我們的機(jī)器學(xué)習(xí)預(yù)測的一種方式。讓我們使用來自Kaggle比賽的著名的Titanic數(shù)據(jù)集。首先,創(chuàng)建一個新文件,并將其命名為titanic_app.py(或任何你想要的名稱)。導(dǎo)入并初始化Flask應(yīng)用程序;然后在底部啟動服務(wù)器。在中間留出空間,以便稍后添加模型和路徑。
import flask app = flask.Flask(__name__) #-------- MODEL GOES HERE -----------# #-------- ROUTES GO HERE -----------# if __name__ == '__main__': '''Connects to the server''' HOST = '127.0.0.1' PORT = 4000 #make sure this is an integer app.run(HOST, PORT)
請注意,我們指定了我們希望應(yīng)用程序運行的主機(jī)和端口。
加載Titanic數(shù)據(jù)集并在其上創(chuàng)建一個模型:
#-------- MODEL GOES HERE -----------# import numpy as np import pandas as pd from sklearn.ensemble import RandomForestClassifier df = pd.read_csv('data/titanic.csv') include = ['Pclass', 'Sex', 'Age', 'Fare', 'SibSp', 'Survived'] # Create dummies and drop NaNs df['Sex'] = df['Sex'].apply(lambda x: 0 if x == 'male' else 1) df = df[include].dropna() X = df['Pclass', 'Sex', 'Age', 'Fare', 'SibSp'] y = df['Survived'] PREDICTOR = RandomForestClassifier(n_estimators=100).fit(X, y)
這是有趣的部分。現(xiàn)在我們有一個PREDICTOR,我們需要得到一些值來做出我們的預(yù)測。一種方法是從URL參數(shù)中獲取信息,這些參數(shù)是出現(xiàn)在URL中的?之后的key:value對。 例如,如果您導(dǎo)航到//localhost:4000/predict?pclass=1&sex=1&age=18&fare=500&sibsp=0,則Flask可以為您檢索該數(shù)據(jù)。
我們寫一條路徑來做到這一點:
#-------- ROUTES GO HERE -----------# @app.route('/predict', methods=["GET"]) def predict(): pclass = flask.request.args['pclass'] sex = flask.request.args['sex'] age = flask.request.args['age'] fare = flask.request.args['fare'] sibsp = flask.request.args['sibsp'] item = [pclass, sex, age, fare, sibsp] score = PREDICTOR.predict_proba(item) results = {'survival chances': score[0,1], 'death chances': score[0,0]} return flask.jsonify(results)
保存文件并啟動您的應(yīng)用程序。您的模型現(xiàn)在有一個簡單的API!
在您的.NET環(huán)境中部署Flask有很多選擇——它們將大大依賴于您的基礎(chǔ)架構(gòu)選擇。為了讓您了解這個過程,我們來看看使用Microsoft Azure部署到IIS環(huán)境。
我會假設(shè)你:
如果您已正確設(shè)置環(huán)境,則可以將您的Web應(yīng)用程序部署到Azure。這可以通過創(chuàng)建一個web.config文件來更新Web服務(wù)器上的文件來匹配您的實例中的文件。為此,請執(zhí)行以下步驟:
< system.webServer > < handlers > < add name="PythonHandler" path="*" verb="*" modules="FastCgiModule" scriptProcessor="D:\home\Python27\python.exe|D:\home\Python27\wfastcgi.py" resourceType="Unspecified" requireAccess="Script"/ > < /handlers > < /system.webServer >
< !-- Flask apps only: change the project name to match your app -- > < add key="WSGI_HANDLER" value="tutorial.app"/ >
D:\home\Python27>python -m pip install --upgrade -r /home/site/wwwroot/requirements.txt
更多有關(guān)信息,請查看以下鏈接:
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn