我使用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
}
}
}
答案 0 :(得分:0)
给定测试数据集“X”(如果是另一个名称将其重命名为“X”),并且规则条件,例如
cond = "X[,1] %in% c('MICROSCOPE') & X[,5]>4428"
然后我们可以使用以下内容来获取满足条件的数据点的索引:
cond <- paste("which(", cond, ")")
ind <- eval(parse(text=cond))
希望这能解决您的问题。