将分类树(部分)组织成一组规则?


11

一旦使用rpart(在R中)构造了复杂的分类树,是否有办法组织为每个类生成的决策规则?因此,对于每一个类,我们都有一套规则,而不是得到一棵大树?

(如果是,如何?)

这是一个简单的代码示例,显示以下示例:

fit <- rpart(Kyphosis ~ Age + Number + Start, data=kyphosis)

谢谢。

Answers:


9

RJournal 1/2 2009p。50)中所述,这种功能(或接近的功能)似乎在手摇铃包中可用,尽管我只是从命令行进行了检查。

对于您的示例,它产生以下输出:

 Rule number: 3 [Kyphosis=present cover=19 (23%) prob=0.58]
   Start< 8.5

 Rule number: 23 [Kyphosis=present cover=7 (9%) prob=0.57]
   Start>=8.5
   Start< 14.5
   Age>=55
   Age< 111

 Rule number: 22 [Kyphosis=absent cover=14 (17%) prob=0.14]
   Start>=8.5
   Start< 14.5
   Age>=55
   Age>=111

 Rule number: 10 [Kyphosis=absent cover=12 (15%) prob=0.00]
   Start>=8.5
   Start< 14.5
   Age< 55

 Rule number: 4 [Kyphosis=absent cover=29 (36%) prob=0.00]
   Start>=8.5
   Start>=14.5

为了获得此输出,rattle/R/rpart.R在删除Rtxt()asRules.rpart()函数中的两个调用(也可以将其替换为print)之后,我在工作空间中从源文件中获取源文件。然后,我只要输入

> asRules(fit)

是否可以为非终端叶子打印规则?
user1700890

3

rpart.plot 包3.0版(2018日)有一个函数 rpart.rules生成一组规则的树。例如

library(rpart.plot)
fit <- rpart(Kyphosis ~ Age + Number + Start, data=kyphosis)
rpart.rules(fit)

Kyphosis
    0.00 when Start >=      15
    0.00 when Start is 9 to 15 & Age <  55
    0.14 when Start is 9 to 15 & Age >=       111
    0.57 when Start is 9 to 15 & Age is 55 to 111
    0.58 when Start <  9

有关更多示例,请参见rpart.plot小插图的第4章 。


很棒的参考资料,让叶号位于规则旁边也将非常有帮助
user1700890

1
使用rpart.rules(fit, nn=TRUE)得到的节点号(又名叶数)。
斯蒂芬·米尔博罗
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.