2016-02-15 39 views
0

我使用rpart包來開發我的樹並預測模型。最後,繪製ROC曲線,我嘗試使用rocr包。無法用內置數據集重現它的道歉無法實現。請找到的鏈接CSV我有使用:使用rocr包的決策樹的ROC曲線

Wine Quality.csv

現在請大家看我的代碼:

#setting up data 
data<- read.csv(file.choose()) 
quality_binary <- ifelse(wine_quality >5,"high","low") 
data <- data.frame(data,quality_binary) 

#re shuffling the data 
set.seed(9850) 
g <- runif(nrow(data)) 
datar<- data[order(g),] 
#removing the wine quality column since it has to be predicted 
datar <- datar[-12] 

library(rpart) 
library(rpart.plot) 
library(cvTools) 
library(caret) 
library(tree) 

k <- 10 # setting the value for 10 fold validation 

folds <- cvFolds(NROW(datar), K=k) 
datar$holdoutpred <- rep(0,nrow(datar)) 

for(i in 1:k){ 

train <- datar[folds$subsets[folds$which != i], ] #training set 
validation <- datar[folds$subsets[folds$which == i], ] #validation set 

#tree model 
tree_model_rpart_gini = rpart(quality_binary~.,data = train, 
     parms = list(split = "information"), method = "class") 
rpart.plot(tree_model_rpart_gini,type = 3,extra = 101) 

#prediction 
pred_model_rpart_gini <- predict(tree_model_rpart_gini, 
newdata=validation, type="class") 

datar[folds$subsets[folds$which == i], ]$holdoutpred <- 
pred_model_rpart_gini 

} 

#plotting ROC curve 

library(ROCR) 
pred1 <- prediction(predict(datar$pred_model_rpart_gini), 
datar$quality_binary) 
perf1 <- performance(pred1,"tpr","fpr") 
plot(perf1) 

而且我的錯誤是:

pred1 <- prediction(predict(datar$pred_model_rpart_gini), 
datar$quality_binary) 
Error in UseMethod("predict") : 
no applicable method for 'predict' applied to an object of class "NULL" 
+3

這是不可重現的。嘗試使用一些內置數據集(如mtcars)創建樹,並在此處發佈代碼。 –

+0

如何在評論中發佈代碼 – vikky

+1

改爲編輯您的問題。 –

回答

0

datar$pred_model_rpart_giniNULL即未定義。

Ou大概是打算用pred_model_rpart_gini(否datar$)代替?

+0

對不起,別讓你。你能解釋一下嗎? – vikky

+0

你有一個複製和粘貼錯誤,你需要修復。如果你在一個地方重新命名,你必須在任何地方重命名它們。 –