2014-12-02 20 views
1

我想在python中使用sci工具包學習的一系列示例上運行multinomial naive bayes。我謹慎地將所有例子歸類爲負面的。訓練集偏向於P(負)〜0.75。我瀏覽了documentation,我無法找到偏向積極的方式。偏向正方向Sklearn對於MultinomialNB

from sklearn.datasets import load_svmlight_file 
from sklearn.naive_bayes import MultinomialNB 
from sklearn.metrics import accuracy_score 
from sklearn.metrics import recall_score 
from sklearn.metrics import precision_score 
X_train, y_train= load_svmlight_file("POS.train") 
x_test, y_test = load_svmlight_file("POS.val") 
clf = MultinomialNB() 
clf.fit(X_train, y_train) 
preds = clf.predict(x_test) 
print('accuracy: ' + str(accuracy_score(y_test, preds))) 
print('precision: ' + str(precision_score(y_test, preds))) 
print('recall: ' + str(recall_score(y_test, preds))) 

回答

1

設置先前是一個不好的方法來處理這個問題,並將導致負面情況被歸類爲積極的,真的不應該。你的數據有一個.25/.75分割,所以.5/.5是一個非常糟糕的選擇。

相反,一個可以平均的精確度和與調和平均召回以產生F值,它試圖正確處理偏置數據是這樣的:

from sklearn.metrics import f1_score 

的F1得分可以被用來評估質量的模型。然後,您可以進行一些模型調整和交叉驗證,以找到更好地對數據進行分類的模型,即最大化F1分數的模型。

另一種選擇是隨機刪除數據中的負面情況,以便分類器使用.5/.5數據進行訓練。預測步驟應該給出更適當的分類。

+1

我會過度抽樣(重複)陽性病例,而不是扔掉陰性病例。 – 2014-12-03 15:36:47

+0

好點,同上拉斯曼的評論。 – AN6U5 2014-12-05 01:23:11