首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的H2O集群版本是否与h2oEnsemble 1.9不兼容,或者当没有使用贝叶斯函数时,是什么导致了这个“朴素贝叶斯”错误?

我的H2O集群版本是否与h2oEnsemble 1.9不兼容,或者当没有使用贝叶斯函数时,是什么导致了这个“朴素贝叶斯”错误?
EN

Stack Overflow用户
提问于 2017-06-29 15:42:59
回答 1查看 128关注 0票数 0

h2oEnsemble库的作者LeDell博士建议查看h2o-3 GitHub回购中的v1.9,以解决我和其他人遇到的问题,这在线程中有描述。

这导致了一个不同的错误--在我的例子中,只有未经修改的包装器才能与h2oEnsemble::h2o.ensemble()一起使用。

例如,像这样的学习者会起作用:

代码语言:javascript
复制
learner <- c("h2o.deeplearning.wrapper", "h2o.randomForest.wrapper", "h2o.glm.wrapper") 

但任何像这样的习俗:

代码语言:javascript
复制
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)

抛出此错误:

h2o.ensemble(x =setdiff(colname(Train),"y"),y= "y",training_frame = trainHex )中的错误:朴素贝叶斯函数不支持回归,请将此函数从基础学习者中删除

LeDell博士建议通过她在GitHub上的兼容性表确认兼容性,并将进一步的问题转移到StackOverflow (因为他们正在关闭他们的论坛)。

不过,v1.9似乎不在该表中,而且我的H2O集群版本也比这里列出的版本更新。有人知道哪些H2O集群将与R包的v1.9一起工作吗?

代码语言:javascript
复制
> h2o.getVersion()

"3.10.0.2“

更新:我尝试升级到3.12和3.13,但是遇到了同样的错误。尽管我确实注意到h2o::h2o.stackedEnsemble()在3.13中工作。

更新:

包作者在评论/更新的问题中建议了3.10.5.2版本。我试着对此进行更新,但不幸的是,问题仍然发生。以下是更新后的集群信息:

代码语言:javascript
复制
> h2o.init(nthreads = -1) 

连接成功!R连接到H2O集群: H2O集群正常运行时间:2分28秒H2O集群版本: 3.10.5.2 H2O集群版本年龄: 15天H2O集群名称: hackr H2O群集总节点:1 H2O群集总内存: 16.98 GB H2O群集总核心:24个H2O允许的集群核心: 24 H2O集群健康:真正的H2O连接ip:本地主机H2O连接端口: 54321 H2O连接代理: NA H2O内部安全: FALSE R版本3.4.0修补(2017-05-19 r72713)

不适用于定制学习者:

代码语言:javascript
复制
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(colname(Train),"y"),y= "y",training_frame = trainHex,:朴素贝叶斯函数不支持回归,请将此函数从基本学习者中删除。

但只适用于默认包装器学习者:

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

发布于 2017-06-29 16:18:07

h2oEnsemble v0.1.9包尚未正式发布,但它位于"h2oEnsemble_v0.1.9“分支这里上。在该分支的自述文件中,更新后的表显示它将与H2O >=3.10.1.*兼容。

看起来您正在做一个回归问题,并试图使用h2o.naiveBayes.wrapper()函数吗?错误消息告诉您不能在回归问题上使用朴素贝叶斯(朴素贝叶斯是一种分类算法,不支持回归)。

使用"h2oEnsemble_v0.1.9“分支版本的h2oEnsemble和最新的稳定版本H2O 3.10.5.2,我可以使用下面的代码复制您的错误,但是您需要做的就是从基本学习者中删除朴素的Bayes模型:

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44829663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档