2017-08-25 78 views
6

我已经使用sklearn执行了GaussianNB分类。我尝试使用以下代码来计算所述度量:多类分类的sklearn指标

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

精度分数是工作正常,但精度分数计算被示出作为错误:

ValueError: Target is multiclass but average='binary'. Please choose another average setting.

作为目标是多类,可以我有指标分数精确度,召回率等?

回答

10

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

'binary':

Only report results for the class specified by pos_label. This is applicable only if targets (y_{true,pred}) are binary.

所以问题是,你的标签不是二元的,但可能是一个热编码。幸运的是,还有其他应该与您的数据的工作选择:

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

precision_score(y_test, y_pred, average='micro')将返回总比TP /(TP + FP)

如果您选择另一average选项而不是binary,则pos_label参数将被忽略。