作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 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/
我正在尝试从 attoparsec 解构 IResult monad分成几 block 。这是IResult data IResult t r = Fail t [String] String
我是一名优秀的程序员,十分优秀!