我尝试使用决策树通过以下代码在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): 数据和参考因子必须具有相同的级别数
请任何人都可以帮助我吗?答案 0 :(得分:0)
您收到该错误是因为worktest
没有任何名为ICUtransfer
的因素。 worktest
只是索引的数字向量,因此没有因子。您希望数据的子集对应于worktest
索引。
不可能知道究竟需要做什么,因为我无法看到你正在使用的数据结构。
而不是worktest$ICUtransfer
尝试使用DataYesNo[worktest, c(input,target)]
。