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

R中未来预测的决策规则匹配,r,random-forest,rules,rule-engine,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

我使用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
观察结果:(908*7)
x[,1]x[,2]x[,3]x[,4]x[,5]x[,6]x[,7]靶
支撑装置10 120 144 553 6 3.85 72.02
检眼镜10133.811433457.5191.94
检眼镜10167.222803452113.99
规则与预测:(428:2)
X[,1]%单位为%c(‘显微镜’,‘示波器’)&X[,5]>4428.534912&
给定一个测试数据集“X”(如果它是另一个名称,则将其重命名为“X”)和一个规则条件,例如

cond = "X[,1] %in% c('MICROSCOPE') & X[,5]>4428"
然后,我们可以使用以下方法获得满足条件的数据点索引:

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

cond谢谢@H.D它工作正常。但我正在寻找相反的情况。我想知道X中的第一个观测值遵循的规则是什么,所有908个观测值遵循的规则是什么。如果遵循规则,则应产生相关的预测值。@Nilanjanoshi下面的函数返回规则和数据点之间的激活关系(Xij=1表示第i个数据点满足第j条规则)如何?ruleI=sapply(ruleMetric[,“条件”],rule2Table,X,target)。请参阅selectRuleRRF.R函数中的用法。顺便说一句,上述两种解决方案基本相同。其思想是计算一个矩阵,指示数据点是否满足规则。这个矩阵还将指示一个规则是否可以应用于数据点。感谢您随时通知我。我有解决办法。你的第一条评论对确定规则是否得到满足有很大帮助。
cond <- paste("which(", cond, ")")
ind <- eval(parse(text=cond))