ctree中有一個maxdepth
選項。它位於ctree_control()
你可以用它如下
airq <- subset(airquality, !is.na(Ozone))
airct <- ctree(Ozone ~ ., data = airq, controls = ctree_control(maxdepth = 3))
您還可以限制分割大小和桶的大小是「不低於」
airct <- ctree(Ozone ~ ., data = airq, controls = ctree_control(minsplit= 50, minbucket = 20))
你也可以以降低增加的感應度並降低P值
airct <- ctree(Ozone ~ ., data = airq, controls = ctree_control(mincriterion = 0.99))
該你提到的只是該特定節點中觀察的數量。 ctree
默認給每個觀測權重1,但如果您覺得您的觀測值得更大權重,您可以向ctree()
添加一個權重向量,其長度必須與數據集相同並且必須是非負整數。當你這樣做後,weights = 4349
必須謹慎解釋。
使用weights
的一種方法是查看哪些觀察值落在某個節點中。在本例中使用的數據上面我們可以執行以下
airq <- subset(airquality, !is.na(Ozone))
airct <- ctree(Ozone ~ ., data = airq, controls = ctree_control(maxdepth = 3))
unique(where(airct)) #in order the get the terminal nodes
[1] 5 3 6 9 8
,所以我們可以爲您在節點數量5掉下例如
n <- nodes(airct , 5)[[1]]
x <- airq[which(as.logical(n$weights)), ]
x
Ozone Solar.R Wind Temp Month Day
1 41 190 7.4 67 5 1
2 36 118 8.0 72 5 2
3 12 149 12.6 74 5 3
4 18 313 11.5 62 5 4
...
使用這種方法,您可以創建數據集將包含你終端節點的信息N,然後將其導入到SAS或SQL
您也可以使用從我的回答如下 ctree() - How to get the list of splitting conditions for each terminal node?
功能拆分條件列表
請首先簡化您的問題,舉例說明您在R控制檯中實際編寫了哪些功能。 – Aashu
庫(方) train.treeM1 <-ctree(U_ACTIVITY_FLAG_STATUS_3〜 U_ARPU_M1 + U_RCHRG_CNT_M1 + U_LOCAL_TOT_MOU_M1 + U_OG_CALL_CNT_M1 + U_OG_AVG_CALL_DURATION_M1 + U_IC_CALL_CNT_M1 + U_IC_AVG_CALL_DURATION_M1 + U_DED_RECHARGE_RATIO + U_Advanced_Handset_Ratio + U_Retailer_Baby_Care_Ratio + U_Retailer_Born_Dead_Ratio, 數據= traindata) 表(traindata $ U_ACTIVITY_FLAG_STATUS_3,預測(train.treeM1)) #plot(火車。treeM1,type =「simple」) #plot(train.treeM1) #summary(train.treeM1) –
這是我用過的代碼,它創建了一棵樹。現在我想要用下面提到的格式的SAS/SQL來實現這棵樹的oputput。 –