零除错误 - 浮点除法错误

-3 投票
1 回答
1487 浏览
提问于 2025-04-17 18:15
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 division by zero的错误。这是什么意思呢?就是在计算的时候,出现了除以零的情况,导致程序无法继续运行。我该怎么解决这个问题呢?

1 个回答

0

我不知道这对你的情况是否合适,但解决这个问题的一种方法是这样做:

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

这样做的话,如果没有东西可以去除,就会得到一个零。这个结果可能是你需要的,也可能是在掩盖一个真正的错误。

补充一下:如果你的数据每次都让你走“负”的那条路,那么 pc 和 pi 就会是零,这样在这里就会出现除以零的错误:

precision = pc/(pc+pi)

...所以这就是问题的根源

撰写回答