-3
ctr=0.0
i=0
pc=0.0
pi=0.0
nc=0.0
ni=0.0


for line in fileinput.input(['/pro/file1']):
    line = line.replace("\n", "")
    if (i < len(revs)): 
        if('pos' in revs[i]):
            if(float(line) > 0):
                ctr=ctr+1
                pc=pc+1

            else:
                                pi=pi+1

        elif('neg' in revs[i]):
            if(float(line) < 0):
                ctr=ctr+1
                nc=nc+1

            else:
                                ni=ni+1

    i=i+1
precision = pc/(pc+pi)
recall = pc/(ni+pc) 

这段代码是关于情绪分析的。当我尝试查找准确性和召回时,我得到ZeroDivisionError:Float 除以零。如何修复它?

4

1 回答 1

0

不知道这是否适合您的情况,解决此问题的一种方法是执行类似的操作

precision = pc/(pc+pi) if (pc+pi) else 0
recall = pc/(ni+pc) if (ni+pc) else 0

在没有可除的情况下,这将给出一个零。可能是您需要的,可能是可怕地隐藏了一个真正的错误。

编辑:如果您的数据使您每次都采用“neg”分支,则 pc 和 pi 将为零,因此您将在 div/0 错误

precision = pc/(pc+pi)

...所以这就是原因

于 2013-03-07T11:47:55.943 回答