2017-03-28 32 views
0

我正在用R中的決策樹上的虹膜數據集做一個教程。下面是我的基本教程代碼。R中的決策樹,預測一個選項

library(rpart) 
install.packages('rpart.plot') 
library(rpart.plot) 

s = sample(150,100) 

iris_train = iris[s,] 
iris_test = iris[-s,] 

dtm = rpart(Species~.,iris_train, method="class") 

rpart.plot(dtm, type=4, extra=101) 

p = predict(dtm,iris_test,type="class") 
table(iris_test[,5],p) 

錶行給我:

    setosa versicolor virginica 
    setosa   12   0   0 
    versicolor  0   18   0 
    virginica  0   3  17 

我怎麼會去,如果我在弗吉尼亞的預測僅interestted?是否有可能將其餘的值合併,以便得到Virginica vs Versicolor + Setosa的二進制分類?

+2

您可以創建在你有'virginica'類別和兩個'versicolor'和'setosa'一類新的'Species'變量。然後,您可以使用新的「種類」變量重新進行分析。 – 67342343

+0

一個簡單的'ifelse'語句將爲您在一行中做到這一點 – jwells

回答

0

,你可以做你想做的那樣

library(rpart) 
install.packages('rpart.plot') 
library(rpart.plot) 

s = sample(150,100) 
class <- which(iris$Species %in% c("versicolor","setosa")) 

#################################### 
new_species = rep("virginica",nrow(iris)) 

new_species[class] <- "vers_seto" 

iris$new_species <- new_species 
#################################### 
iris_train = iris[s,-5] # -5 Delete the old column Species (column number 5) 


iris_test = iris[-s,-5] 



dtm = rpart(new_species~.,iris_train, method="class") 

rpart.plot(dtm, type=4, extra=101) 

p = predict(dtm,iris_test,type="class") 
table(iris_test[,5],p)