r h2o.deeplearning:使用权重时出错 - “weights_column”必须是字符类型,但是有数字

问题描述 投票:1回答:1

我一直在尝试使用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),但它肯定不喜欢那样。

用weight_column代替dfx [,3]或dfx $ w给出:

Error in args$x_ignore[!(weights_column == args$x_ignore)] : 
  invalid subscript type 'environment'

这个错误让我摸不着头脑,因为它似乎与在任何其他模型中实现此类事物的方式不同。我发现谷歌没有提到这个错误,而且documentation没有给出任何进一步的解释。

r h2o
1个回答
0
投票

好的,我在提交这个问题后很快就解决了这个问题。仍然值得为其他有类似问题的人保留。

必须使用h2o.data.frame中列的名称指定weights_column。即它必须用引号括起来。它不能是不同的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))
© www.soinside.com 2019 - 2024. All rights reserved.