Machine learning 多类分类的sklearn度量

Machine learning 多类分类的sklearn度量,machine-learning,scikit-learn,precision-recall,Machine Learning,Scikit Learn,Precision Recall,我使用sklearn进行了GaussianNB分类。我尝试使用以下代码计算指标: print accuracy_score(y_test, y_pred) print precision_score(y_test, y_pred) 准确度分数工作正常,但精度分数计算显示错误如下: ValueError:目标为多类,但average='binary'。请选择其他平均设置 由于目标是多类的,我可以得到精度、召回率等的度量分数吗?函数调用precision\u score(y\u test,y\u

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

print accuracy_score(y_test, y_pred)
print precision_score(y_test, y_pred)
准确度分数工作正常,但精度分数计算显示错误如下:

ValueError:目标为多类,但average='binary'。请选择其他平均设置


由于目标是多类的,我可以得到精度、召回率等的度量分数吗?

函数调用
precision\u score(y\u test,y\u pred)
相当于
precision\u score(y\u test,y\u pred,pos\u label=1,average='binary')
。 文档()告诉我们:

“二进制”:

仅报告pos_标签指定类别的结果。这仅适用于目标(y_{true,pred})是二进制的情况

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

precision\u score(y\u test,y\u pred,average=None)
将返回每个类的精度分数,而

precision\u score(y\u test,y\u pred,average='micro')
将返回总比率 总磷/(总磷+总磷)


如果您选择另一个
average
选项而不是
binary

,那么
pos\u label
参数将被忽略。很好的答案,sklearn文档缺少的一件事是在average=None时指定类的顺序。“没有什么是不可能计算的,但如果也包括这一点就好了。”托马索格里尼完全同意。我在这一页结束,因为我不知道sklearn输出精度分数的顺序…@ml4294谢谢你的澄清我想知道我的情况是否如此?