-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

これがあなたのケースに適しているかどうかわからない場合、これを解決する1つの方法は、次のようなことを行うことです。

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 に答える