将python模块添加到AzureML工作区

时间:2017-10-02 10:37:10

标签: python azure scikit-learn python-module azure-machine-learning-studio

我最近一直在努力将机器学习模型部署为Web服务。我使用Azure Machine Learning Studio创建自己的工作区ID和授权令牌。然后,我在我的机器本地(使用python 2.7.13)从 sklearn.linear_model 训练了LogisticRegressionCV模型,并使用下面的代码片段,我想将我的模型发布为Web服务:

from azureml import services

@services.publish('workspaceID','authorization_token')
@services.types(var_1= float, var_2= float)
@services.returns(int)

def predicting(var_1, var_2):
    input = np.array([var_1, var_2].reshape(1,-1)
return model.predict_proba(input)[0][1]

其中 input 变量是一个包含要评分数据的列表, model 变量包含经过训练的分类器。然后在定义上述函数后,我想对样本输入向量进行预测:

predicting.service(1.21, 1.34)

但是发生以下错误:

RuntimeError: Error 0085: The following error occurred during script 
evaluation, please view the output log for more information:

日志中最重要的信息是:

AttributeError: 'module' object has no attribute 'LogisticRegressionCV'

错误对我来说很奇怪,因为当我使用普通的 sklearn.linear_model.LogisticRegression 时,一切都很好。我能够做出预测,将POST请求发送到创建的端点,所以我猜 sklearn 正常工作。 更改为 LogisticRegressionCV 后,它不会。

因此我想在我的工作区更新sklearn。

你有什么想法怎么做吗?或者甚至更一般的问题:如何在azure机器学习工作室上安装任何python模块,以便使用我在本地开发的任何模型的预测函数?

由于

3 个答案:

答案 0 :(得分:3)

对于像我那样希望在AzureML笔记本中安装模块的任何人,都遇到了这个问题;看来当前的环境位于计算机上的Conda上,所以它现在像执行一样简单

!conda env list

# conda environments:
#
base                  *  /anaconda
azureml_py36             /anaconda/envs/azureml_py36

!conda -n azureml_py36 -y <packages>

在笔记本环境中进行操作,或者在终端环境中在没有!的情况下进行相同的操作

答案 1 :(得分:2)

要在Azure ML Studio上安装python模块,有一个Execute Python Script部分介绍了它。{/ p>

一般步骤如下。

  1. 通过virtualenv创建一个Python项目并激活它。
  2. 在虚拟Python环境中通过pip安装所需的所有软件包,然后
  3. 将项目路径Lib\site-packages下的所有文件和directorys打包为zip文件。
  4. 将zip包作为数据集上传到Azure ML WorkSpace。
  5. 按照官方Technical Notes导入Execute Python Script
  6. 的Python模块

    有关更多详细信息,您可以参考其他类似的SO线程document,它甚至介绍了如何更新Azure安装的Python包的版本。

    希望它有所帮助。

答案 2 :(得分:1)

我遇到了同样的问题:错误0085

我可以使用其库中提供的Azure ML代码示例来解决此问题: 从Python笔记本部署AzureML Web服务

可以在https://gallery.cortanaintelligence.com/Notebook/Deployment-of-AzureML-Web-Services-from-Python-Notebooks-4

找到

我不会在这里复制整个代码,但我完全按原样使用它并且它与Boston数据集一起使用。然后我将它与我的数据集一起使用,我不再有错误0085.我还没有找到错误,但很可能是由于一些行为不端的字符或缩进。希望这会有所帮助。