H2O AutoML прогнозирование - PullRequest
       35

H2O AutoML прогнозирование

0 голосов
/ 17 октября 2019

Я беру из этого примера ( введите описание ссылки здесь , чтобы представить мою проблему. Прежде всего, я рассматриваю случай как временной ряд. Теперь вопрос заключается в том, как расширить этот пример до AutoML h2oПрогноз на один шаг вперед только для xgboost. У меня ошибка "Ошибка в attr (data," tsp ") <- c (начало, конец, частота): объект не матрица", поэтому решение заключается в том, как преобразовать h2o в матрицуили другой способ - настроить коды для представления h2o. </p>

library(forecast)
library(randomForest)
library(h2o)
h2o.init()
h2o.init(max_mem_size = "80G", 
         nthreads = -1, 
         ip = "localhost", 
         port = 54321)


# create a daily pattern with random variations
myts <- ts(rep(c(5,6,7,8,11,13,14,15,16,15,14,17,13,12,15,13,12,12,11,10,9,8,7,6), 10)*runif(120,0.8,1.2), freq = 24)
myts_forecast <- forecast(myts, h = 24) # predict the time-series using ets + stl techniques
pred1 <- c(myts, myts_forecast$mean) # store the prediction

# transform these observations into a matrix with the last 24 past values
idx <- c(1:24)
designmat <- data.frame(lapply(idx, function(x) myts[x:(215+x)])) # create a design matrix
colnames(designmat) <- c(paste0("x_",as.character(c(1:23))),"y")
##########################################
train <- designmat[1:180 ,]

test <- designmat[181:240 ,]

###############
train <- as.h2o(train,destination_frame = "train")
test <- as.h2o(test,destination_frame = "test")

y <- data.matrix("y")
x <- setdiff(names(train), y)
train[,y] <- (train[,y])
test[,y] <- (test[,y])
##############
aml <- h2o.automl(x = x, y = y, max_runtime_secs = 9999999999, max_runtime_secs_per_model = 3600,
                  leaderboard_frame = test,
                  training_frame = train, validation_frame = test,nfolds =0,
                  max_models = 3,exclude_algos = c("GLM", "DeepLearning", "GBM","DRF","StackedEnsemble"),
                  seed =  22)
b <- aml@leaderboard
# create a random forest model and predict iteratively each value

for (i in 1:24){
  designvec <- data.frame(c(designmat[nrow(designmat), 2:24], 0))
  colnames(designvec) <- colnames(designmat)
  designvec$y <- predict(b, designvec)
  designmat <- rbind(designmat, designvec)
}
pred2 <- designmat$y
windows()
#plot to compare predictions
plot(pred1, type = "l")
lines(y = pred2[216:240], x = c(240:264), col = 2)
...