din*_*no 24 machine-learning scikit-learn precision-recall
我使用sklearn进行了GaussianNB分类.我尝试使用以下代码计算指标:
print accuracy_score(y_test, y_pred)
print precision_score(y_test, y_pred)
Run Code Online (Sandbox Code Playgroud)
准确度得分正常,但精确得分计算显示错误如下:
ValueError:Target是多类但是average ='binary'.请选择其他平均设置.
由于目标是多类的,我可以获得精度,召回等指标分数吗?
ml4*_*294 44
函数调用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')
将返回tp /(tp + fp)的总比率
pos_label
如果您选择其他average
选项,则将忽略该参数binary
.