【问题标题】:Basic questions on predict() using rpart model使用 rpart 模型预测()的基本问题
【发布时间】:2014-02-08 21:10:14
【问题描述】:

我从 Weka 过来,正在努力学习 R 的 predict() 函数。

假设我想对一个分类变量进行预测,如下所示,使用内置的 kyphosis 数据集。我正在使用 rpart,我正在调用 predict(),并将训练数据作为测试数据。

> library(rpart)
> head(kyphosis)
  Kyphosis Age Number Start
1   absent  71      3     5
2   absent 158      3    14
3  present 128      4     5
4   absent   2      5     1
5   absent   1      4    15
6   absent   1      2    16
> 
> kyphosisModel <- rpart(Kyphosis ~ Age + Number + Start, data=kyphosis)
> 
> kyphosisPredictions1 <- predict(kyphosisModel, kyphosis)
> head(kyphosisPredictions1)
     absent   present
1 0.4210526 0.5789474
2 0.8571429 0.1428571
3 0.4210526 0.5789474
4 0.4210526 0.5789474
5 1.0000000 0.0000000
6 1.0000000 0.0000000
> 
> kyphosisPredictions2 <- predict(kyphosisModel, kyphosis[,-1])
> head(kyphosisPredictions2)
     absent   present
1 0.4210526 0.5789474
2 0.8571429 0.1428571
3 0.4210526 0.5789474
4 0.4210526 0.5789474
5 1.0000000 0.0000000
6 1.0000000 0.0000000

以下是我的具体问题:

  1. 当我用测试数据调用predict() 时,我明白测试数据中的特征(属性列)必须与测试数据中的特征匹配。 但是我需要删除预测标签(被预测的属性列)吗? 在上面的示例中,我使用省略了预测列(第 1 列)的测试数据集创建了kyphosisPredictions2,它导致与kyphosisPredictions1 相同的预测,其中包括预测列。这可能是巧合,所以我想确定一下。 无论提供给 predict() 的机器学习模型如何,这个问题的答案(是或否)都适用吗?

  2. 分类列上的预测显然给了我关于“不存在”和“存在”的概率分布。有没有办法只返回单个预测级别,即。每行是“不存在”还是“存在”?

【问题讨论】:

    标签: r


    【解决方案1】:

    使用predict(),无论您是否为测试集包含标签都无关紧要,因为模型将仅使用其训练过的变量。对于您的第二个问题,只需指定您想要的列。例如,如果你想缺席:

    kyphosisPredictions2 &lt;- predict(kyphosisModel, kyphosis[,-1])[, 1]

    您也可以使用列名来做到这一点:

    kyphosisPredictions2 &lt;- predict(kyphosisModel, kyphosis)[, "absent"]

    【讨论】:

    • 谢谢。但是对于第二个问题,我想要的是表示为最高概率级别(或其字符串)的单个预测,而不是概率值。例如,对于给定的测试行,如果 Pr(absent) 的概率最高,我正在寻找预测结果“absent”(或其字符串)。
    • 您也可以使用 apply 来做到这一点(例如 apply(kyphosisPredictions2, 1, which.max),但是您打算如何使用它。您只想要类预测吗?您可以使用 type 参数来做到这一点在预测中:kyphosisPredictions2 &lt;- predict(kyphosisModel, kyphosis, type = "class")
    • 感谢'type="class"'。不知道这很重要。
    猜你喜欢
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    • 2020-07-07
    • 1970-01-01
    • 2016-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多