2016-06-25 6 views
2

inTrees 패키지를 사용하여 RF에서 결정 규칙 집합을 추출했습니다. 향후 작업을 위해 테스트 데이터를 사용하여 규칙에 따른 결과를 예측하려고합니다. 내 질문은 어떻게 관찰의 각 요소에 대한 규칙 조건을 확인할 수 있습니까?향후 예측을위한 의사 결정 규칙 일치 R

Observations:(908*7) 
x[,1]    X[,2] X[,3] X[,4] X[,5] X[,6] X[,7] TARGET 
SUPPORTING DEVICES 10  120  144 553  6  3.85 72.02 
OPHTHALMOSCOPE  10  133.81 143 345  7  7.5 191.94 
OPHTHALMOSCOPE  10  167.22 280 345  2  1  13.99 


Rules & prediction: (428:2) 

X[,1] %in% c('MICROSCOPE','OSCILLOSCOPE') & X[,5]>4428.534912 &  
X[,5]<=4747.5 & X[,6]<=35.5 pred=3555.085 
X[,1] %in% c('COLPOSCOPES','ENDOSCOPE','STROBOSCOPE') &  
X[,4]<=159.885038579262 & X[,4]>149.693058265924 & X[,4]<=152.534780178906 
& X[,6]<=35.5 & X[,7]<=2.85 pred=23856.56 
X[,1] %in% c('COLPOSCOPES','ENDOSCOPE','STROBOSCOPE') & X[,2]<=3.5 &  
X[,4]>159.885038579262 & X[,4]>210.163123531761 & X[,6]<=35.5 pred=22.845 

나는 각 관찰을 각 규칙과 비교하고 그 관찰에 의해 충족되는 각 규칙에 대한 집계 된 예측 값을 얻고 싶습니다. 궁극적으로 규칙 엔진으로 사용됩니다

도와주세요! 감사.

내가 사용했던이 :

Y<- TRCx 
    for (i in c(1:nrow(Y))) 
    { 
     X<- Y[1,] 
     for(j in c(1:nrow(rules))) 
      { 

     if (rules$condition [j]){ 

     p <- mean(rules$pred[j]) 
     } 
     else{ 
      0 
     } 
     } 
    } 

답변

0

주어진 테스트 데이터 설정 "X"(또 다른 이름에 "X"이름을 바꿀 경우), 그리고 규칙 조건,

cond = "X[,1] %in% c('MICROSCOPE') & X[,5]>4428" 

cond <- paste("which(", cond, ")") 
ind <- eval(parse(text=cond)) 

희망이 당신의 확률값를 해결 :

는 우리가 조건을 만족하는 데이터 포인트의 지수를 얻기 위해를 사용할 수 있습니다 흠.

+0

감사합니다. @ H.D. 정상적으로 작동합니다. 그러나 나는 반대되는 시나리오를 찾고 있습니다. 나는 어떤 규칙 (들)이 X에서의 첫 번째 관찰에 이어지고 모든 908 번의 관찰들에 대해서도 마찬가지인지 알고 싶다. 그리고 규칙이 지켜지면 관련 예측치가 나온다. –

+0

@NilanjanJoshi 규칙과 데이터 요소 사이의 활성화 관계를 반환하는 다음 함수 (Xij = 1은 i 번째 데이터 요소에 의해 j 번째 규칙이 충족됨을 의미)는 어떨까요? ruleI = sapply (ruleMetric [, "조건"], rule2Table, X, target) 입니다. selectRuleRRF.R 함수에서 사용법을 참조하십시오. https://github.com/cran/inTrees/blob/master/R/selectRuleRRF.R –

+0

btw, 위의 두 가지 해결책은 본질적으로 같습니다. 아이디어는 데이터 포인트가 규칙을 만족시키는 지 여부를 나타내는 행렬을 계산하는 것입니다. 또한이 행렬은 규칙을 데이터 요소에 적용 할 수 있는지 여부를 나타냅니다. –