R中未来预测的决策规则匹配

时间:2016-06-25 20:56:37

标签: r random-forest rules rule-engine

我使用inTrees包从RF中提取了一组决策规则。为了将来的工作,我想使用测试数据来预测规则带来的价值。我的问题是如何检查观察的每个元素的规则条件?

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
        }
      }
    }

1 个答案:

答案 0 :(得分:0)

给定测试数据集“X”(如果是另一个名称将其重命名为“X”),并且规则条件,例如

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

然后我们可以使用以下内容来获取满足条件的数据点的索引:

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

希望这能解决您的问题。