[英]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_str
或predicted_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.