看板 Perl 關於我們 聯絡資訊
最近寫到計算的部分 前半段 $acc = 100 * (( $tp + $tn) / ($tp + $tn + $fp + $fn)); $spec = 100 * (( $tn ) / ( $tn + $fp )); $sens = 100 * (( $tp ) / ( $tp + $fn )); 這三個計算公式都成功了 (即使其中一值為0,最後還是能成功顯示) 現在問題來了,我加了下面公式後 $sens = $recall; $prec = 100 * (( $tp ) / ( $tp + $fp )); $fmeasure = 2 * ($prec * $recall) / ($prec + $recall); $mcc = (($tp*$tn)-($fn*$fp))/sqrt(($tp+$fp)*($tp+$fn)*($tn+$fp)*($tn+$fn)); 一直說我的$prec 值為0 正常如果真為0其實還是能跑出來的 現在一直卡在為0部分...執行失敗 請問我公式內容or寫法有錯誤嗎? mcc部分 開根號那邊不確定 = = 麻煩各位大大的幫忙了 謝謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 113.61.134.176
abliou:那你的recall是什麼? 12/31 02:02
$recall=$sens = 100 * (( $tp ) / ( $tp + $fn )); 跑過$sens 沒問題 目前是全部計算公式都有 ※ 編輯: aattsat 來自: 113.61.134.176 (12/31 02:57)
abliou:如果recall=sen 為何不寫$recall=$sen? 12/31 08:59
sqrt1089:安 ,可以把你的TP FP TN FN 的數字給一下嗎? 01/02 16:28
sqrt1089:大概看一下如果TP=0的話$sens = $recall = 0 01/02 16:36
sqrt1089:$prec = 100 * (( $tp ) / ( $tp + $fp )) = 0; 01/02 16:36
sqrt1089:$fmeasure = 2*($prec * $recall) / ($prec + $recall) 01/02 16:37
sqrt1089:這樣分母為0 就不能算了 01/02 16:37
sqrt1089:建議你把Fmeasure = 2 * (p * r) / (p + r) 整個展開 01/02 16:45
sqrt1089:我展開後 F = 2TP / (2TP + FN +FP), 這樣即使TP=0也可以 01/02 16:45
sqrt1089:算 01/02 16:46
多謝!! ※ 編輯: aattsat 來自: 113.61.134.176 (04/18 15:55)