classification_report 函数用法
classification_report简介
sklearn中的classification_report函数用于显示主要分类指标的文本报告.在报告中显示每个类的精确度,召回率,F1值等信息。
主要参数:
y_true:1维数组,或标签指示器数组/稀疏矩阵,目标值。
y_pred:1维数组,或标签指示器数组/稀疏矩阵,分类器返回的估计值。
labels:array,shape = [n_labels],报表中包含的标签索引的可选列表。
target_names:字符串列表,与标签匹配的可选显示名称(相同顺序)。
sample_weight:类似于shape = [n_samples]的数组,可选项,样本权重。
digits:int,输出浮点值的位数.
from sklearn.metrics import classification_report
y_true = [0, 1, 2, 2, 2]
y_pred = [0, 0, 2, 2, 1]
target_names = ['class 0', 'class 1', 'class 2']
print(classification_report(y_true, y_pred, target_names=target_names))
输出
precision recall f1-score support
class 0 0.50 1.00 0.67 1
class 1 0.00 0.00 0.00 1
class 2 1.00 0.67 0.80 3
micro avg 0.60 0.60 0.60 5
macro avg 0.50 0.56 0.49 5
weighted avg 0.70 0.60 0.61 5
ytrue 为样本真实标记, y_pred 为样本预测标记
support : 为每个标签的出现次数,即 y_true 真实目标值里面的各个分类的总和
accuracy : 准确率,即所有分类中正确的比例,比如上面预测结果中总共正确了3个,则准确率为 3/5 = 60%
precision: 精确度,某个分类下模型预测的结果中有多少是预测正确的,即 预测正确数量/预测数量
recall : 召回率,也叫查全率,即该分类下正确的数值中,有多少个正确的被选出来了,例如 class 2 的 recall,其中 y_true 里面有3个,但是 y_pred 里面只预测出2个正确的,则召回率为 2/3=0.67
f1-score : 精确度和召回率的调和平均值,公式是 2/F=1/P + 1/R,则 F = 2((P_R)/(P+R)),精确度和召回率都高时, F1值也会高. F1值在1时达到最佳值(完美的精确度和召回率),最差为0.在二元分类中, F1值是测试准确度的量度。
micro avg: 计算所有数据下的指标值,比如全部数据 5 个样本中有 3 个预测正确,故 micro avg 为 0.6
macro avg: 每个类别评估指标未加权的平均值,比如准确率的 macro avg,(0.50+0.00+1.00)/3=0.5
weighted avg: 加权平均,权重就是support,比如第一个值的计算方法,(0.50x1 + 0.00x1 + 1.00x3)/5 = 0.70
参考文档
https://blog.csdn.net/akadiao/article/details/78788864
https://blog.csdn.net/iteye_18979/article/details/82726582
https://jishuin.proginn.com/p/763bfbd55d01
https://zhuanlan.zhihu.com/p/368196647