#r #h2o
#r #h2o
Вопрос:
Я пытался добавить взвешивания точек данных в свои анализы с помощью h2o.deeplearning.
Следующий код
library(h2o)
x <- rnorm(1000)
y <- x-x^2 rnorm(1000,sd=0.2)
w <- vector(length=1000) #weights vector
w[] <- 1
dfx <- data.frame(x,y,w)
h2o.init()
dfx <- as.h2o(dfx)
H <- h2o.deeplearning(x = 1, y = 2,training_frame=dfx,weights_column = 3, hidden=c(5,4))
выдает
Error in .h2o.checkAndUnifyModelParameters(algo = algo, allParams = ALL_PARAMS, :
"weights_column" must be of type character, but got numeric.
Замена weights_column ‘3’ на ‘w’ дает тот же результат. Я попробовал as.character (w), но это определенно не понравилось.
Замена weights_column на dfx [,3] или dfx $w дает:
Error in args$x_ignore[!(weights_column == args$x_ignore)] :
invalid subscript type 'environment'
Эта ошибка заставила меня почесать голову, поскольку, похоже, она отличается от того, как подобные вещи реализованы в любой другой модели. Я не нашел ссылок на эту ошибку в Google, и документация не дает никаких дополнительных объяснений.
Ответ №1:
Хорошо, я решил это смущающе быстро после отправки этого вопроса. Тем не менее, это стоит сохранить для других с аналогичными проблемами.
Столбец weights_column должен быть указан именем столбца в h2o.data.frame. Т.е. он должен быть заключен в кавычки. Это не может быть другой объект h2o или индекс столбца. Работает следующий код.
library(h2o)
x <- rnorm(1000)
y <- x-x^2 rnorm(1000,sd=0.2)
w <- vector(length=1000) #weights vector
w[] <- 1
dfx <- data.frame(x,y,w)
h2o.init()
dfx <- as.h2o(dfx)
H <- h2o.deeplearning(x = 1, y = 2,training_frame=dfx,weights_column = "w", hidden=c(5,4))