混淆矩阵输出错误

时间:2015-04-25 19:54:32

标签: r

我尝试使用决策树通过以下代码在R中构建预测模型:

library(rpart)
library(caret)

DataYesNo<-read.csv('DataYesNo.csv',header=T)

worktrain<- sample(1:50,40)
worktest <- setdiff(1:50,worktrain)

M <- ncol(DataYesNo)
input  <- names(DataYesNo)[1:(M-1)]                                   
target <- "ICUtransfer"                         

tree<- rpart(ICUtransfer~Temperature+RespiratoryRate+HeartRate+SystolicBP+OxygenSaturations,
                data=DataYesNo[worktrain, c(input,target)],
                method="class",
                parms=list(split="information"),
                control=rpart.control(usesurrogate=0, maxsurrogate=0))

fitted <- predict(tree, DataYesNo[worktest, c(input,target)])

cmatrix <- confusionMatrix(fitted, worktest$ICUtransfer)
print(cmatrix)

tree                
plot(tree)
text(tree)

我收到错误:cmatrix&lt; - confusionMatrix(fit,worktest $ ICUtransfer) “$运算符对原子矢量无效” 请帮帮我解决这个问题? 的问候,

DataYesNo[worktest,]
   Temperature RespiratoryRate HeartRate SystolicBP OxygenSaturations ICUtransfer
11        36.3              26        65        140                97          no
15        37.3              20        80        129                99          no
21        36.9              20        72        154                95          no
26        36.0              28        56        199                97          no
30        36.9              20        72        150                96          no
34        36.6              16        97        118                95         yes
36        36.0              20        77        145                97         yes
38        36.0              20        77        145                97         yes
43        36.3              28        98        116                95         yes
47        36.0              20        77        145                97         yes

我尝试过这一行:

cmatrix <- confusionMatrix(fitted, DataYesNo[worktest,]$ICUtransfer)

但是我收到了这个错误:confusionMatrix.default中的错误(已安装,DataYesNo [worktest,] $ ICUtransfer):   数据和参考因子必须具有相同的级别数

请任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

您收到该错误是因为worktest没有任何名为ICUtransfer的因素。 worktest只是索引的数字向量,因此没有因子。您希望数据的子集对应于worktest索引。

不可能知道究竟需要做什么,因为我无法看到你正在使用的数据结构。

而不是worktest$ICUtransfer尝试使用DataYesNo[worktest, c(input,target)]