2016-11-23 11 views
1

私はいくつかの文(ペルシャ文、タブ、ペルシア語単語、タブ、英語単語(タグ))を持つファイルを持っています。英語の単語は、各文のクラスを示しています。このファイルには "情熱"と "塩辛い"という2つのクラスがあります。私はnaive bayesアルゴリズムで文章を分類しましたが、今では精度とリコールを計算しなければなりません。そのために私は混乱の行列を作らなければならないが、私はどのように分かっていない。私は小さなコードを書いて、 "情熱"は正のグループであり、 "塩辛い"は負のグループであると仮定しました。この場合、コードから出力が返されました。しかし、「塩辛い」を陽性とし、「情熱」を陰性とすると、数字は最初のケースとはまったく異なります。その結果、精度とリコールを計算する際に正解がありません。 2つのクラス(1回は情熱、1回は塩辛い)についてtp、tn、fp、fnを別々に計算して平均を計算し、この平均に基づいて精度とリコールを計算する必要がありますか?2クラスの分類子のための混同行列を作成する

#t = line.strip().split("\t") 
if t[2] == "passion" and argmax == "passion": 
    tp += 1 
elif t[2] == "passion" and argmax != "passion": 
    fn += 1 
elif t[2] == "salty" and argmax != "salty": 
    fp += 1 
elif t[2] == "salty" and argmax == "salty": 
    tn += 1 
print ("tp", tp, "tn", tn, "fp", fp, "fn", fn) 
(hint1:。:ARGMAXはNBアルゴリズムの出力であり、それはコードがテスト文章のためにそれを認識したタグである hint2私も、2つの以上のクラスにいくつかの他のファイルを持っています)

答えて

0

scikit-learnを使用する必要があります。これはすでに混同行列と分類レポートを提供しています。サンプル:

from sklearn.metrics import confusion_matrix, classification_report 
# suppose your predictions are stored in a variable called preds 
# and the true values are stored in a variable called y 
print(confusion_matrix(y, preds)) 
print(classification_report(y, preds)) 

(ところで、scikit学習はPython 2.7で使用することを意図しているが、すでにモデルが構築されておりますので、おそらく、これらの機能を使用しても安全です)。

また、あなたがNLPドメインにいることを確認したので、nltkライブラリが提供する機能を使用することができます。私は専門家ではないが、thisが役に立つはずだと思う。

関連する問題