gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 03:34:49 27 4
gpt4 key购买 nike

我正在尝试使用 R 中的 gbm.more 函数。为了清楚起见,我使用了规范的虹膜数据。当我指定 distribution="multinomial"时,下面的代码不起作用,但是当我指定 distribution="gaussian"时,代码起作用。这是有原因的还是只是功能的问题?

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)

最佳答案

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

其中一种转换是确保数据中的前 n 值与 y< 的每个 n 因子水平中的一个相关联变量。解决它的方法是确保您的数据在首先调用 gbm 之前采用格式。以下是我们如何转换鸢尾花数据。

first.row <- tapply(1:nrow(miris), iris$Species, head,1)
miris <- rbind(miris[first.row,], miris[-first.row,])

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

#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

然后你可以用

拟合你的数据
iris.mod=gbm(Species ~ ., distribution="multinomial", data=miris,
n.trees=200, shrinkage=0.01, verbose=FALSE, n.cores=1)

然后运行

iris.mod1=gbm.more(iris.mod,100,verbose=FALSE)

没有错误。

我建议您向软件包维护者提交错误报告。这个问题似乎特定于“多项式”分布。请随意包含指向此问题的链接。

关于R gbm.more() 函数不适用于所有发行版?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24233865/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com