提问人:Hack-R 提问时间:6/29/2017 最后编辑:Hack-R 更新时间:7/6/2017 访问量:131
我的 H2O 集群版本是否与 h2oEnsemble 1.9 不兼容,或者当未使用贝叶斯函数时,是什么原因导致了此“朴素贝叶斯”错误?
Is my H2O cluster version incompatible with h2oEnsemble 1.9, or what causes this "Naive Bayes" error when no Bayesian function is being used?
问:
该库的作者 LeDell 博士建议从 h2o-3 GitHub 存储库中查看 v1.9,以解决我和其他人遇到的问题,该问题在此线程中进行了描述。h2oEnsemble
在我的情况下,这导致了一个不同的错误,其中只有未修改的包装器可以与 一起使用。h2oEnsemble::h2o.ensemble()
例如,像这样的学习者将起作用:
learner <- c("h2o.deeplearning.wrapper", "h2o.randomForest.wrapper", "h2o.glm.wrapper")
但是像这样的任何自定义内容:
h2o.glm.2 <- function(..., alpha = 0.5) h2o.glm.wrapper(..., alpha = alpha)
learner <- c("h2o.glm.2")
ens2 <- h2o.ensemble(x = setdiff(colnames(train), "y"),
y = "y",
training_frame = trainHex,
metalearner = "h2o.deeplearning.wrapper",
learner = learner)
抛出此错误:
Error in h2o.ensemble(x = setdiff(colnames(train), "y"), y = "y", training_frame = trainHex, : The Naive Bayes function does not support regression, please remove this function from your set of base learners
LeDell博士建议通过她在GitHub上的兼容性表来确认兼容性,并将进一步的问题转移到StackOverflow(因为他们正在关闭他们的论坛)。
不过,v1.9 似乎不在那张桌子上,我的 H2O 集群版本也比那里列出的版本新。有没有人知道哪些 H2O 集群将与 R 包的 v1.9 一起使用?
> h2o.getVersion()
"3.10.0.2"
更新:我尝试升级到 3.12 和 3.13,但遇到了同样的错误。虽然我确实注意到它在 3.13 中有效。h2o::h2o.stackedEnsemble()
更新:
软件包作者在评论/更新的问题中建议版本 3.10.5.2。我尝试更新到它,但遗憾的是问题仍然存在。这是我更新后的集群信息:
> h2o.init(nthreads = -1)
Connection successful! R is connected to the H2O cluster: H2O cluster uptime: 2 minutes 28 seconds H2O cluster version: 3.10.5.2 H2O cluster version age: 15 days H2O cluster name: hackr H2O cluster total nodes: 1 H2O cluster total memory: 16.98 GB H2O cluster total cores: 24 H2O cluster allowed cores: 24 H2O cluster healthy: TRUE H2O Connection ip: localhost H2O Connection port: 54321 H2O Connection proxy: NA H2O Internal Security: FALSE R Version: R version 3.4.0 Patched (2017-05-19 r72713)
不适用于自定义学习器:
h2o.glm.2 <- function(..., alpha = 0.5) h2o.glm.wrapper(..., alpha = alpha)
learner <- c("h2o.glm.2", "h2o.deeplearning.wrapper", "h2o.randomForest.wrapper", "h2o.glm.wrapper")
ens <- h2o.ensemble(x = setdiff(colnames(train), "y"),
y = "y",
training_frame = trainHex,
metalearner ="h2o.randomForest.wrapper",
learner = learner)
summary(ens)
h2o.ensemble 中的错误(x = setdiff(colnames(train), “y”), y = “y”, training_frame = trainHex, :朴素贝叶斯函数不 支持回归,请从您的基础集中删除此函数 学习。
但仅适用于默认包装器学习器:
learner <- c("h2o.deeplearning.wrapper", "h2o.randomForest.wrapper", "h2o.glm.wrapper")
ens <- h2o.ensemble(x = setdiff(colnames(train), "y"),
y = "y",
training_frame = trainHex,
metalearner ="h2o.randomForest.wrapper",
learner = learner)
summary(ens)
R 包版本为 。h2o_3.10.5.2
答:
h2oEnsemble v0.1.9 软件包尚未正式发布,但它位于此处的 “h2oEnsemble_v0.1.9” 分支上。在该分支的 README 中,更新后的表显示它将与 H2O >=3.10.1.* 兼容。
看起来您正在做一个回归问题并尝试使用该函数?错误消息告诉您不能在回归问题上使用 Naive Bayes(Naive Bayes 是一种分类算法,不支持回归)。h2o.naiveBayes.wrapper()
使用 h2oEnsemble 的“h2oEnsemble_v0.1.9”分支版本和 H2O 的最新稳定版本 3.10.5.2,我可以使用下面的代码复制您的错误,但您需要做的就是从基础学习器中删除朴素贝叶斯模型:
library(h2oEnsemble) # Install from h2oEnsemble_v0.1.9 branch
h2o.init()
# Import a sample binary outcome train/test set into R
train <- h2o.importFile("https://s3.amazonaws.com/erin-data/higgs/higgs_train_5k.csv")
test <- h2o.importFile("https://s3.amazonaws.com/erin-data/higgs/higgs_test_5k.csv")
y <- "response"
x <- setdiff(names(train), y)
family <- "gaussian"
# Specify the base learner library & the metalearner
learner <- c("h2o.glm.wrapper", "h2o.randomForest.wrapper",
"h2o.gbm.wrapper", "h2o.naiveBayes.wrapper")
metalearner <- "h2o.glm.wrapper"
# Train the ensemble
fit <- h2o.ensemble(x = x, y = y,
training_frame = train,
family = family,
learner = learner,
metalearner = metalearner)
评论