精华内容
下载资源
问答
  • accuracy_score函数计算了准确率。在二分类或者多分类中,预测得到的label,跟真实label比较,计算准确率。在multilabel(多标签问题)分类中,该函数会返回子集的准确率。如果对于一个样本来说,必须严格匹配真实...

    1.acc计算原理

    sklearn中accuracy_score函数计算了准确率。

    在二分类或者多分类中,预测得到的label,跟真实label比较,计算准确率。

    在multilabel(多标签问题)分类中,该函数会返回子集的准确率。如果对于一个样本来说,必须严格匹配真实数据集中的label,整个集合的预测标签返回1.0;否则返回0.0.

    2.acc的不适用场景:

    正负样本不平衡的情况下,准确率这个评价指标有很大的缺陷。比如在互联网广告里面,点击的数量是很少的,一般只有千分之几,如果用acc,即使全部预测成负类(不点击)acc也有 99% 以上,没有意义。因此,单纯靠准确率来评价一个算法模型是远远不够科学全面的。在类别不平衡没那么太严重时,该指标具有一定的参考意义。

    3.metrics.accuracy_score()的使用方法

    不管是二分类还是多分类,还是多标签问题,计算公式都为:

    这里写图片描述

    只是在多标签问题中,TP、TN要求更加严格,必须严格匹配真实数据集中的label。

    sklearn.metrics.accuracy_score(y_true, y_pred, *, normalize=True, sample_weight=None)

    输入参数:

    y_true:真是标签。二分类和多分类情况下是一列,多标签情况下是标签的索引。

    y_pred:预测标签。二分类和多分类情况下是一列,多标签情况下是标签的索引。

    normalize:bool, optional (default=True),如果是false,正确分类的样本的数目(int);如果为true,返回正确分类的样本的比例,必须严格匹配真实数据集中的label,才为1,否则为0。

    sample_weight:array-like of shape (n_samples,), default=None。Sample weights.

    输出:

    如果normalize == True,返回正确分类的样本的比例,否则返回正确分类的样本的数目(int)。

    4.例子 

    举一个多标签的例子,这里假设有21个标签。

    数据格式:预测label是有阈值硬阶段得来,比如当预测得分大于0.5,则在这个索引下的label为1,否则为0。

    idlabelpred_labelpred_label_scorepred_scores(模型输出的scores)
    1559592780[3][3][0.9060243964195251][0.03569700941443443, 0.025016790255904198, 0.010681516490876675, 0.9060243964195251, 0.03405195102095604, 0.01652703806757927, 0.01057326141744852, 0.015285834670066833, 0.03219904750585556, 0.01710071600973606, 0.015052232891321182, 0.012746844440698624, 0.009399563074111938, 0.012753037735819817, 0.008887830190360546, 0.011201461777091026, 0.013154321350157261, 0.010007181204855442, 0.015232570469379425, 0.011832496151328087, 0.014289622195065022]
    1559950270[3][][][0.0441354475915432, 0.07238972187042236, 0.011645170859992504, 0.007589259184896946, 0.25604453682899475, 0.08702245354652405, 0.27572867274284363, 0.00486581027507782, 0.01071715448051691, 0.010638655163347721, 0.005942077841609716, 0.03388604149222374, 0.003174690529704094, 0.006336248945444822, 0.007447054609656334, 0.004069846123456955, 0.06864038109779358, 0.003221432212740183, 0.010166178457438946, 0.014550245366990566, 0.018491217866539955]
    1559394894[3][3][0.6821054816246033][0.2968560457229614, 0.0307493656873703, 0.005526685621589422, 0.6821054816246033, 0.019207751378417015, 0.011433916166424751, 0.00833720900118351, 0.011756493709981441, 0.028093582019209862, 0.008476401679217815, 0.00896463356912136, 0.007736032363027334, 0.006790427025407553, 0.009148293174803257, 0.006993972696363926, 0.006845239549875259, 0.008285323157906532, 0.005908709950745106, 0.009022236801683903, 0.008929350413382053, 0.019131703302264214]
    1559782048[3][3][0.9018600583076477][0.04472490772604942, 0.0243248138576746, 0.011095968075096607, 0.9018600583076477, 0.02759535051882267, 0.01639750227332115, 0.010229885578155518, 0.01442675106227398, 0.03185756132006645, 0.01614650897681713, 0.014211165718734264, 0.011741148307919502, 0.00937943160533905, 0.013027109205722809, 0.008298314176499844, 0.010878310538828373, 0.012541105970740318, 0.009680655784904957, 0.014786235056817532, 0.01098882406949997, 0.014351315796375275]
    1560480983[3][6][0.5473132729530334][0.07873011380434036, 0.02117929421365261, 0.00462101586163044, 0.007679674308747053, 0.006423152983188629, 0.003737745573744178, 0.5473132729530334, 0.010648651979863644, 0.2306162267923355, 0.033958908170461655, 0.009718521498143673, 0.03945154696702957, 0.0667884573340416, 0.010746568441390991, 0.008459050208330154, 0.012853718362748623, 0.006122407037764788, 0.005631749518215656, 0.006334631238132715, 0.01488021295517683, 0.08340618759393692]

    demo:

    目的:计算标签的整体acc、precision、recall。

    如果想计算某一个类别的precision和recall,则在评价函数中加上这个参数:pos_label = [4],这里的4表示索引的第4列。

    def calculate_acc_multi_label(read_path, sheet_name):
        workbook = xlrd.open_workbook(read_path)  # 打开工作簿
        sheets = workbook.sheet_names()  # 获取工作簿中的所有表格
        worksheet = workbook.sheet_by_name(sheets[0])  # 获取工作簿中所有表格中的的第一个表格
        print(worksheet.nrows)
        print(worksheet.ncols)
        true_label = []
        pred_label = []
        for i in range(1, 501):
            label_str = worksheet.cell_value(i, 1)
            label = [0 for x in range(0, 21)]
            label_str = label_str[1:-1]
            label_list = label_str.split(',')
            for j in label_list:
                label[int(j)] = 1
            true_label.append(label)
    
            pred_list = worksheet.cell_value(i, 2)
            pred_lab = [0 for x in range(0, 21)]
            # print('--length of pred: ', len(pred_list))
            pred_list = pred_list[1:-1]
            print('---index: {0}  pred_list {1}: '.format(i, pred_list))
            if pred_list != '':
                pred_list = pred_list.split(',')
                for g in pred_list:
                    pred_lab[int(g)] = 1
            pred_label.append(pred_lab)
        acc = metrics.accuracy_score(true_label, pred_label)
        print('--acc:', acc)
        # acc_list = hamming_score(true_label, pred_label)
        # hamming = np.mean(acc_list)
        # print('--hamming:', hamming)
        precision = metrics.precision_score(true_label, pred_label,  average='micro')
        print('--precision:', precision)
        recall = metrics.recall_score(true_label, pred_label, average='micro')
        print('--recall:', recall)
        f1 = metrics.f1_score(np.array(true_label), np.array(pred_label), average='micro')
        print('--f1:', f1)
    
        mcm = metrics.multilabel_confusion_matrix(true_label, pred_label)
        tn = mcm[:, 0, 0]
        tp = mcm[:, 1, 1]
        fn = mcm[:, 1, 0]
        fp = mcm[:, 0, 1]
        print('tp: {0}  fn: {1}  fp: {2}'.format(tp, fn, fp))
    
        sum_tp = sum(tp)
        sum_fn = sum(fn)
        sum_fp = sum(fp)
        print('sum_tp: {0}  sum_fn: {1}  sum_fp: {2}'.format(sum_tp, sum_fn, sum_fp))
        recall_list = tp / (tp + fn)
        print('--recall_list', recall_list)
        precision_list = tp / (tp + fp)
        print('--precision_list', precision_list)
        print('--precision_list length', len(precision_list))
        print('---mcm :', mcm)
    if __name__ == '__main__':
    
        save_path = './multi_label_all_0.5_2.xlsx'
        sheet_name = 'predict'
        calculate_acc_multi_label(save_path, sheet_name)

    这里打印了多标签的混淆矩阵,用来验证acc、precision、recall是怎么计算得到的,运行后,返回结果如下:

    --acc: 0.704
    --precision: 0.7960396039603961
    --recall: 0.7052631578947368
    --f1: 0.747906976744186
    tp: [  2   2   0 393   4   0   0   1   0   0   0   0   0   0   0   0   0   0
       0   0   0]  fn: [  0  14   2 107   6   2   0  13  16   0   5   1   0   0   1   0   1   0
       0   0   0]  fp: [45 18  4  0 13  0 13  1  2  5  0  1  0  0  0  1  0  0  0  0  0]
    sum_tp: 402  sum_fn: 168  sum_fp: 103
    --recall_list [1.         0.125      0.         0.786      0.4        0.
            nan 0.07142857 0.                nan 0.         0.
            nan        nan 0.                nan 0.                nan
            nan        nan        nan]
    --precision_list [0.04255319 0.1        0.         1.         0.23529412        nan
     0.         0.5        0.         0.                nan 0.
            nan        nan        nan 0.                nan        nan
            nan        nan        nan]
    --precision_list length 21
    ---mcm : [[[453  45]
      [  0   2]]
     [[466  18]
      [ 14   2]]
     [[494   4]
      [  2   0]]
     [[  0   0]
      [107 393]]
     [[477  13]
      [  6   4]]
     [[498   0]
      [  2   0]]
     [[487  13]
      [  0   0]]
     [[485   1]
      [ 13   1]]
     [[482   2]
      [ 16   0]]
     [[495   5]
      [  0   0]]
     [[495   0]
      [  5   0]]
     [[498   1]
      [  1   0]]
     [[500   0]
      [  0   0]]
     [[500   0]
      [  0   0]]
     [[499   0]
      [  1   0]]
     [[499   1]
      [  0   0]]
     [[499   0]
      [  1   0]]
     [[500   0]
      [  0   0]]
     [[500   0]
      [  0   0]]
     [[500   0]
      [  0   0]]
     [[500   0]
      [  0   0]]]

    可以用过混淆矩阵计算acc 、precision、recall等指标。

     

    展开全文
  • sklearn.metrics.accuracy_score(y_true, y_pred, normalize=True, sample_weight=None) normalize:默认值为True,返回正确分类的比例;如果为False,返回正确分类的样本数 代码: >>>import numpy ...

    sklearn.metrics.accuracy_score(y_true, y_pred, normalize=True, sample_weight=None)

    normalize:默认值为True,返回正确分类的比例;如果为False,返回正确分类的样本数

     

    代码:

    >>>import numpy as np
    >>>from sklearn.metrics import accuracy_score
    >>>y_pred = [0, 2, 1, 3]
    >>>y_true = [0, 1, 2, 3]
    >>>accuracy_score(y_true, y_pred)
    0.5
    >>>accuracy_score(y_true, y_pred, normalize=False)
    2

     

    展开全文
  • accuracy_score 分类准确率分数是指所有分类正确的百分比。分类准确率这一衡量分类器的标准比较...sklearn.metrics.accuracy_score(y_true, y_pred, normalize=True, sample_weight=None) normalize:默认值为True...

    accuracy_score
    分类准确率分数是指所有分类正确的百分比。分类准确率这一衡量分类器的标准比较容易理解,但是它不能告诉你响应值的潜在分布,并且它也不能告诉你分类器犯错的类型。

    形式:
    sklearn.metrics.accuracy_score(y_true, y_pred, normalize=True, sample_weight=None)

    normalize:默认值为True,返回正确分类的比例;如果为False,返回正确分类的样本数

    示例:
    >>>import numpy as np
    >>>from sklearn.metrics import accuracy_score
    >>>y_pred = [0, 2, 1, 3]
    >>>y_true = [0, 1, 2, 3]
    >>>accuracy_score(y_true, y_pred)
    0.5
    >>>accuracy_score(y_true, y_pred, normalize=False)
    2
    recall_score
    召回率 =提取出的正确信息条数 /样本中的信息条数。通俗地说,就是所有准确的条目有多少被检索出来了。

    形式:
    klearn.metrics.recall_score(y_true, y_pred, labels=None, pos_label=1,average='binary', sample_weight=None)

    参数average : string, [None, ‘micro’, ‘macro’(default), ‘samples’, ‘weighted’]

    将一个二分类matrics拓展到多分类或多标签问题时,我们可以将数据看成多个二分类问题的集合,每个类都是一个二分类。接着,我们可以通过跨多个分类计算每个二分类metrics得分的均值,这在一些情况下很有用。你可以使用average参数来指定。

    macro:计算二分类metrics的均值,为每个类给出相同权重的分值。当小类很重要时会出问题,因为该macro-averging方法是对性能的平均。另一方面,该方法假设所有分类都是一样重要的,因此macro-averaging方法会对小类的性能影响很大。

    weighted:对于不均衡数量的类来说,计算二分类metrics的平均,通过在每个类的score上进行加权实现。

    micro:给出了每个样本类以及它对整个metrics的贡献的pair(sample-weight),而非对整个类的metrics求和,它会每个类的metrics上的权重及因子进行求和,来计算整个份额。Micro-averaging方法在多标签(multilabel)问题中设置,包含多分类,此时,大类将被忽略。

    samples:应用在multilabel问题上。它不会计算每个类,相反,它会在评估数据中,通过计算真实类和预测类的差异的metrics,来求平均(sample_weight-weighted)

    average:average=None将返回一个数组,它包含了每个类的得分.

    示例:
    >>>from sklearn.metrics import recall_score
    >>>y_true = [0, 1, 2, 0, 1, 2]
    >>>y_pred = [0, 2, 1, 0, 0, 1]
    >>>recall_score(y_true, y_pred, average='macro') 
    0.33...
    >>>recall_score(y_true, y_pred, average='micro') 
    0.33...
    >>>recall_score(y_true, y_pred, average='weighted') 
    0.33...
    >>>recall_score(y_true, y_pred, average=None)
    array([1.,  0., 0.])
    roc_curve
    ROC曲线指受试者工作特征曲线/接收器操作特性(receiver operating characteristic,ROC)曲线,是反映灵敏性和特效性连续变量的综合指标,是用构图法揭示敏感性和特异性的相互关系,它通过将连续变量设定出多个不同的临界值,从而计算出一系列敏感性和特异性。ROC曲线是根据一系列不同的二分类方式(分界值或决定阈),以真正例率(也就是灵敏度)(True Positive Rate,TPR)为纵坐标,假正例率(1-特效性)(False Positive Rate,FPR)为横坐标绘制的曲线。

    ROC观察模型正确地识别正例的比例与模型错误地把负例数据识别成正例的比例之间的权衡。TPR的增加以FPR的增加为代价。ROC曲线下的面积是模型准确率的度量,AUC(Area under roccurve)。

    纵坐标:真正率(True Positive Rate , TPR)或灵敏度(sensitivity)

    TPR = TP /(TP + FN)  (正样本预测结果数 / 正样本实际数)

    横坐标:假正率(False Positive Rate , FPR)

    FPR = FP /(FP + TN) (被预测为正的负样本结果数 /负样本实际数)

    形式:
    sklearn.metrics.roc_curve(y_true,y_score, pos_label=None, sample_weight=None, drop_intermediate=True)

    该函数返回这三个变量:fpr,tpr,和阈值thresholds;

    这里理解thresholds:

    分类器的一个重要功能“概率输出”,即表示分类器认为某个样本具有多大的概率属于正样本(或负样本)。

    “Score”表示每个测试样本属于正样本的概率。

    接下来,我们从高到低,依次将“Score”值作为阈值threshold,当测试样本属于正样本的概率大于或等于这个threshold时,我们认为它为正样本,否则为负样本。每次选取一个不同的threshold,我们就可以得到一组FPR和TPR,即ROC曲线上的一点。当我们将threshold设置为1和0时,分别可以得到ROC曲线上的(0,0)和(1,1)两个点。将这些(FPR,TPR)对连接起来,就得到了ROC曲线。当threshold取值越多,ROC曲线越平滑。其实,我们并不一定要得到每个测试样本是正样本的概率值,只要得到这个分类器对该测试样本的“评分值”即可(评分值并不一定在(0,1)区间)。评分越高,表示分类器越肯定地认为这个测试样本是正样本,而且同时使用各个评分值作为threshold。我认为将评分值转化为概率更易于理解一些。

    示例:
    >>>import numpy as np
    >>>from sklearn import metrics
    >>>y = np.array([1, 1, 2, 2])
    >>>scores = np.array([0.1, 0.4, 0.35, 0.8])
    >>>fpr, tpr, thresholds = metrics.roc_curve(y, scores, pos_label=2)
    >>>fpr
    array([0. ,  0.5,  0.5, 1. ])
    >>>tpr
    array([0.5,  0.5,  1. , 1. ])
    >>>thresholds
    array([0.8 ,  0.4 ,  0.35, 0.1 ])
    >>>from sklearn.metrics import auc 
    >>>metrics.auc(fpr, tpr) 
    0.75 
    Auc
    计算AUC值,其中x,y分别为数组形式,根据(xi,yi)在坐标上的点,生成的曲线,然后计算AUC值;

    形式:
    sklearn.metrics.auc(x, y, reorder=False)

     

    roc_auc_score
    直接根据真实值(必须是二值)、预测值(可以是0/1,也可以是proba值)计算出auc值,中间过程的roc计算省略。

    形式:
    sklearn.metrics.roc_auc_score(y_true, y_score, average='macro', sample_weight=None)

    average : string, [None, ‘micro’, ‘macro’(default), ‘samples’, ‘weighted’]

    示例:
    >>>import numpy as np
    >>>from sklearn.metrics import roc_auc_score
    >>>y_true = np.array([0, 0, 1, 1])
    >>>y_scores = np.array([0.1, 0.4, 0.35, 0.8])
    >>>roc_auc_score(y_true, y_scores)
    0.75
    confusion_matrix
    用一个例子来理解混淆矩阵:
    假设有一个用来对猫(cats)、狗(dogs)、兔子(rabbits)进行分类的系统,混淆矩阵就是为了进一步分析性能而对该算法测试结果做出的总结。假设总共有 27 只动物:8只猫, 6条狗, 13只兔子。结果的混淆矩阵如下图:

    在这个混淆矩阵中,实际有 8只猫,但是系统将其中3只预测成了狗;对于 6条狗,其中有 1条被预测成了兔子,2条被预测成了猫。从混淆矩阵中我们可以看出系统对于区分猫和狗存在一些问题,但是区分兔子和其他动物的效果还是不错的。所有正确的预测结果都在对角线上,所以从混淆矩阵中可以很方便直观的看出哪里有错误,因为他们呈现在对角线外面。

    形式:
    sklearn.metrics.confusion_matrix(y_true, y_pred, labels=None, sample_weight=None)

    返回一个混淆矩阵;

    labels:混淆矩阵的索引(如上面猫狗兔的示例),如果没有赋值,则按照y_true, y_pred中出现过的值排序。

    示例:
    >>>from sklearn.metrics import confusion_matrix
    >>>y_true = [2, 0, 2, 2, 0, 1]
    >>>y_pred = [0, 0, 2, 2, 0, 2]
    >>>confusion_matrix(y_true, y_pred)
    array([[2,0, 0],
           [0, 0, 1],
           [1, 0, 2]])
     
    >>>y_true = ["cat", "ant", "cat", "cat","ant", "bird"]
    >>>y_pred = ["ant", "ant", "cat", "cat","ant", "cat"]
    >>>confusion_matrix(y_true, y_pred, labels=["ant", "bird","cat"])
    array([[2,0, 0],
           [0, 0, 1],
           [1, 0, 2]])

    --------------------- 
    作者:Cherzhoucheer 
    来源:CSDN 
    原文:https://blog.csdn.net/CherDW/article/details/55813071 
    版权声明:本文为博主原创文章,转载请附上博文链接!

    展开全文
  • 目录 accuracy_score recall_score roc_curve roc_auc_score confusion_matrix 1. accuracy_score 分类准确率分数是指所有分类正确的百分比。分类准确率这一衡量分类器的标准比较容易...sklearn.metrics.accuracy...

    目录

    1. accuracy_score
    2. recall_score
    3. roc_curve
    4. roc_auc_score
    5. confusion_matrix

    1. accuracy_score

    分类准确率分数是指所有分类正确的百分比。分类准确率这一衡量分类器的标准比较容易理解,但是它不能告诉你响应值的潜在分布,并且它也不能告诉你分类器犯错的类型。

    • 形式:
    sklearn.metrics.accuracy_score(y_true, y_pred, normalize=True, sample_weight=None)
    
    normalize:默认值为True,返回正确分类的比例;如果为False,返回正确分类的样本数
    
    • normalize=True:
      返回:
      在这里插入图片描述

    • normalize=False:
      返回: TP+TN

    • 实例:

    >>>import numpy as np  
    >>>from sklearn.metrics import accuracy_score  
    >>>y_pred = [0, 2, 1, 3]  
    >>>y_true = [0, 1, 2, 3]  
    >>>accuracy_score(y_true, y_pred)  
    0.5  
    >>>accuracy_score(y_true, y_pred, normalize=False)  
    2
    

    2. recall_score

    召回率 =提取出的正确信息条数 /样本中的信息条数。通俗地说,就是所有准确的条目有多少被检索出来了。
    在这里插入图片描述

    • 形式:
    klearn.metrics.recall_score(y_true, y_pred, labels=None, pos_label=1,average='binary', sample_weight=None)
    
    • 参数average : string, [None, ‘micro’, ‘macro’(default), ‘samples’, ‘weighted’]

    将一个二分类matrics拓展到多分类或多标签问题时,我们可以将数据看成多个二分类问题的集合,每个类都是一个二分类。接着,我们可以通过跨多个分类计算每个二分类metrics得分的均值,这在一些情况下很有用。你可以使用average参数来指定。

    macro:计算二分类metrics的均值,为每个类给出相同权重的分值。当小类很重要时会出问题,因为该macro-averging方法是对性能的平均。另一方面,该方法假设所有分类都是一样重要的,因此macro-averaging方法会对小类的性能影响很大。

    weighted:对于不均衡数量的类来说,计算二分类metrics的平均,通过在每个类的score上进行加权实现。

    micro:给出了每个样本类以及它对整个metrics的贡献的pair(sample-weight),而非对整个类的metrics求和,它会每个类的metrics上的权重及因子进行求和,来计算整个份额。Micro-averaging方法在多标签(multilabel)问题中设置,包含多分类,此时,大类将被忽略。

    samples:应用在multilabel问题上。它不会计算每个类,相反,它会在评估数据中,通过计算真实类和预测类的差异的metrics,来求平均(sample_weight-weighted

    averageaverage=None将返回一个数组,它包含了每个类的得分。

    • 实例:
    >>>from sklearn.metrics import recall_score  
    >>>y_true = [0, 1, 2, 0, 1, 2]  
    >>>y_pred = [0, 2, 1, 0, 0, 1]  
    >>>recall_score(y_true, y_pred, average='macro')   
    0.33...  
    >>>recall_score(y_true, y_pred, average='micro')   
    0.33...  
    >>>recall_score(y_true, y_pred, average='weighted')   
    0.33...  
    >>>recall_score(y_true, y_pred, average=None)  
    array([1.,  0., 0.])  
    

    3. roc_curve

    ROC曲线指受试者工作特征曲线/接收器操作特性(receiver operating characteristic,ROC)曲线,是反映灵敏性和特效性连续变量的综合指标,是用构图法揭示敏感性和特异性的相互关系,它通过将连续变量设定出多个不同的临界值,从而计算出一系列敏感性和特异性。ROC曲线是根据一系列不同的二分类方式(分界值或决定阈),以真正例率(也就是灵敏度)(True Positive Rate,TPR)为纵坐标,假正例率(1-特效性)(False Positive Rate,FPR)为横坐标绘制的曲线。

    ROC观察模型正确地识别正例的比例与模型错误地把负例数据识别成正例的比例之间的权衡。TPR的增加以FPR的增加为代价。ROC曲线下的面积是模型准确率的度量,AUC(Area under roccurve)
    纵坐标:真正率True Positive Rate , TPR)或灵敏度(sensitivity

    TPR = TP /(TP + FN) (正样本预测结果数 / 正样本实际数)

    横坐标:假正率False Positive Rate , FPR

    FPR = FP /(FP + TN) (被预测为正的负样本结果数 /负样本实际数)

    • 形式:
    sklearn.metrics.roc_curve(y_true,y_score, pos_label=None, sample_weight=None, drop_intermediate=True)
    

    该函数返回这三个变量:fpr,tpr,和阈值thresholds

    这里理解thresholds

    分类器的一个重要功能“概率输出”,即表示分类器认为某个样本具有多大的概率属于正样本(或负样本)。

    Score”表示每个测试样本属于正样本的概率。

    接下来,我们从高到低,依次将“Score”值作为阈值threshold,当测试样本属于正样本的概率大于或等于这个threshold时,我们认为它为正样本,否则为负样本。每次选取一个不同的threshold,我们就可以得到一组FPRTPR,即ROC曲线上的一点。当我们将threshold设置为1和0时,分别可以得到ROC曲线上的(0,0)和(1,1)两个点。将这些(FPR,TPR)对连接起来,就得到了ROC曲线。当threshold取值越多,ROC曲线越平滑。其实,我们并不一定要得到每个测试样本是正样本的概率值,只要得到这个分类器对该测试样本的“评分值”即可(评分值并不一定在(0,1)区间)。评分越高,表示分类器越肯定地认为这个测试样本是正样本,而且同时使用各个评分值作为threshold。我认为将评分值转化为概率更易于理解一些。

    • 实例:
    >>>import numpy as np  
    >>>from sklearn import metrics  
    >>>y = np.array([1, 1, 2, 2])  
    >>>scores = np.array([0.1, 0.4, 0.35, 0.8])  
    >>>fpr, tpr, thresholds = metrics.roc_curve(y, scores, pos_label=2)  
    >>>fpr  
    array([0. ,  0.5,  0.5, 1. ])  
    >>>tpr  
    array([0.5,  0.5,  1. , 1. ])  
    >>>thresholds  
    array([0.8 ,  0.4 ,  0.35, 0.1 ])  
    >>>from sklearn.metrics import auc   
    >>>metrics.auc(fpr, tpr)   
    0.75 
    

    4. Auc

    计算AUC值,其中x,y分别为数组形式,根据(xi,yi)在坐标上的点,生成的曲线,然后计算AUC值。

    • 形式:
    sklearn.metrics.auc(x, y, reorder=False)
    

    5. roc_auc_score

    直接根据真实值(必须是二值)、预测值(可以是0/1,也可以是proba值)计算出auc值,中间过程的roc计算省略。

    • 形式:
    sklearn.metrics.roc_auc_score(y_true, y_score, average='macro', sample_weight=None)
    
    • 参数:

      average : string, [None, ‘micro’, ‘macro’(default), ‘samples’, ‘weighted’]

    • 实例:

    >>>import numpy as np  
    >>>from sklearn.metrics import roc_auc_score  
    >>>y_true = np.array([0, 0, 1, 1])  
    >>>y_scores = np.array([0.1, 0.4, 0.35, 0.8])  
    >>>roc_auc_score(y_true, y_scores)  
    0.75  
    

    6. confusion_matrix

    用一个例子来理解混淆矩阵:
    假设有一个用来对猫(cats)、狗(dogs)、兔子(rabbits)进行分类的系统,混淆矩阵就是为了进一步分析性能而对该算法测试结果做出的总结。假设总共有 27 只动物:8只猫, 6条狗, 13只兔子。结果的混淆矩阵如下图:
    在这里插入图片描述
    在这个混淆矩阵中,实际有 8只猫,但是系统将其中3只预测成了狗;对于 6条狗,其中有 1条被预测成了兔子,2条被预测成了猫。从混淆矩阵中我们可以看出系统对于区分猫和狗存在一些问题,但是区分兔子和其他动物的效果还是不错的。所有正确的预测结果都在对角线上,所以从混淆矩阵中可以很方便直观的看出哪里有错误,因为他们呈现在对角线外面。

    展开全文
  • 1、accuracy_score 分类准确率分数是指所有分类正确的百分比。分类准确率这一衡量...sklearn.metrics.accuracy_score(y_true, y_pred, normalize=True, sample_weight=None)normalize:默认值为True,返回正确分...
  • >from sklearn.metrics import accuracy_score >> >y_pred = [ 0 , 2 , 1 , 3 ] >> >y_true = [ 0 , 1 , 2 , 3 ] >> >accuracy_score(y_true, y_pred) 0 . 5 >> >accuracy_score(y_true, y_pred, normalize=...
  • accuracy_score  ...** clf.score(X_test, y_test)引用的就是accuracy_score方法(clf为分类器对象) accuracy_score函数计算了准确率,不管是正确预测的fraction(default),还是count(normalize=False...
  • sklearn.metrics.f1_score 使用方法

    千次阅读 2020-04-25 21:58:51
    sklearn.metrics.f1_score(y_true, y_pred, labels=None, pos_label=1, average='binary', sample_weight=None, zero_division='warn') 计算F1分数,也称为平衡F分数或F测度 F1分数可...
  • 二分类问题常用的评估指标是精度(precision),召回率(recall),F1值(F1-score) 评估指标的原理: 通常以关注的类为正类,其他类为负类,分类器在测试数据上预测正确或不正确,结合正负类,4种情况出现的可能为...
  • accuracy_score 分类准确率分数是指所有分类正确的百分比。分类准确率这一衡量分类器的标准比较容易理解,但是它不...sklearn.metrics.accuracy_score(y_true, y_pred, normalize=True, sample_weight=None) normaliz
  • sklearn.metrics.make_scorer详解

    千次阅读 2020-04-22 09:23:53
    这个函数封装了用于GridSearchCV和cross_val_score的评分函数,它接受一个评分函数,如accuracy_score、mean_squared_error、adjusted_rand_index或average_precision,并返回一个可调用的值,该值对学习器的输出...
  • sklearn.metrics.precision_score 中 unknow is not supported 问题解决
  • 混淆矩阵是一个矩阵,类别个数可以有多个,a[i][j]表示将类别i的样本误判为类别j的个数。 classification_report用来分析不同类别的准确率,召回率,F1值等,从而便于按照类别查看...import sklearn.metrics as m...
  • sklearn.metrics.f1_score

    千次阅读 2018-05-09 19:28:12
    sklearn.metrics.f1_score(y_true, y_pred, labels=None, pos_label=1, average=’binary’, sample_weight=None)[source] Parameters: y_true : 数据真实标签 Ground truth (correct) target values. y_pred :...
  •  然后在sklearn.metrics.classification_report中将labels=label),可是有的时候不设置就会出错,之所以会出错是因为:比如你总共的类别为200个类,但是,你的测试集中真实标签包含的类别只有199个,有一个类别...
  • 使用metrics.accuracy函数计算一下看看是否一致: metrics.accuracy_score(y_test, svc_clf.predict(X_test)) 0.9851851851851852。结果与预期一致。 参考:scikit-learn中文翻译 参考:...
  • sklearn.model_selection.cross_val_score详解

    千次阅读 2020-04-18 16:29:22
    scoring 评估学习器性能的标准,通常需要使用sklearn.metrics.make_scorer函数,“Accuracy”,“mean_absolute_error”,"mean_squaerd_error"等 cv 要将数据集分割的折数,默认的情况下是5 n_jobs 使用多少CPU...
  •   了解一个函数首先看这个函数的功能,也就是这个函数的参数有哪些,这个函数的返回值是哪些。...accuracy_score()函数 1、函数功能 分类正确率分数,函数返回一个分数,这个分数或是正确的比.
  • accuracy_score分类准确率

    千次阅读 2021-03-16 16:34:12
    accuracy_score分类准确率分数...sklearn.metrics.accuracy_score(y_true, y_pred, normalize=True, sample_weight=None) normalize:默认值为True,返回正确分类的比例;如果为False,返回正确分类的样本数 import.
  • r2_scoreaccuracy_score的区别

    千次阅读 2020-06-26 11:41:38
    r2_scoreaccuracy_score都是sklearn.metrics中的计算准确率的函数,r2_score适用于回归问题,accuracy_score适用于分类问题,r2_score的输入可以是浮点数,而accuracy_score必须是整形。下面举个例子: y_test>...
  • accuracy_score分类准确率分数是指所有分类正确的百分比。...形式:sklearn.metrics.accuracy_score(y_true, y_pred, normalize=True, sample_weight=None)normalize:默认值为True,返回正确分...
  • from sklearn.metrics import accuracy_score,f1_score,roc_auc_score,recall_score,precision_score,confusion_matrix from sklearn.metrics import accuracy_score,f1_score,roc_auc_score,recall_score,...
  • 使用鸢尾花作为例子: 用knn模型来输出测试精度,下面是一...from sklearn.metrics import accuracy_score if __name__ == '__main__': data_all = np.loadtxt('.\\iris.txt') data = data_all[:,:-1] label = dat
  • 本篇博客介绍的是分类准确率:算出分类中正确分类的百分比。包括①准确率的思路②sklearn中的准确率③KNN中的准确率 1 分类准确率 思路: 找出测试值与预测值不同总数除以...from sklearn.metrics import accuracy...
  • 该函返回一个人类指标的结果,包括样本的precision、recall、accuracy、f1-score等 调整方法及参数: from sklearn.metrics import classification_report sklearn.metrics.classification_report(y_true, y_pre
  • pytorch中训练完网络后,需要对学习的结果进行测试。官网上例程用的方法统统都是正确率,使用的是torch.eq()这个函数。 但是为了更精细的评价结果,我们还需要计算其他各个指标。在把官网API翻了一遍之后发现并没有...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,777
精华内容 7,510
关键字:

metrics.accuracy_score