将 python 个模块添加到 AzureML 工作区

Adding python modules to AzureML workspace

我最近一直致力于将机器学习模型部署为 Web 服务。我使用 Azure 机器学习工作室创建了我自己的工作区 ID 和授权令牌。然后,我在我的机器上本地训练 sklearn.linear_model 的 LogisticRegressionCV 模型(使用 python 2.7.13)并使用下面的代码片段我想发布我的模型为 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 模块,以使用我在本地开发的任何模型的预测功能?

谢谢

关于在 Azure ML Studio 上安装 python 模块,官方文档 Execute Python Script 有一段 Technical Notes 介绍了它。

一般步骤如下。

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

更多细节可以参考另一个类似的SO线程,它甚至介绍了如何更新Azure安装的Python包的版本。

希望对您有所帮助。

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

我能够使用他们库中提供的 Azure ML 代码示例解决它: 从 Python 个笔记本

部署 AzureML Web 服务

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

找到

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

对于像我一样遇到这个问题并希望在 AzureML 笔记本中安装模块的任何人;似乎当前环境位于计算上的 Conda 上,因此现在就像执行

一样简单

!conda env list

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

!conda -n azureml_py36 -y <packages>

在 notebook 环境中或者在没有 ! 的情况下在终端环境中做几乎相同的事情