【问题标题】:R predict - How to format outputR predict - 如何格式化输出
【发布时间】:2015-12-27 20:09:15
【问题描述】:

我使用 predict 函数根据模型预测结果。 我得到的是预测类的向量。我想检索相同的结果,而不是表单

1 class_1
2 class_1
3 class_4
4 class_2

我想在表单中得到结果

    class_1 class_2 class_3 class_4
1         1       0       0       0
2         1       0       0       0
3         0       0       0       1
4         0       1       0       0

我尝试过传递type=classtype=response,但结果是一样的。

我对 R 完全陌生,我仍在努力寻找解决 R 文档的方法,但我认为这是一件微不足道的事情,我应该能够弄清楚,尽管我很卡住。

【问题讨论】:

  • 你的型号是什么型号?
  • randomForest,你是这个意思吗?
  • 是的。我能够使用predict(model, x, type='prob') 以您正在寻找的格式生成概率。
  • 这是给 Kaggle 的吗?我找到了一个相当冗长的方法,但看起来大卫的解决方案要好得多,所以我一定会使用它!

标签: r predict


【解决方案1】:

在查看 predict.randomForest 上的文档后 https://cran.r-project.org/web/packages/randomForest/randomForest.pdf

看来类型的有效选择是responseprob。或votes

使用下面的代码,我能够重现您的格式,但使用概率。

> predict(model, x, type='prob')
      0     1
1 1.000 0.000
2 0.180 0.820
3 0.138 0.862
attr(,"class")

要获得布尔值,另一种选择是您可以对响应结果进行一次热编码

result_classes = list()
for (level in levels(y)){
    result_classes[[level]] <- predict(model, x, type='response') == level
}

data.frame(result_classes )

结果:

     X0    X1
1  TRUE FALSE
2 FALSE  TRUE
3 FALSE  TRUE

【讨论】:

  • 它非常接近我所需要的,但它不是逻辑上的 0,1,而是为每个类生成概率。
  • 好的,添加了一种替代方法,使用一种热编码来构建逻辑。不过,可能有比我的更干净的实现。 R 不是我的主要语言。
猜你喜欢
  • 2012-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-24
  • 1970-01-01
  • 2023-03-04
  • 2020-11-14
相关资源
最近更新 更多