我试图构建一个非常简单的程序,用于计算两个字符串的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)
产出:0 26 0
如前所述,您使用的字符不同,它混合了希腊字母O omicron和拉丁字母O大写字母
https://apps.timwhitlock.info/unicode/inspect?s=%CE%9F
此外,在本用例中使用zip操作符是有意义的,而不是通过索引进行比较:
这是一个奇怪的字符,但请尝试复制
actual_str
或predicted_str
变量中使用的一个“O”字符,并将其粘贴到if语句中。我认为这是不匹配的,尽管它们看起来完全相同最后一个if语句也是不必要的
相关问题 更多 >
编程相关推荐