2016-11-23 103 views
1

我有一個帶有一些句子(波斯語句子,標籤,波斯語單詞(標籤),標籤,英文單詞(標籤))的文件。英文單詞顯示每個句子的課程。這個文件有兩個類,「激情」和「鹹」。我用樸素貝葉斯算法分類句子,現在我必須計算精度和回憶。爲此我必須製作一個混淆矩陣,但我不知道如何。我寫了一小段代碼,並假定「激情」是積極的羣體,「鹹」是消極的羣體。該代碼返回了這種情況下的輸出。但是,如果我假設「鹹」爲正,「激情」爲負,則這些數字與第一種情況完全不同,因此,當我想計算精確度和回憶時,我沒有正確的答案。我應該分別計算tp,tn,fp和fn兩個類別(一次是激情還是一次是鹹味),然後計算平均值,然後根據這個平均值計算精度和召回率?爲2類分類器做一個混淆矩陣

(HINT1:argmax是NB算法的輸出,它是代碼認可它的測試句子的標籤 HINT2:我有一些其他的文件長度超過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) 

回答

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應該是有用的。