gpt4 book ai didi

python - 对于 MultinomialNB,Sklearn 偏向正值

转载 作者:行者123 更新时间:2023-11-30 09:12:52 24 4
gpt4 key购买 nike

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

最佳答案

设置先验是处理此问题的一种糟糕方法,并且会导致负面案例被分类为实际上不应该的正面案例。您的数据有 0.25/.75 分割,因此先验 0.5/.5 是一个非常糟糕的选择。

相反,我们可以用调和平均值对精确率和召回率进行平均,以产生 F 分数,尝试正确处理有偏差的数据,如下所示:

from sklearn.metrics import f1_score

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

另一种选择是随机删除数据中的负例,以便使用 0.5/.5 数据训练分类器。然后预测步骤应该给出更合适的分类。

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com