Ich habe eine Reihe von Entscheidungsregeln aus RF extrahiert mit inTrees-Paket. Für zukünftige Arbeiten möchte ich die Testdaten verwenden, um den Wert, der sich aus den Regeln ergibt, vorherzusagen. Meine Frage ist, wie kann ich die Regelbedingung für jedes Element einer Beobachtung überprüfen?Entscheidungsregel-Matching für zukünftige Vorhersagen in 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
Ich mag jede Beobachtung mit jeder Regel vergleichen und den aggregierten Prognosewert für jede Regel durch diese Beobachtung erfüllt bekommen. Letztendlich als Regel-Engine verwendet werden
Bitte helfen! Vielen Dank.
Ich habe benutzten:
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
}
}
}
Danke @ H.D es funktioniert gut. Aber ich suche ein umgekehrtes Szenario. Ich möchte wissen, auf welche Regel (n) die erste Beobachtung in X folgt und für alle 908 Beobachtungen. Und wenn die Regel befolgt wird, sollte dies zu einem entsprechenden vorhergesagten Wert führen. –
@NilanjanJoshi Wie wäre es mit der folgenden Funktion, die eine Aktivierungsbeziehung zwischen den Regeln und Datenpunkten zurückgibt (Xij = 1 bedeutet, dass die j-te Regel vom i-ten Datenpunkt erfüllt wird)? ruleI = sapply (ruleMetric [, "Bedingung"], rule2Table, X, Ziel) . Siehe die Verwendung in der Funktion selectRuleRRF.R. https://github.com/cran/inTrees/blob/master/R/selectRuleRRF.R –
übrigens, die beiden obigen Lösungen sind im Wesentlichen gleich. Die Idee besteht darin, eine Matrix zu berechnen, die angibt, ob ein Datenpunkt eine Regel erfüllt. Und diese Matrix würde auch anzeigen, ob eine Regel auf einen Datenpunkt angewendet werden kann. –