Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Azure 機器學習服務(以下簡稱 Azure ML)是 Microsoft 所推出的一個雲端服務,它讓您能夠使用易於操作的圖形化介面,進行資料整理以及機器學習的運算,您可以在這個服務上從 0 開始,搭配這服務上不斷推出的各種學習演算法,建立一個完整的學習模型,並且將學習後的智慧模型變成 Web 服務,便能透過 Web API 的方式結合,為您的應用程式加入智慧。(詳情可以見我之前寫過的文章)
如同其它的 Azure 服務一樣,Azure ML 也提供了可以操作它的 REST API,而 Azure 團隊也開發了一個 Python 的 Azure ML 用戶端函式庫,讓使用 Python 的開發人員或資料科學家便能輕易與 Azure ML 的各種服務結合。這篇文章介紹如何將您自己 Python 程式建立好的智慧模式,讓它透過 Azure ML 來提供服務。
建立模型
當然一開始您一定要有一個 Azure ML 的 workspace:
- 若您已經有 Azure 訂閱(沒有的話也可以免費註冊一個),直接在管理後台建立一個機器學習的工作區(workspace)。
- 若您尚未有 Azure 訂閱,也可以到 Azure ML Studio 中,用 Microsoft 帳號免費登入使用,這與已經有 Azure 訂閱的正式帳號比起來只是有一些計算時間及效能上的差異而已。
然後在你的 Python 專案中安裝 azureml 這個套件,這個只需要直接使用像是 pip install azureml 這樣的指令便能完成安裝。
以下是一個範例程式,它是使用 Anaconda 提供的 Python 2.7 版本所撰寫,這個 Python 中含有一些資料分析常用的模組(如:numpy, scikit-learn 等):
#Build the model from sklearn import svm from sklearn import datasets clf = svm.SVC() iris = datasets.load_iris() X, y = iris.data, iris.target clf.fit(X, y) #Predict using sample sample = [7,3.2,4.7,1.4] result = clf.predict(sample) #Check the result print(result[0])
上面這段程式使用了 SVM (Support Vector Machine) 並搭配安德森鳶尾花卉數據集來做機器學習,所以建好的模型(clf)便能拿來分類(clf.predict)鳶尾花的種類。
發佈至 Azure ML
透過上面這段程式碼已經建立好一個能分類鳶尾花的智慧模型,接下來我們只要使用 azureml 模組提供的發佈服務相關的函式就能把這個學習好的模型放上 Azure ML:
#Publish as a web service from azureml import services @services.publish('您 Azure ML 工作區 ID', '您 Azure ML 工作區的授權碼') @services.types(sep_l = float, sep_w = float, pet_l=float, pet_w=float) @services.returns(int) #0, or 1, or 2 def predictIris(sep_l, sep_w, pet_l, pet_w): inputArray = [sep_l, sep_w, pet_l, pet_w] return clf.predict(inputArray)
首先您必須先找到您 Azure ML 工作區的 ID 以及授權碼,只要您建立好 Azure ML 工作區,就可以在 Azure ML Studio 中的設定裡找到它們:
執行成功後,您就可以呼叫 predictIris.service(3,2,3,4) 這樣來測試是不是能正常運作,這個呼叫就是在 Azure ML 上執行完才回傳結果。 而要取得發佈到 Azure ML 的 Web 服務的資訊,就直接把
predictIris.service.help_urlpredictIris.service.urlpredictIris.service.api_key
這三個變數印出來看,第一個是說明文件的 URL,而第二個是要對這個智慧模型進行 HTTP POST 呼叫端點的 URL,第三個就是呼叫 API 時需要帶入的授權金鑰。這樣一來就能在其它平台發出 HTTP POST 的呼叫,運用到這個已經放在 Azure ML 上的智慧模型了。

