从R发布AzureML Webservice需要外部zip实用程序

我想将基本训练的R模型部署为AzureML的Web服务.与此处所做的类似:

http://www.r-bloggers.com/deploying-a-car-price-model-using-r-and-azureml/

从那篇文章开始,R AzureML包中的publishWebService函数已经改变,现在要求我将工作空间对象作为第一个参数,因此我的R代码如下所示:

    library(MASS)
    library(AzureML)

    PredictionModel = lm( medv ~ lstat , data = Boston )

    PricePredFunktion = function(percent)
    {return(predict(PredictionModel, data.frame(lstat =percent)))}

    myWsID = "<my Workspace ID>"
    myAuth = "<my Authorization code"

    ws = workspace(myWsID, myAuth, api_endpoint = "https://studio.azureml.net/", .validate = TRUE)

    # publish the R function to AzureML
    PricePredService = publishWebService(
      ws,

      "PricePredFunktion",
      "PricePredOnline",
      list("lstat" = "float"),
      list("mdev" = "float"),
      myWsID,
      myAuth
    )

但是每次执行代码时都会出现以下错误:

    Error in publishWebService(ws, "PricePredFunktion", "PricePredOnline",  : 
    Requires external zip utility. Please install zip, ensure it's on your path and try again.

我尝试在我的机器上安装处理zip文件的程序(如7zip)以及调用R中的utils库,它允许R直接与zip文件交互.但我无法摆脱错误.

我还发现了抛出错误的R包代码,它位于此页面的第154行:
https://github.com/RevolutionAnalytics/AzureML/blob/master/R/internal.R

但它并没有帮助我搞清楚要做什么.

在此先感谢您的帮助!

最佳答案 Azure机器学习API需要压缩有效负载,这就是该软件包坚持要安装zip实用程序的原因. (这是一个不幸的情况,希望我们能够在将来找到一种包含拉链的方法.)

你不可能在Linux上遇到这种情况,因为大多数(所有?)Linux发行版都包含一个zip实用程序.

因此,在Windows上,您必须执行以下过程一次:

>安装一个zip实用程序(RTools有一个,这个工作)
>确保拉链在您的路径上
>重新启动R – 这很重要,否则R将无法识别更改的路径

完成后,石蕊试验是否R可以看到你的拉链.为此,请尝试:

Sys.which("zip")

你应该得到一个类似于这样的结果:

                             zip 
"C:\\Rtools\\R-3.1\\bin\\zip.exe" 

换句话说,R应该识别安装路径.

在以前的场合,人们告诉我这不起作用,总是因为他们认为他们在路上有拉链,但事实证明他们没有.

最后一条评论:安装7zip可能无法正常工作.原因是7zip包含一个名为7zip的实用程序,但R只会查找名为zip的实用程序.

点赞