2016-11-25 6 views
2

Я создаю эксперимент по прогнозированию с использованием двигателя R. Мой источник данных поворачивается, поэтому мне нужно пройти ряд за строкой. Выход работает отлично с предсказанием одной строки. Но когда я пытаюсь заполнить несколько строк, он все равно выводит один вывод строки - только для первой записи.Azure ML Batch Run - Single Output

Я пытаюсь Переберите мой результат выглядит следующим образом:

# Map 1-based optional input ports to variables 
dataset1 <- maml.mapInputPort(1) # class: data.frame 

library(forecast) 
library(reshape) 
library(dplyr) 
library(zoo) 
#exclude non required columns 
my.ds <- dataset1[, -c(4,5,6)] 
# set the CIs we want to use here, so we can reuse this vector 
cis <- c(80, 95) 

for (i in 1:nrow(my.ds)) { 
my.start <- my.ds[i,c(3)] 
my.product <- my.ds[i, "Product"] 
my.location <- my.ds[i, "Location"] 
my.result <- melt(my.ds[i,], id = c("Product","Location")) 
my.ts <- ts(my.result$value, frequency=52, start=c(my.start,1)) 
# generate the forecast using those ci levels 
f <- forecast(na.interp(my.ts), h=52, level=cis) 
# make a data frame containing the forecast information, including the index 
z <- as.data.frame(cbind(seq(1:52), 
         f$mean, 
         Reduce(cbind, lapply(seq_along(cis), function(i) cbind(f$lower[,i], f$upper[,i]))))) 
# give the columns better names 
names(z) <- c("index", "mean", paste(rep(c("lower", "upper"), times = length(cis)), rep(cis, each = 2), sep = ".")) 
# manipulate the results as you describe 
zw <- z %>% 
# keep only the variable you want and its index 
mutate(sssf = upper.95 - mean) %>% 
select(index, mean, sssf) %>% 
# add product and location info 
mutate(product = my.product, 
     location = my.location) %>% 
# rearrange columns so it's easier to read 
select(product, location, index, mean, sssf) 
zw <- melt(zw, id.vars = c("product", "location", "index"), measure.vars = c("mean","sssf")) 
data.set <- cast(zw, product + location ~ index + variable, value = "value") 
# Select data.frame to be sent to the output Dataset port 
maml.mapOutputPort("data.set"); 
} 

Это дизайн моего эксперимента: experiment

И это как образец input выглядит следующим образом:

Sample input

Я тестирую тестовую книгу Excel, загруженную с эксперимента жет.

ответ

1

Я понял проблему:

{ 
... 
ds <- cast(zw, product + location ~ index + variable, value = "value") 
data.set <- rbind(data.set, ds) 
} 
# Select data.frame to be sent to the output Dataset port 
maml.mapOutputPort("data.set"); 

я должен быть слияние строк и затем выводятся вне цикла.