首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >R gbm.more()函数并不适用于所有发行版?

R gbm.more()函数并不适用于所有发行版?
EN

Stack Overflow用户
提问于 2014-06-16 04:33:26
回答 1查看 738关注 0票数 3

我尝试在R中使用gbm.more函数,为了清晰起见,我使用了规范的虹膜数据。当我指定高斯“distribution=”时,下面的代码不工作,但当我指定高斯“distribution=”时,代码可以工作。这是有原因的,还是仅仅是函数的问题?

代码语言:javascript
运行
复制
data(iris)
iris.mod=gbm(Species ~ ., distribution="multinomial", data=iris,
            n.trees=200, shrinkage=0.01, verbose=FALSE, n.cores=1)
iris.mod1=gbm.more(iris.mod,100,verbose=FALSE)
EN

Stack Overflow用户

发布于 2014-06-16 10:00:33

我想说的是gbm中有一个bug。如果您查看gbm.fit函数,在将多项式数据发送到底层的"gbm“C函数之前,它们会对多项式数据执行一系列转换。这些转换在返回结果之前被“撤消”,并且不会在gbm.more函数中再次执行。

一种这样的转换是确保数据中的第一个n值与您的y变量的每个n因子级别之一相关联。一种解决方法是确保您的数据在调用gbm之前是正确的格式。下面是我们如何转换虹膜数据的方法。

代码语言:javascript
运行
复制
first.row <- tapply(1:nrow(miris), iris$Species, head,1)
miris <- rbind(miris[first.row,], miris[-first.row,])

我们看到,前三行对于数据中的每个不同物种都有一个值

代码语言:javascript
运行
复制
#head(miris)
    Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
1            5.1         3.5          1.4         0.2     setosa
51           7.0         3.2          4.7         1.4 versicolor
101          6.3         3.3          6.0         2.5  virginica
2            4.9         3.0          1.4         0.2     setosa
3            4.7         3.2          1.3         0.2     setosa
4            4.6         3.1          1.5         0.2     setosa

然后,您可以将数据与

代码语言:javascript
运行
复制
iris.mod=gbm(Species ~ ., distribution="multinomial", data=miris,
    n.trees=200, shrinkage=0.01, verbose=FALSE, n.cores=1)

然后运行

代码语言:javascript
运行
复制
iris.mod1=gbm.more(iris.mod,100,verbose=FALSE)

没有错误。

我建议你向包的维护者提交一份错误报告。这个问题似乎是“多项式”分布特有的。请随时添加此问题的链接。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24233865

复制
相关文章

相似问题

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