我正在尝试使用sci kit学习在python中的一系列示例中运行多项式朴素贝叶斯。我将所有的例子都归为负面。训练集有点偏向负P(负)〜.75。我查看了documentation,我找不到偏向积极的方法。
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)))
答案 0 :(得分:1)
设置优先级是处理这种情况的一种不好的方法,并且会导致负面情况被归类为真正不应该存在的正面情况。你的数据有.25 / .75分割,所以.5 / .5先前是一个非常糟糕的选择。
相反,可以使用调和平均值来平均精度和召回率以产生F分数,该分数试图正确处理这样的偏差数据:
from sklearn.metrics import f1_score
然后可以使用F1分数来评估模型的质量。然后,您可以进行一些模型调整和交叉验证,以找到更好地分类数据的模型,即最大化F1分数的模型。
另一种选择是随机删除数据中的否定案例,以便使用.5 / .5数据训练分类器。然后,预测步骤应该给出更合适的分类。