精华内容
下载资源
问答
  • python ROC 曲线

    千次阅读 2018-10-16 10:31:22
    python ROC 曲线的实现代码 import numpy as np import matplotlib.pyplot as plt from sklearn.metrics import auc ###计算roc和auc import pandas as pd base = "D:\\WFLW\\wflw_blur_128\\ROC\\"...

    python  画 ROC 曲线的实现代码

    import numpy as np
    import matplotlib.pyplot as plt
    
    from sklearn.metrics import auc  ###计算roc和auc
    import pandas as pd
    
    base = "D:\\WFLW\\wflw_blur_128\\ROC\\"
    
    df =pd.read_csv( base + "sobel_roc.txt", encoding='utf8', delimiter=' ', header=0)
    df_lap =pd.read_csv( base + "lap_roc.txt", encoding='utf8', delimiter=' ', header=0)
    df_dft =pd.read_csv( base + "dft_roc.txt", encoding='utf8', delimiter=' ', header=0)
    df_cnn =pd.read_csv( base + "cnn_roc.txt", encoding='utf8', delimiter=' ', header=0)
    
    tpr = df['tpr']
    fpr = df['fpr']
    
    tpr_lap = df_lap['tpr']
    fpr_lap = df_lap['fpr']
    
    tpr_dft = df_dft['tpr']
    fpr_dft = df_dft['fpr']
    
    tpr_cnn = df_cnn['tpr']
    fpr_cnn = df_cnn['fpr']
    
    roc_auc = auc(fpr, tpr) ###计算auc的值
    
    roc_auc_lap = auc(fpr_lap, tpr_lap) ###计算auc的值
    
    roc_auc_dft = auc(fpr_dft, tpr_dft) ###计算auc的值
    
    roc_auc_cnn = auc(fpr_cnn, tpr_cnn)
    
    print(roc_auc)
    
    plt.figure()
    lw = 2
    plt.figure(figsize=(10,10))
    plt.plot(fpr, tpr, color='darkorange', lw=lw, label='Sobel ROC curve (area = %0.2f)' % roc_auc) ###假正率为横坐标,真正率为纵坐标做曲线
    
    plt.plot(fpr_lap, tpr_lap, color='navy', lw=lw, label='Lap ROC curve (area = %0.2f)' % roc_auc_lap)
    
    plt.plot(fpr_dft, tpr_dft, color='red', lw=lw, label='Dft ROC curve (area = %0.2f)' % roc_auc_dft)
    
    plt.plot(fpr_cnn, tpr_cnn, color='green', lw=lw, label='CNN ROC curve (area = %0.2f)' % roc_auc_cnn)
    #plt.plot(tpr, fpr, 'k--', label='Mean ROC (area = %0.2f)' % 1, lw=2)
    
    #plt.plot([0, 1], [0, 1], color='navy', lw=lw, linestyle='--')
    
    plt.xlim([0.0, 1.0])
    plt.ylim([0.0, 1.05])
    plt.xlabel('False Positive Rate')
    plt.ylabel('True Positive Rate')
    plt.title('Receiver operating characteristic example')
    plt.legend(loc="lower right")
    plt.savefig(base + "roc_img\\sobel_roc.jpg")
    plt.show()
    

    画图结果

    text 的内容格式:

    展开全文
  • 不是预测得到的类别) 根据阈值划分得到横(X: False Positive Rate )以及纵(Y: True Positive Rate )点 将坐标点连成曲线之后计算其曲线下面积,就是 AUC 的值 直接上python代码#! -*- coding=utf-8 -*-...

    AUC介绍

    AUC (Area Under Curve)是机器学习二分类模型中非常常用的评估指标,相比于 F1-Score 对项目的不平衡有更大的容忍性,目前常见的机器学习库中(比如 scikit-learn)一般也都是集成该指标的计算,但是有时候模型是单独的或者自己编写的,此时想要评估训练模型的好坏就得自己搞一个 AUC 计算模块,本文在查询资料时发现 libsvm-tools 1 有一个非常通俗易懂的 auc 计算,因此抠出来用作日后之用。

    AUC计算

    AUC 的计算分为下面三个步骤:计算数据的准备,如果模型训练时只有训练集的话一般使用交叉验证的方式来计算,如果有评估集( evaluate )一般就可以直接计算了,数据的格式一般就是需要预测得分以及其目标类别(注意是目标类别,不是预测得到的类别)

    根据阈值划分得到横(X: False Positive Rate )以及纵(Y: True Positive Rate )点

    将坐标点连成曲线之后计算其曲线下面积,就是 AUC 的值

    直接上python代码#! -*- coding=utf-8 -*-import pylab as pl

    from math import log,exp,sqrtevaluate_result="you file path"db = [] #[score,nonclk,clk]pos, neg = 0, 0 with open(evaluate_result,'r') as fs:for line in fs:

    nonclk,clk,score = line.strip().split('\t')

    nonclk = int(nonclk)

    clk = int(clk)

    score = float(score)

    db.append([score,nonclk,clk])pos += clk

    neg += nonclk

    db = sorted(db, key=lambda x:x[0], reverse=True)#计算ROC坐标点xy_arr = []

    tp, fp = 0., 0.

    for i in range(len(db)):

    tp += db[i][2]

    fp += db[i][1]

    xy_arr.append([fp/neg,tp/pos])#计算曲线下面积auc = 0.

    prev_x = 0for x,y in xy_arr:if x != prev_x:

    auc += (x - prev_x) * yprev_x = xprint "the auc is %s."%aucx = [_v[0] for _v in xy_arr]y = [_v[1] for _v in xy_arr]

    pl.title("ROC curve of %s (AUC = %.4f)" % ('svm',auc))

    pl.xlabel("False Positive Rate")

    pl.ylabel("True Positive Rate")

    pl.plot(x, y)# use pylab to plot x and ypl.show()# show the plot on the screen

    输入的数据集可以参考svm预测结果

    其格式为:nonclk \t clk \t score

    其中:nonclick :未点击的数据,可以看做负样本的数量

    clk :点击的数量,可以看做正样本的数量

    score :预测的分数,以该分数为group进行正负样本的预统计可以减少 AUC 的计算量

    运行的结果为:

    1520545721-5170-fk72U2fbCKoduGocXy91DnUFicBQ.png如果本机没安装 pylab 可以直接注释依赖以及画图部分

    注意

    上面贴的代码:只能计算二分类的结果(至于二分类的标签随便处理)

    上面代码中每个 score 都做了一次阈值,其实这样效率是相当低的,可以对样本进行采样或者在计算横轴坐标时进行等分计算

    展开全文
  • python画ROC曲线

    2020-08-24 06:08:41
    import sklearn.metrics as metrics # 绘制ROC曲线 # 测试集,pre表示预测的概率,pre2表示阈值为0.5的分类结果(0或1),true表示真实结果 test = pd.DataFrame(result.predict(x_test),columns=['pre']) test['...
    from sklearn.model_selection import train_test_split
    import sklearn.metrics as metrics # 绘制ROC曲线
    
    # 测试集,pre表示预测的概率,pre2表示阈值为0.5的分类结果(0或1),true表示真实结果
    test = pd.DataFrame(result.predict(x_test),columns=['pre'])
    test['true'] = y_test
    test['pre2'] = test['pre'].apply(lambda x: 1 if x>=0.5 else 0)
    
    train = pd.DataFrame(result.predict(x_train),columns=['pre'])
    train['true'] = y_train
    train['pre2'] = train['pre'].apply(lambda x: 1 if x>=0.5 else 0)
    
    # 画ROC曲线
    fpr_test,tpr_test,th_test = metrics.roc_curve(test.true,test.pre) # 测试集
    fpr_train,tpr_train,th_train = metrics.roc_curve(train.true,train.pre) # 训练集
    plt.figure(dpi=150,figsize=(3,3))
    plt.plot(fpr_test,tpr_test,'b--',label=f'测试集AUC={round(metrics.auc(fpr_test,tpr_test),4)}')
    plt.plot(fpr_train,tpr_train,'r--',label=f'训练集AUC={round(metrics.auc(fpr_train,tpr_train),4)}')
    plt.legend();plt.title('ROC曲线')
    
    
    
    展开全文
  • 给大家介绍了如何利用Python画ROC曲线,以及AUC值的计算,有需要的朋友们可以参考借鉴,下面来一起看看吧。
  • ROC结果源数据:鸢尾花数据集(仅采用其中的两种类别的花进行训练和检测)Summaryfeatures:['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']实例:[5.1, 3.5, 1.4, 0.2]target...

    ROC

    结果

    2020062811123419.png

    源数据:鸢尾花数据集(仅采用其中的两种类别的花进行训练和检测)

    Summary

    features:['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']

    实例:[5.1, 3.5, 1.4, 0.2]

    target:'setosa' 'versicolor' (0 , 1)

    采用回归方法进行拟合得到参数和bias

    model.fit(data_train, data_train_label)

    对测试数据进行预测得到概率值

    res = model.predict(data[:100])

    与训练集labels匹配后进行排序(从大到小)

    pred labels

    68 0.758208 1

    87 0.753780 1

    76 0.745833 1

    50 0.743156 1

    65 0.741676 1

    75 0.739117 1

    62 0.738255 1

    54 0.737036 1

    52 0.733625 1

    77 0.728139 1

    86 0.727547 1

    74 0.726261 1

    58 0.725150 1

    71 0.724719 1

    36 0.724142 0

    14 0.723990 0

    31 0.721648 0

    41 0.720308 0

    72 0.717723 1

    79 0.712833 1

    97 0.705148 1

    51 0.702838 1

    35 0.702203 0

    98 0.701731 1

    92 0.701106 1

    82 0.700661 1

    53 0.700465 1

    18 0.699350 0

    16 0.696915 0

    64 0.693333 1

    .. ... ...

    33 0.658937 0

    96 0.656761 1

    30 0.656279 0

    57 0.655673 1

    4 0.652616 0

    85 0.648620 1

    59 0.648586 1

    19 0.646965 0

    70 0.646262 1

    88 0.644482 1

    8 0.643191 0

    38 0.642704 0

    3 0.640933 0

    55 0.640630 1

    47 0.640444 0

    95 0.639552 1

    13 0.639050 0

    22 0.638485 0

    29 0.635590 0

    90 0.634376 1

    37 0.632224 0

    6 0.631119 0

    46 0.630037 0

    11 0.629718 0

    66 0.627807 1

    42 0.624795 0

    44 0.621703 0

    32 0.614932 0

    24 0.603874 0

    84 0.603249 1

    计算训练集中正确的个数与非正确的个数

    运用一下的算式进行TPR和FPR的计算

    index = 0

    for i in sorted_mat.values:

    if i[1] == 0:

    TPR.append(TPR[index])

    FPR.append(FPR[index] + 1.0/F_num)

    else:

    TPR.append(TPR[index] + 1.0/T_num)

    FPR.append(FPR[index])

    index += 1

    最后进行TPR和FPR的描绘

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持python博客。

    展开全文
  • python 画roc曲线

    2021-10-17 23:51:17
    fin.close() return labels #画ROC曲线图 def draw_roc_curve(fpr1,tpr1,fpr2,tpr2, title='cosine',save_name='roc_lfw'): plt.figure() plt.plot(fpr1, tpr1,'r') plt.plot(fpr2, tpr2,'g') plt.plot([0, 1], [0,...
  • 这篇文章将先简单的介绍ROC和AUC,而后用实例演示如何python作出ROC曲线图以及计算AUC。AUC介绍AUC(Area Under Curve)是机器学习二分类模型中非常常用的评估指标,相比于F1-Score对项目的不平衡有更大...
  • python roc曲线

    2020-10-12 12:07:16
    from sklearn.metrics import roc_curve, auc import numpy as np from sklearn import metrics import matplotlib.pyplot as plt y = np.array([1,1,0,1,1,1,0,0,1,0,1,0,1,0,0,0,1,0,1,0]) scores = np.array(...
  • 这篇文章将先简单的介绍ROC和AUC,而后用实例演示如何python作出ROC曲线图以及计算AUC。AUC介绍AUC(Area Under Curve)是机器学习二分类模型中非常常用的评估指标,相比于F1-Score对项目的不平衡有更大...
  • Python画ROC曲线

    万次阅读 2018-07-06 17:27:00
     sklearn上有一个画ROC曲线的例子,利用的是经典的鸢尾花(iris)数据。但鸢尾花数据分类的结果有三种,例子就直接来做图(一般的分类任务明明只有两种结果啊!!!),对于初学者来说(说的是我自己)看起来真的...
  • 绝大部分教roc的教程,都是从模型建立开始顺便出roc来评价结果。 现在如果已知某个分类方法的预测结果和实际标签,例如...然后根据实际标签的0或1用python画roc曲线。 初学者,求各位老师帮忙指导,如何
  • def roc(name): # 生成ROC曲线 plt.figure(dpi=150,figsize=(3,3)) plt.plot(fpr_test,tpr_test,'b:',label=f'测试集AUC={round(metrics.auc(fpr_test,tpr_test),4)}') plt.plot(fpr_train,tpr_train,'r-.',label...
  • python画ROC曲线如何的好看

    千次阅读 2020-05-28 22:18:10
    from sklearn.metrics import confusion_matrix, accuracy_score,f1_score,roc_auc_score,recall_score,precision_score from sklearn import metrics from matplotlib import pyplot styles=['fivethirtyeight', ...
  • 这篇文章将先简单的介绍ROC和AUC,而后用实例演示如何python作出ROC曲线图以及计算AUC。 AUC介绍 AUC(Area Under Curve)是机器学习二分类模型中非常常用的评估指标,相比于F1-Score对项目的不平衡有更大的容忍性,...
  • 使用Python画ROC曲线以及AUC值

    千次阅读 2016-10-26 14:18:00
    from:http://kubicode.me/2016/09/19/Machine%20Learning/AUC-Calculation-by-Python/   AUC介绍 AUC(Area Under Curve)是机器学习二分类模型中非常常用的评估指标,相比于F1-Score对项目的不平衡有更大的容忍性,...
  • 以下是使用scikit learn预测、做出决策边界并roc曲线的一个示例,以鸢尾花数据集为例。 1. 导入鸢尾花的数据import numpy as npimport matplotlib.pyplot as pltimportwarningsfrom sklearn impo...
  • I want to draw ROC curves for each of my 46 classes. I have 300 test samples for which I've run my classifier to make a prediction.y_test is the true classes, and y_pred is what my classifier predicte...
  • Python 绘制ROC曲线的例子ROC的全称是“受试者工作特征”(Receiver Operating Characteristic)曲线。根据学习器的预测结果对样例进行排序,按此顺序逐个把样本作为正例进行预测,每次计算出两个重要量的值(TPR、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,709
精华内容 2,683
关键字:

python画roc曲线

python 订阅