我正在尝试在R中使用gbm.more函数。为了清楚起见,我使用了规范的虹膜数据。当我指定分布="多项式"下面的代码不起作用,但是当我指定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)
答案 0 :(得分:1)
我想说gbm
中有一个错误。如果你查看gbm.fit
函数,他们会对多项数据进行一系列转换,然后再将其发送到底层的" gbm" C功能。这些转变是"撤消"在返回结果之前,它们不会在gbm.more
函数中再次执行。
一种此类转换是为了确保数据中的第一个n
值与n
变量的每个y
因子级别中的一个相关联。其中一项工作是确保您的数据在首先调用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)
没有错误。
我建议您使用软件包维护者提交错误报告。这个问题似乎特定于&#34; multinomial&#34;分配。请随意添加此问题的链接。