我使用 sklearn 进行了 GaussianNB 分类。我尝试使用以下代码计算指标:
print accuracy_score(y_test, y_pred)
print precision_score(y_test, y_pred)
准确性分数工作正常,但精度分数计算显示错误为:
ValueError:目标是多类,但平均值=“二进制”。请选择其他平均设置。
由于目标是多类的,我可以获得精度、召回率等指标分数吗?
函数调用precision_score(y_test, y_pred)
相当于precision_score(y_test, y_pred, pos_label=1, average='binary')
。
文档(http://scikit-learn.org/stable/modules/ generated/sklearn.metrics. precision_score.html http://scikit-learn.org/stable/modules/generated/sklearn.metrics.precision_score.html) 告诉我们:
“二进制”:
仅报告 pos_label 指定的类别的结果。仅当目标 (y_{true,pred}) 是二进制时才适用。
所以问题是你的标签不是二进制的,而是可能是单热编码的。幸运的是,还有其他适合您的数据的选项:
precision_score(y_test, y_pred, average=None)
将返回每个类别的精度分数,同时
precision_score(y_test, y_pred, average='micro')
将返回总比率
tp/(tp + fp)
The pos_label
如果您选择另一个,参数将被忽略average
选项比binary
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)