close
當原始資料太多的屬性太多或是決策樹演算法本身屬性的選擇偏好,容易造成Over-fitting以致於產生的樹狀結構太過於複雜,因此必須做適當的修剪。
rpart(formula,data,weights,subset,na.action=na.rpart,method,parms,control…)
-formula 表示模型的公式:Y~x1+x2+x3..
-data 建立模型的資料來源
-weights 表示data的權重非必要參數
-subset 表示只使用部分子集資料,非必要函數
-na.action表示對遺失值的處理方式,預設會刪除
-method 使用的方法,“anova”,“poisson”,“class”,“exp”
-parms 根據上面不同的方法給不同的引數
-control 表示控制此演算法的引數,可以在rpart.control中設定
rpart.control(minsplit=20,minbucket=round(minsplit/3),cp=0,maxdepth=30,…)
-minsplit 表示建立一個新節點最少需要多少資料
-minbucket表示建立一個???結點最少需要多少資料
-cp 決定計算複雜度的參數,用來修剪數的分支
-maxdepth 表示樹的深度
80/20 train/test
set.seed(11)
n=nrow(iris)
idx=sample(n,size=round(0.2*n))
test_data=iris[idx,]
train_data=iris[-idx,]
建立決策樹模型
iris_tree=rpart(Species~.,data=train_data,method = "class",control = rpart.control(
minsplit = 5,cp=0.001,maxdepth = 30))
prp(iris_tree, # 模型
faclen=0, # 呈現的變數不要縮寫
fallen.leaves=TRUE, # 讓樹枝以垂直方式呈現
shadow.col="gray", # 最下面的節點塗上陰影
# number of correct classifications / number of observations in that node
extra=2)
iris_tree
summary(iris_tree)
可以看決策樹的內部資料
預測
計算預測準確率 = 對角線的數量/總數量
文章標籤
全站熱搜