【问题标题】:GBM multinomial distribution, how to use predict() to get predicted class?GBM 多项式分布,如何使用 predict() 得到预测类?
【发布时间】:2013-08-17 22:26:22
【问题描述】:

我正在使用 R 中 gbm 包中的多项分布。当我使用 predict 函数时,我得到一系列值:

5.086328 -4.738346 -8.492738 -5.980720 -4.351102 -4.738044 -3.220387 -4.732654

但我想得到每个类发生的概率。如何恢复概率?谢谢。

【问题讨论】:

  • (没有“GBM”包。字母的大小写在 R 中很重要。)如果您不想生成数据,那么为什么不生成使用帮助页面中的示例数据的代码呢?
  • 您接受的答案在过去 3.5 年中实际上是不正确的。我给了你一个实际有效的答案。

标签: r prediction categorical-data multinomial gbm


【解决方案1】:

predict.gbm(..., type='response') 不适用于多项式,或者实际上除了伯努利或泊松之外的任何分布。

所以你必须找到最有可能的类(apply(.., 1, which.max) 在预测的向量输出上),如desertnaut wrote

preds = predict(your_model, n.trees, newdata=...,type='response')

pred_class <- apply(preds, 1, which.max)

只需编写一个接受 type='response' 的包装器,并在它是多项模型时返回它。

【讨论】:

    【解决方案2】:

    看看?predict.gbm,你会看到函数有一个“类型”参数。试试predict(&lt;gbm object&gt;, &lt;new data&gt;, type="response")

    【讨论】:

    • 不,predict.gbm(..., type="response") 不适用于多项式,或者实际上除了伯努利或泊松之外的任何分布。
    • 根据@smci,目前GBM的最新版本是2015年5月发布的2.1.1,type="response"还没有实现。不过,@smci 建议使用下面的 apply 是可行的。
    猜你喜欢
    • 2015-06-09
    • 2013-01-27
    • 2016-05-07
    • 2019-04-28
    • 2020-09-20
    • 2019-06-13
    • 2021-06-22
    • 1970-01-01
    • 2017-01-19
    相关资源
    最近更新 更多