2013-03-07 82 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錯誤......讓是原因