[問題] 關於計算公式

看板Perl作者 (Tala)時間12年前 (2011/12/31 01:48), 編輯推噓4(406)
留言10則, 2人參與, 最新討論串1/1
最近寫到計算的部分 前半段 $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

12/31 02:02, , 1F
那你的recall是什麼?
12/31 02:02, 1F
$recall=$sens = 100 * (( $tp ) / ( $tp + $fn )); 跑過$sens 沒問題 目前是全部計算公式都有 ※ 編輯: aattsat 來自: 113.61.134.176 (12/31 02:57)

12/31 08:59, , 2F
如果recall=sen 為何不寫$recall=$sen?
12/31 08:59, 2F

01/02 16:28, , 3F
安 ,可以把你的TP FP TN FN 的數字給一下嗎?
01/02 16:28, 3F

01/02 16:36, , 4F
大概看一下如果TP=0的話$sens = $recall = 0
01/02 16:36, 4F

01/02 16:36, , 5F
$prec = 100 * (( $tp ) / ( $tp + $fp )) = 0;
01/02 16:36, 5F

01/02 16:37, , 6F
$fmeasure = 2*($prec * $recall) / ($prec + $recall)
01/02 16:37, 6F

01/02 16:37, , 7F
這樣分母為0 就不能算了
01/02 16:37, 7F

01/02 16:45, , 8F
建議你把Fmeasure = 2 * (p * r) / (p + r) 整個展開
01/02 16:45, 8F

01/02 16:45, , 9F
我展開後 F = 2TP / (2TP + FN +FP), 這樣即使TP=0也可以
01/02 16:45, 9F

01/02 16:46, , 10F
01/02 16:46, 10F
多謝!! ※ 編輯: aattsat 來自: 113.61.134.176 (04/18 15:55)
文章代碼(AID): #1E_VbPDz (Perl)