簡體   English   中英

計算 TP、FP、TN、FN 值

[英]Calculating TP, FP, TN, FN values

我正在嘗試構建一個非常簡單的程序來計算 2 個字符串的 TP/FP/FN/TN(預測的二級蛋白質結構與已證明的二級蛋白質結構),但它沒有正確計算它們。 我錯過了什么?

actual_str = '*ΟΟΟΟΟΟ******////////////**//////////*****////ΟΟΟΟΟΟΟΟΟ***'
predicted_str = '****--********/////////-----//////****----**-ΟΟΟΟΟΟΟ/-****'

TP = 0
FP = 0
TN = 0
FN = 0

for i in range(len(predicted_str)): 
    if predicted_str[i]==actual_str[i]=='O':
        TP += 1
        
    if predicted_str[i]!='O' and actual_str[i]=='O': 
        FP += 1
        
    if predicted_str[i]==actual_str[i]=='/' or predicted_str[i]==actual_str[i]=='*':
        TN += 1
        
    if predicted_str[i]=='O' and actual_str[i]!='O':
        FN += 1
        
    if predicted_str[i]=='-': #just ignore the '-' and move on to the next
        i+=1

print(TP, FP, TN, FN)
    

Output:0 0 26 0

這是一個奇怪的問題,但請嘗試復制在actual_strpredicted_str變量中使用的“O”字符之一,並將其粘貼到您的 if 語句中。 我認為存在不匹配,即使它們看起來相同。

最后一個 if 語句也不是必需的。

如前所述,您使用的字符不同,它混合了希臘字母 O omicron 和拉丁字母 o 大寫字母。

https://apps.timwhitlock.info/unicode/inspect?s=%CE%9F

除了按索引進行比較之外,在這個用例中使用 zip 運算符是有意義的:

for (actual, predicted) in zip(actual_str, predicted_str):
   if (..

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM