【发布时间】: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
以下是我的具体问题:
当我用测试数据调用
predict()时,我明白测试数据中的特征(属性列)必须与测试数据中的特征匹配。 但是我需要删除预测标签(被预测的属性列)吗? 在上面的示例中,我使用省略了预测列(第 1 列)的测试数据集创建了kyphosisPredictions2,它导致与kyphosisPredictions1相同的预测,其中包括预测列。这可能是巧合,所以我想确定一下。 无论提供给 predict() 的机器学习模型如何,这个问题的答案(是或否)都适用吗?分类列上的预测显然给了我关于“不存在”和“存在”的概率分布。有没有办法只返回单个预测级别,即。每行是“不存在”还是“存在”?
【问题讨论】:
标签: r