분류 트리 (rpart에서)를 규칙 세트로 구성합니까?


11

rpart (R)를 사용하여 복잡한 분류 트리를 구성한 후에 각 클래스에 대해 생성 된 결정 규칙을 구성하는 방법이 있습니까? 하나의 거대한 트리를 얻는 대신 각 클래스에 대한 규칙 세트를 얻습니까?

(그렇다면 어떻게?)

다음은 예제를 보여주는 간단한 코드 예제입니다.

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

감사.

답변:


9

RJournal 1/2 2009 (p. 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 년 7 월) 기능이 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)노드 번호 (일명 리프 번호)를 얻는 데 사용 합니다.
Stephen Milborrow
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.