如何利用R軟體建立決策樹模型
1、根據Age、Number、Start三個變數對kyphosis進行分類。
#程式包
library(rpart)
library(rpart.plot)
library(rattle)
#資料
data(kyphosis)
head(kyphosis)
2、定義引數並建立模型。
#引數
control <- rpart.control(minsplit=10,
minbucket=5,
xval=10,cp=0.1)
#決策樹模型
model<- rpart(Kyphosis ~ Age + Number + Start, data = kyphosis,
method="class",control=control,
parms = list(prior = c(0.6,0.4), split = "information"))
3、檢視模型結果。summary可以檢視模型的詳細過程。
summary(model)
asRules(model)
4、繪製決策樹圖。可以從圖中看到每一類的觀測數及佔總數的比例。
fancyRpartPlot(model)
5、檢視交叉驗證結果,並繪圖。
model$cptable
plotcp(model)
grid()
可以看到結果中有交叉驗證的估計誤差(“xerror”),以及標準誤差(“xstd”),平均相對誤差=xerror±xstd 。
6、根據交叉驗證結果,找出估計誤差最小時的cp值,並重新建立模型。
#選擇交叉驗證的估計誤差最小時對應的cp
xerr <-model$cptable[,"xerror"]
minxerr <- which.min(xerr)
mincp <-model$cptable[minxerr, "CP"]
#新模型
model.prune <- prune(model,cp=mincp)
fancyRpartPlot(model.prune)
決策樹演算法中,會對資料特徵不斷提問,然後根據每次回答逐步對資料進行分類。
節點(Node)的分類:節點分為根節點(Root Node)與葉節點(Leaf Node)。其中根節點位於決策樹最頂部,它是分類的起始點,位於最底端且沒有子節點的節點成為葉節點。
在決策樹中,對各節點提問題,並根據回答對節點進行分叉,從而實現分類資料的目的。‘不純度’(impurity)用作評估資料分離程度的標準,將一個節點資料劃分為2個子節點時,最好的提問能夠使子節點的不純度降至最低。
節點中含有的分類越多,不純度越高。反之,只有一個分類的時候,不純度最低。
原文連結:https://blog.csdn.net/RH_Wang/java/article/details/81703151
如何利用R軟體建立決策樹模型
1、根據Age、Number、Start三個變數對kyphosis進行分類。
#程式包
library(rpart)
library(rpart.plot)
library(rattle)
#資料
data(kyphosis)
head(kyphosis)
2、定義引數並建立模型。
#引數
control <- rpart.control(minsplit=10,
minbucket=5,
xval=10,cp=0.1)
#決策樹模型
model<- rpart(Kyphosis ~ Age + Number + Start, data = kyphosis,
method="class",control=control,
parms = list(prior = c(0.6,0.4), split = "information"))
3、檢視模型結果。summary可以檢視模型的詳細過程。
summary(model)
asRules(model)
4、繪製決策樹圖。可以從圖中看到每一類的觀測數及佔總數的比例。
fancyRpartPlot(model)
5、檢視交叉驗證結果,並繪圖。
model$cptable
plotcp(model)
grid()
可以看到結果中有交叉驗證的估計誤差(“xerror”),以及標準誤差(“xstd”),平均相對誤差=xerror±xstd 。
6、根據交叉驗證結果,找出估計誤差最小時的cp值,並重新建立模型。
#選擇交叉驗證的估計誤差最小時對應的cp
xerr <-model$cptable[,"xerror"]
minxerr <- which.min(xerr)
mincp <-model$cptable[minxerr, "CP"]
#新模型
model.prune <- prune(model,cp=mincp)
fancyRpartPlot(model.prune)
擴充套件資料決策樹演算法中,會對資料特徵不斷提問,然後根據每次回答逐步對資料進行分類。
節點(Node)的分類:節點分為根節點(Root Node)與葉節點(Leaf Node)。其中根節點位於決策樹最頂部,它是分類的起始點,位於最底端且沒有子節點的節點成為葉節點。
在決策樹中,對各節點提問題,並根據回答對節點進行分叉,從而實現分類資料的目的。‘不純度’(impurity)用作評估資料分離程度的標準,將一個節點資料劃分為2個子節點時,最好的提問能夠使子節點的不純度降至最低。
節點中含有的分類越多,不純度越高。反之,只有一個分類的時候,不純度最低。
原文連結:https://blog.csdn.net/RH_Wang/java/article/details/81703151