2013-03-07 83 views
-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) 

这个代码是关于情绪analysis.I我得到ZeroDivisionError:浮点被零除当我试图找到准确性和recall.how修复它zerodivisionerror浮球划分错误

+0

不要除以零? 'revs'从哪里来? – 2013-03-07 11:43:01

+1

也许你应该问问http://math.stackexchange.com/ – 2013-03-07 11:46:28

+0

@PavelAnossov revs是编码的一部分,我只给出了它的一部分! – user2059594 2013-03-07 12:10:33

回答

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) 

得到一个DIV/0错误......让是原因