• sklearn包中对于分类问题,如何计算accuracy和roc_auc_score?


    1. 基础条件

    import numpy as np
    from sklearn import metrics
    
    y_true = np.array([1, 7, 4, 6, 3])
    y_prediction = np.array([3, 7, 4, 6, 3])
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2. accuracy_score计算

    acc = metrics.accuracy_score(y_true, y_prediction)
    
    • 1

    这个没问题

    3. roc_auc_score计算

    The binary and multiclass cases expect labels with shape (n_samples,) while the multilabel case expects binary label indicators with shape (n_samples, n_classes).

    因此metrics.roc_auc_score对于multiclasses类的roc_auc_score计算,需要一个二维array,每一列是表示分的每一类,每一行是表示是否为此类。

    from sklearn.preprocessing import OneHotEncoder
    enc = OneHotEncoder(sparse=False)
    enc.fit(y_true.reshape(-1, 1))
    y_true_onehot = enc.transform(y_true.reshape(-1, 1))
    y_predictions_onehot = \
        enc.transform(y_prediction.reshape(-1, 1))
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    In [201]: y_true_onehot
    Out[201]: 
    array([[1., 0., 0., 0., 0.],
           [0., 0., 0., 0., 1.],
           [0., 0., 1., 0., 0.],
           [0., 0., 0., 1., 0.],
           [0., 1., 0., 0., 0.]])
    
    In [202]: y_predictions_onehot
    Out[202]: 
    array([[0., 1., 0., 0., 0.],
           [0., 0., 0., 0., 1.],
           [0., 0., 1., 0., 0.],
           [0., 0., 0., 1., 0.],
           [0., 1., 0., 0., 0.]])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    In [204]: enc.categories_
    Out[204]: [array([1, 3, 4, 6, 7])]
    
    • 1
    • 2

    所以结合enc.categories_y_true_onehoty_truey_true_onehot的对应关系如下:

    Class13467
    true value: 11
    true value: 71
    true value: 41
    true value: 61
    true value: 31

    因此,对于y_predictiony_prediction_onehot的对应关系就是如下:

    Class13467
    Prediction value: 31
    Prediction value: 71
    Prediction value: 41
    Prediction value: 61
    Prediction value: 31

    这就解释了上述y_true_onehoty_prediction_onehot的返回结果。

    ensemble_auc = metrics.roc_auc_score(y_true_onehot,
                                         y_predictions_onehot)
    
    • 1
    • 2
    In [200]: ensemble_auc
    Out[200]: 0.875
    
    • 1
    • 2
  • 相关阅读:
    8.19学习记录 各种比赛的题目总结
    提取项目依赖包的licenses
    国庆作业2
    快来体验快速通道,netty中epoll传输协议详解
    如何扫描MSI安装文件的路径
    Linux操作系统基础指令II
    nginx网站服务
    手写深度学习之优化器(SGD、Momentum、Nesterov、AdaGrad、RMSProp、Adam)
    计算机网络基础知识-网络协议
    MFC读取obj格式文件2
  • 原文地址:https://blog.csdn.net/zxxr123/article/details/132895169