2015-04-25 85 views
-1

我試圖通過這個代碼利用決策樹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 < - 混淆矩陣(安裝,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

請發佈完整的錯誤日誌/堆棧跟蹤。 – Sufian

+0

我該怎麼做? – Johan

回答

0

你會得到該錯誤,因爲worktest沒有任何因子ICUtransferworktest只是一個索引的數字向量,因此沒有任何因素。您希望數據的子集對應於worktest指數。

不可能知道究竟需要完成什麼,因爲我看不到您正在使用的數據結構。

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

+0

我累了你的帖子,然後我得到這個錯誤:在sort.list(y)中的錯誤:'x'必須是'sort.list'的原子。 你有沒有在列表上調用'sort'? – Johan

+0

好吧,因爲我對你的問題領域知之甚少,所以我不能給你更具體的信息。試試'DataYesNo [worktest]'。 DataYesNo是什麼樣的? –

+0

我添加了工作測試數據的樣本問題。 – Johan