classification_report 函数用法

    1. classification_report简介
    2. sklearn中的classification_report函数用于显示主要分类指标的文本报告.在报告中显示每个类的精确度,召回率,F1值等信息。
    3. 主要参数:
    4. y_true1维数组,或标签指示器数组/稀疏矩阵,目标值。
    5. y_pred1维数组,或标签指示器数组/稀疏矩阵,分类器返回的估计值。
    6. labelsarrayshape = [n_labels],报表中包含的标签索引的可选列表。
    7. target_names:字符串列表,与标签匹配的可选显示名称(相同顺序)。
    8. sample_weight:类似于shape = [n_samples]的数组,可选项,样本权重。
    9. digitsint,输出浮点值的位数.

    1. from sklearn.metrics import classification_report
    2. y_true = [0, 1, 2, 2, 2]
    3. y_pred = [0, 0, 2, 2, 1]
    4. target_names = ['class 0', 'class 1', 'class 2']
    5. print(classification_report(y_true, y_pred, target_names=target_names))

    输出

    1. precision recall f1-score support
    2. class 0 0.50 1.00 0.67 1
    3. class 1 0.00 0.00 0.00 1
    4. class 2 1.00 0.67 0.80 3
    5. micro avg 0.60 0.60 0.60 5
    6. macro avg 0.50 0.56 0.49 5
    7. 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

    参考文档

    1. https://blog.csdn.net/akadiao/article/details/78788864
    2. https://blog.csdn.net/iteye_18979/article/details/82726582
    3. https://jishuin.proginn.com/p/763bfbd55d01
    4. https://zhuanlan.zhihu.com/p/368196647