Tổ chức một cây phân loại (trong rpart) thành một bộ quy tắc?


11

Có cách nào mà một khi cây phân loại phức tạp được xây dựng bằng rpart (trong R), để tổ chức các quy tắc quyết định được tạo cho mỗi lớp không? Vì vậy, thay vì nhận được một cây khổng lồ, chúng ta có được một bộ quy tắc cho mỗi lớp không?

(nếu vậy, làm thế nào?)

Dưới đây là một ví dụ mã đơn giản để hiển thị các ví dụ về:

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

Cảm ơn.

Câu trả lời:


9

Một chức năng như vậy (hoặc một đóng) dường như có sẵn trong tiếng lách gói, như mô tả trong RJournal 1/2 2009 (p. 50), mặc dù tôi chỉ kiểm tra nó từ dòng lệnh.

Ví dụ của bạn, nó mang lại đầu ra sau:

 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

Để có được đầu ra này, tôi nguồn rattle/R/rpart.Rtệp nguồn (từ gói nguồn) trong không gian làm việc của tôi, sau khi đã loại bỏ hai cuộc gọi đến Rtxt()trong asRules.rpart()hàm (bạn cũng có thể thay thế nó bằng print). Sau đó, tôi chỉ cần gõ

> asRules(fit)

Có thể in các quy tắc cho lá không đầu cuối là tốt?
dùng1700890

3

Các rpart.plot phiên bản gói 3,0 (tháng 7 năm 2018) có một chức năng rpart.rulesđể tạo ra một bộ quy tắc cho một cái cây. Ví dụ

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

cho

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

Để biết thêm ví dụ, xem Chương 4 của họa tiết rpart.plot .


Tham khảo tuyệt vời, cũng rất hữu ích khi có số lá bên cạnh quy tắc
user1700890

1
Sử dụng rpart.rules(fit, nn=TRUE)để có được số nút (còn gọi là số lá).
Stephen Milborrow
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.