用于多类分类的sklearn指标

时间:2017-08-25 22:53:39

标签: machine-learning scikit-learn precision-recall

我使用sklearn进行了GaussianNB分类。我尝试使用以下代码计算指标:

print accuracy_score(y_test, y_pred)
print precision_score(y_test, y_pred)

准确度得分正常,但精度得分计算显示错误为:

  

ValueError:Target是多类但是average ='binary'。请选择其他平均设置。

由于目标是多类的,我可以获得精度,召回等指标分数吗?

1 个答案:

答案 0 :(得分:37)

函数调用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)告诉我们:

  

'二进制':

     

仅报告pos_label指定的类的结果。仅当目标(y_ {true,pred})为二进制时才适用。

所以问题是你的标签不是二进制的,但可能只有一个热编码。幸运的是,还有其他选项可以处理您的数据:

precision_score(y_test, y_pred, average=None)将返回每个班级的精确分数,而

precision_score(y_test, y_pred, average='micro')将返回总比率 of tp /(tp + fp)

如果您选择pos_label以外的其他average选项,则会忽略binary参数。

相关问题