Это хорошее иллюзию, данное AshOfFire . Я беру из этого примера, чтобы представить мою проблему. Прежде всего, я рассматриваю случай как временной ряд. Теперь вопрос заключается в том, как распространить этот пример на AutoML для прогнозирования на один шаг вперед только для xgboost. Я являюсь ошибкой «Ошибка в attr (data,« tsp ») <- c (начало, конец, частота): объект не является матрицей», поэтому решение заключается в том, как преобразовать в 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)