使用 Azure 机器学习服务执行您使用 Python 建立好的智能模型

jopen 9年前

        Azure  机器学习服务(以下简称   Azure ML) 是 Microsoft 所推出的一个云端服务,它让您能够使用易于操作的图形化接口,进行数据整理以及机器学习的运算,您可以在这个服务上从 0 开始,搭配这服务上不断推出的各种学习算法,建立一个完整的学习模型,并且将学习后的智能模型变成 Web 服务,便能透过 Web API 的方式结合,为您的应用程序加入智能。


        
使用 Azure 机器学习服务执行您使用 Python 建立好的智能模型 </div>

        如 同其它的 Azure 服务一样,Azure ML 也提供了可以操作它的 REST API,而 Azure 团队也开发了一个 Python 的 Azure ML 客户端函式库(https://github.com/Azure/Azure-MachineLearning-ClientLibrary- Python),让使用 Python 的开发人员或数据科学家便能轻易与 Azure ML 的各种服务结合。这篇文章介绍如何将您自己 Python 程序建立好的智能模式,让它透过 Azure ML 来提供服务。 
</div>

         建立模型

        当然一开始您一定要有一个 Azure ML 的 workspace:

  • 若您已经有 Azure 订阅(没有的话也可以免费注册一个。注册地址:https://azure.microsoft.com/zh-cn/pricing/free-trial/),直接在管理后台建立一个机器学习的工作区(workspace)。
  • 若 您尚未有 Azure 订阅,也可以到 Azure ML Studio (https://studio.azureml.net/)中,用 Microsoft 账号免费登入使用,这与已经有 Azure 订阅的正式账号比起来只是有一些计算时间及效能上的差异而已。

        然后在你的 Python 项目中安装 azureml 这个套件,这个只需要直接使用像是 pipinstall azureml 这样的指令便能完成安装。

        以 下是一个范例程序,它是使用 Anaconda 提供的 Python 2.7(http://continuum.io/downloads) 版本所撰写,这个 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 VectorMachine) 并搭配安德森鸢尾花卉数据集来做机器学习,所以建好的模型(clf)便能拿来分类(clf.predict)鸢尾花的种类。 

发布至 Azure ML

        透过上面这段程序代码已经建立好一个能分类鸢尾花的智能模型,接下来我们只要使用 azureml 模块提供的发布服务相关的函式就能把这个学习好的模型放上 Azure ML:

#Publish as a web service

from azureml import services

 @services . publish ( 'Azure ML工作区ID' ,  'AzureML工作区的授权码' )

@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 )

</div>

        首先您必须先找到您 Azure ML 工作区的 ID 以及授权码,只要您建立好 Azure ML 工作区,就可以在 Azure ML Studio中的设定里找到它们:

使用 Azure 机器学习服务执行您使用 Python 建立好的智能模型


        执行成功后,您就可以呼叫 predictIris.service(3,2,3,4) 这样来测试是不是能正常运作,这个呼叫就是在 Azure ML 上执行完才回传结果。 而要取得发布到 Azure ML 的 Web 服务的信息,就直接把

  • predictIris.service.help_url
  • predictIris.service.url
  • predictIris.service.api_key
        这 三个变量印出来看,第一个是说明文件的 URL,而第二个是要对这个智能模型进行 HTTP POST 呼叫端点的 URL,第三个就是呼叫 API 时需要带入的授权密钥。这样一来就能在其它平台发出 HTTP POST 的呼叫,运用到这个已经放在 Azure ML 上的智能模型了。

来自:http://weibo.com/p/1001603879782097025373