自定义模块

时间:2017-09-26 09:08:08

标签: r azure azure-machine-learning-studio

This Microsoft Azure documentation显示了如何为Azure Machine Learning Studio创作自定义模块。有一个关于从模块返回多个输出的段落。然而按照说明我只能在第一个输出端口的可视化中看到数据,而其他输出端口仍为空。

这是this one的后续问题。我在那里接受了答案,因为我误解了我写的自定义模块的结果 - 有些输出端口可能是空的,我匆忙假设输出是正确的。但是,在RStudio中运行相同的代码确实会生成应该在ML Studio中返回的数据。此外,打印数据有效。

最小例子:

模块的ZIP文件中包含的源文件:

test.R

foo <- function() {
    require(data.table)
    out1 <- data.table(mtcars)
    out2 <- data.table(cars)

    print("out1:")
    print(head(out1))
    print("out2:")
    print(head(out2))

    return(list(out1, out2))
}

的test.xml

<Module name="Multiple outputs">
  <Owner>...</Owner>
  <Language name="R" sourceFile="test.R" entryPoint="foo"/> 
    <Ports>
      <Output id="out_1" name="out1" type="DataTable">
        <Description>...</Description>
      </Output>
      <Output id="out_2" name="out2" type="DataTable">
        <Description>...</Description>
      </Output>   
    </Ports>
</Module>

这使得该模块成功运行:

Module in Azure

输出的可视化如下所示: Correct visualization of output 1 Empty visualization of output 2

输出日志看起来不错:

[ModuleOutput] [1] "out1:"
[ModuleOutput] 
[ModuleOutput]     mpg cyl disp  hp drat    wt  qsec vs am gear carb
[ModuleOutput] 
[ModuleOutput] 1: 21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
[ModuleOutput] 
[ModuleOutput] 2: 21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
[ModuleOutput] 
[ModuleOutput] 3: 22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
[ModuleOutput] 
[ModuleOutput] 4: 21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
[ModuleOutput] 
[ModuleOutput] 5: 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
[ModuleOutput] 
[ModuleOutput] 6: 18.1   6  225 105 2.76 3.460 20.22  1  0    3    1
[ModuleOutput] 
[ModuleOutput] [1] "out2:"
[ModuleOutput] 
[ModuleOutput]    speed dist
[ModuleOutput] 
[ModuleOutput] 1:     4    2
[ModuleOutput] 
[ModuleOutput] 2:     4   10
[ModuleOutput] 
[ModuleOutput] 3:     7    4
[ModuleOutput] 
[ModuleOutput] 4:     7   22
[ModuleOutput] 
[ModuleOutput] 5:     8   16
[ModuleOutput] 
[ModuleOutput] 6:     9   10

我想我正确地遵循了文档中的说明。 以前有人遇到过这个问题吗?有没有已知的解决方案?

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

R输出桥需要一个数据帧,试试这个而不是data.table

out1 <- data.frame(mtcars)
out2 <- data.frame(cars)