對于以數據為中心的工程師來說,Python和R是數據中心最流行的編程語言之一。但是,它們并不總是構建應用程序的其余部分的語言。這就是為什么你有時需要找到一種方法,將用Python或R編寫的機器學習模型部署到基于.NET等語言的環境中。
在本文中,將為大家展示如何使用Web API將機器學習模型集成到.NET編寫的應用程序中。
輸入:Flask
我們可以使用Flask作為共享和主持機器學習預測的一種方式。讓我們使用來自著名的Kaggle比賽的Titanic 數據集。首先,創建一個新文件,并將其稱為titanic_app.py(或任何你想要的名字)。導入并初始化Flask應用程序,然后在底部啟動服務器。在中間留出空間,以便稍后在中間添加模型和路線。
請注意,我們指定了我們運行的希望應用程序的主機和端口。
創建并訓練一個模型
加載Titanic 數據集并在其上創建一個模型:
制作一個簡單的API
這是比較有趣的部分。現在有一個預測,需要一些值來預測,一種方法是從URL參數中獲取信息,在這之后出現的值對是關鍵?在一個URL中。例如,如果您導航到http:// localhost:4000 / predict?pclass = 1&sex = 1&age = 18&fare = 500&sibsp = 0,則Flask可以為你檢索該數據。
保存文件并啟動你的應用程序。現在就有一個簡單的API模型了!
部署到NET環境
在NET環境中部署Flask有很多選擇,它們將大大依賴于你的基礎架構的選擇。為了了解這個過程,我們來看看使用Microsoft Azure部署到IIS環境。
假設:
·你已經創建了一個Azure Cosmos數據庫(這篇文章的范圍之外)。
·已經創建了一個Flask Web應用程序(正如我們上面所述的)。
·熟悉Azure和Visual Studio。
如果你已正確設置環境,則可以將你的Web應用程序部署到Azure。這可以通過創建一個web.config文件來更新Web服務器上的文件來匹配你的實例中的文件。為此,請執行以下步驟:
·在Visual Studio解決方案資源管理器中,右鍵單擊該項目并選擇添加新建項目。在出現的對話框中,選擇Azure web.config(Fast CGI)模板,然后選擇確定。這會在項目根目錄下創建一個web.config文件。
·修改web.config,使路徑與Python安裝相匹配。例如,對于Python 2.7 x64,條目應該如下所示:
·將web.config中的WSGI_HANDLER條目設置為tutorial.app,以匹配項目名稱,如下所示:
·在Visual Studio Solution Explorer中,展開tutorial文件夾,右鍵單擊靜態文件夾,選擇Add> New Item,選擇Azure靜態文件web.config模板,然后選擇OK。此操作將在禁用該文件夾的Python處理的靜態文件夾中創建另一個web.config。該配置將靜態文件的請求發送到默認Web服務器,而不是使用Python應用程序。
·保存文件,然后右鍵單擊解決方案資源管理器中的項目(確保你還沒有在本地運行),然后選擇發布。
·在“發布”對話框中,選擇“Microsoft Azure應用程序服務”,選擇“新建”,然后單擊“發布”。
·在“創建應用程序服務”對話框中,輸入Web應用程序的名稱以及訂閱、資源組和應用程序服務計劃。然后,點擊創建。
·幾秒鐘后,Visual Studio完成將文件復制到服務器,并在http://.azurewebsites.net/頁面上顯示以下錯誤消息:“由于發生內部服務器錯誤,無法顯示頁面”。
·在Azure門戶中,打開你的新的應用程序服務帳戶。在導航菜單中,向下滾動到開發工具部分,選擇擴展,然后單擊添加。
·在Choose Extension頁面中,向下滾動到最新的Python 2.7安裝并選擇x86或x64位選項,然后單擊OK接受合法的條款。
·使用Kudu控制臺,你可以通過https://scm.azurewebsites.net/DebugConsole找到它,以安裝應用程序的requirements.txt文件中列出的軟件包。為此,在Kudu診斷控制臺中,導航到D: home Python27中的Python文件夾,然后按照Kudu控制臺部分中所述運行以下命令:
D: home Python27> python -m pip install --upgrade -r /home/site/wwwroot/requirements.txt
·通過按下重新啟動按鈕來安裝新軟件包之后,在Azure門戶中重新啟動App Service。
一旦完整配置服務器環境后,刷新瀏覽器中的頁面,即可顯示Web應用程序。