Мне нужно рассчитать общую предсказуемую точность с помощью некоторых правил с использованием параметров TP, TN, FP, FN в клипах.Расчет общей предиктивной точности на клипах с использованием правил
Мое правило: x1 <=0.58 AND x6 <=0.61 x5
mcg<=0.61 --> Class = cp
.
Я написал код, но когда я пытаюсь запустить его, я сталкиваюсь с сообщением об ошибке. Может быть, ошибка, которую я не могу найти. Может ли кто-нибудь мне помочь?
Это мой код:
(defrule rule1
(rw6 ?x6)
(rw5 ?x5)
(rw1 ?x1)
(test (<= ?x6 0.58))
(test (<= ?x5 0.61))
(test (<= ?x1 0.61))
?fact1 <- (TP1 ?TP1)
?fact2 <- (FP1 ?FP1)
?fact3 <- (TN2 ?TN2)
?fact4 <- (TN3 ?TN3)
?fact5 <- (TN4 ?TN4)
?fact6 <- (FN2 ?FN2)
?fact7 <- (FN3 ?FN3)
?fact8 <- (FN4 ?FN4)
?fact9 <- (K1 ?K1)
?fact10 <- (K2 ?K2)
?fact11 <- (K3 ?K3)
?fact12 <- (K4 ?K4)
?fact13 <- (row (rw1 ?x1)(rw2 ?x2)(rw3 ?x3)(rw4 ?x4)(rw5 ?x5)(rw6 ?x6)(rw7 ?x7)(class ?c))
=>
(if (= ?c cp) then
(retract ?fact1 ?fact3 ?fact4 ?fact5 ?fact9)
(assert (TP1 (+ ?TP1 1))(TN2 (+ ?TN2 1))(TN3 (+ ?TN3 1))(TN4 (+ ?TN4 1))(K1 (+ ?K1 1))))
else (if (= ?c im) then
(retract ?fact2 ?fact4 ?fact5 ?fact6 ?fact10)
(assert (FP1 (+ ?FP1 1))(TN3 (+ ?TN3 1))(TN4 (+ ?TN4 1))(FN2 (+ ?FN2 1))(K2 (+ ?K2 1))))
else (if (= ?c pp) then
(retract ?fact2 ?fact3 ?fact5 ?fact7 ?fact11)
(assert (FP1 (+ ?FP1 1))(TN2 (+ ?TN2 1))(TN4 (+ ?TN4 1))(FN3 (+ ?FN3 1))(K3 (+ ?K3 1))))
else (if (= ?c om) then
(retract ?fact2 ?fact3 ?fact4 ?fact8 ?fact12)
(assert (FP1 (+ ?FP1 1))(TN2 (+ ?TN2 1))(TN3 (+ ?TN3 1))(FN4 (+ ?FN4 1))(K4 (+ ?K4 1))))
(retract ?fact13))
(defrule rule2
(K1 ?K1)
(K2 ?K2)
(K3 ?K3)
(K4 ?K4)
(TP1 ?TP1)
(FP1 ?FP1)
(FN1 ?FN1)
(TP2 ?TP2)
(FP2 ?FP2)
(FN2 ?FN2)
(TP3 ?TP3)
(FP3 ?FP3)
(FN3 ?FN3)
(TP4 ?TP4)
(FP4 ?FP4)
(FN4 ?FN4)
?fact1 <- (REC1 0)
?fact2 <- (REC2 0)
?fact3 <- (REC3 0)
?fact4 <- (REC4 0)
?fact5 <- (PRE1 0)
?fact6 <- (PRE2 0)
?fact7 <- (PRE3 0)
?fact8 <- (PRE4 0)
?fact9 <- (FMES1 0)
?fact10 <- (FMES2 0)
?fact11 <- (FMES3 0)
?fact12 <- (FMES4 0)
?fact13 <- (waREC 0)
?fact14 <- (waPRE 0)
?fact15 <- (waFMES 0)
?fact13 <- (ACC 0)
=>
(retract ?fact1 ?fact2 ?fact3 ?fact4 ?fact5 ?fact6 ?fact7 ?fact8 ?fact9 ?fact10 ?fact11 ?fact12 ?fact13)
(assert (ACC (bind ?ACC (/ (+ ?TP1 ?TP2 ?TP3 ?TP4)(+ ?TP1 ?TP2 ?TP3 ?TP4 ?FN1 ?FN2 ?FN3 ?FN4)))))
(assert (REC1 (bind ?REC1 (/ ?TP1 (+ ?TP1 ?FN1)))))
(assert (REC2 (bind ?REC2 (/ ?TP2 (+ ?TP2 ?FN2)))))
(assert (REC3 (bind ?REC3 (/ ?TP3 (+ ?TP3 ?FN3)))))
(assert (REC4 (bind ?REC4 (/ ?TP4 (+ ?TP4 ?FN4)))))
(assert (PRE1 (bind ?PRE1 (/ ?TP1 (+ ?TP1 ?FP1)))))
(assert (PRE2 (bind ?PRE2 (/ ?TP2 (+ ?TP2 ?FP2)))))
(assert (PRE3 (bind ?PRE3 (/ ?TP3 (+ ?TP3 ?FP3)))))
(assert (PRE4 (bind ?PRE4 (/ ?TP4 (+ ?TP4 ?FP4)))))
(assert (FMES1 (bind ?FMES1 (/ (* 2 (/ ?TP1 (+ ?TP1 ?FN1))(/ ?TP1 (+ ?TP1 ?FP1)))(+ (/ ?TP1 (+ ?TP1 ?FN1))(/ ?TP1 (+ ?TP1 ?FP1)))))))
(assert (FMES2 (bind ?FMES2 (/ (* 2 (/ ?TP2 (+ ?TP2 ?FN2))(/ ?TP2 (+ ?TP2 ?FP2)))(+ (/ ?TP2 (+ ?TP2 ?FN2))(/ ?TP2 (+ ?TP2 ?FP2)))))))
(assert (FMES3 (bind ?FMES3 (/ (* 2 (/ ?TP3 (+ ?TP3 ?FN3))(/ ?TP3 (+ ?TP3 ?FP3)))(+ (/ ?TP3 (+ ?TP3 ?FN3))(/ ?TP3 (+ ?TP3 ?FP3)))))))
(assert (FMES4 (bind ?FMES4 (/ (* 2 (/ ?TP4 (+ ?TP4 ?FN4))(/ ?TP4 (+ ?TP4 ?FP4)))(+ (/ ?TP4 (+ ?TP4 ?FN4))(/ ?TP4 (+ ?TP4 ?FP4)))))))
(assert (waREC (+ (*(/ ?K1 (+ ?K1 ?K2 ?K3 ?K4)) ?REC1)(*(/ ?K2 (+ ?K1 ?K2 ?K3 ?K4)) ?REC2)(*(/ ?K3 (+ ?K1 ?K2 ?K3 ?K4)) ?REC3)(*(/ ?K4 (+ ?K1 ?K2 ?K3 ?K4)) ?REC4))))
(assert (waPRE (+ (*(/ ?K1 (+ ?K1 ?K2 ?K3 ?K4)) ?PRE1)(*(/ ?K2 (+ ?K1 ?K2 ?K3 ?K4)) ?PRE2)(*(/ ?K3 (+ ?K1 ?K2 ?K3 ?K4)) ?PRE3)(*(/ ?K4 (+ ?K1 ?K2 ?K3 ?K4)) ?REC4))))
(assert (waFMES (+ (*(/ ?K1 (+ ?K1 ?K2 ?K3 ?K4)) ?FMES1)(*(/ ?K2 (+ ?K1 ?K2 ?K3 ?K4)) ?FMES2)(*(/ ?K3 (+ ?K1 ?K2 ?K3 ?K4)) ?FMES3)(*(/ ?K4 (+ ?K1 ?K2 ?K3 ?K4)) ?REC4)))))
Можете ли вы предоставить сообщение об ошибке, которое отображается? –
Сообщение об ошибке, которое я получаю, следующее: Определение defrule: rule1 [PRNTUTIL2] Ошибка синтаксиса: проверьте соответствующий синтаксис для defrule. ОШИБКА:??? (defrule ГЛАВНАЯ :: rule1 (rw6 x6) (RW5 x5) (RW1 x1) (тест (и (<= x6 0,58) (<= x5 0,61) (< ? = x1 0,61))) fact1 <-? (ТР1 ТР1) fact2 <-? (FP1 FP1) fact3 <-? (TN2 TN2) fact4 <-??? (TN3 TN3) fact5 <- (TN4? TN4) FALSE – kate