我正在尝试使用sci kit Learn在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)))

最佳答案

设置先验是处理此问题的一种较差的方法,并且会导致将否定的案例归为确实不应该的肯定的案例。您的数据分为.25 / .75拆分,因此0.5 / .5优先级是一个非常糟糕的选择。

取而代之的是,可以对精度求平均值,并用调和平均值进行调出,以产生F分数,该分数试图正确处理如下偏差数据:

from sklearn.metrics import f1_score


然后可以使用F1分数来评估模型的质量。然后,您可以进行一些模型调整和交叉验证,以找到可以更好地对数据进行分类的模型,即最大化F1得分的模型。

另一个选择是随机修剪数据中的否定案例,以便使用.5 / .5数据训练分类器。然后,预测步骤应给出更适当的分类。

关于python - 将Sklearn偏向正整数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27258306/

10-12 21:49