精华内容
下载资源
问答
  • [机器学习笔记] Python 绘制ROC曲线的例子
    2020-11-29 13:23:30

    Python 绘制ROC曲线的例子

    ROC的全称是“受试者工作特征”(Receiver Operating Characteristic)曲线。

    根据学习器的预测结果对样例进行排序,按此顺序逐个把样本作为正例进行预测,每次计算出两个重要量的值(TPR、FPR),分别以它们为横、纵坐标作图。与PR曲线使用查准率、查全率为纵、横不同,ROC 曲线的纵轴是“真正例率”(True Positive Rate,TTR),横轴是“假正例率”(False Positive Rate,FPR)。

    如图所示:

    watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NlYWdhbDg5MA==,size_16,color_FFFFFF,t_70

    下面使用Python来作出该图:

    # -*- coding: utf-8 -*-

    """

    Created on Tue Mar 24 19:04:21 2020

    @author: Bean029

    """

    import numpy as np

    import matplotlib.pyplot as plt

    from itertools import cycle

    from sklearn import svm, datasets

    from sklearn.metrics import roc_curve, auc

    from sklearn.model_selection import train_test_split

    from sklearn.preprocessing import label_binarize

    from sklearn.multiclass import OneVsRestClassifier

    from scipy import interp

    from sklearn.metrics import roc_auc_score

    # Import some data to play with

    iris = datasets.load_iris()

    X = iris.data

    y = iris.target

    # Binarize the output

    y = label_binarize(y, classes=[0, 1, 2])

    n_classes = y.shape[1]

    # Add noisy features to make the problem harder

    random_state = np.random.RandomState(0)

    n_samples, n_features = X.shape

    X = np.c_[X, random_state.randn(n_samples, 200 * n_features)]

    # shuffle and split training and test sets

    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.5,

    random_state=0)

    # Learn to predict each class against the other

    classifier = OneVsRestClassifier(svm.SVC(kernel='linear', probability=True,

    random_state=random_state))

    y_score = classifier.fit(X_train, y_train).decision_function(X_test)

    # Compute ROC curve and ROC area for each class

    fpr = dict()

    tpr = dict()

    roc_auc = dict()

    for i in range(n_classes):

    fpr[i], tpr[i], _ = roc_curve(y_test[:, i], y_score[:, i])

    roc_auc[i] = auc(fpr[i], tpr[i])

    # Compute micro-average ROC curve and ROC area

    fpr["micro"], tpr["micro"], _ = roc_curve(y_test.ravel(), y_score.ravel())

    roc_auc["micro"] = auc(fpr["micro"], tpr["micro"])

    plt.figure()

    lw = 2

    plt.plot(fpr[2], tpr[2], color='darkorange',

    lw=lw, label='ROC curve (area = %0.2f)' % roc_auc[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.show()

    ROC曲线与PR曲线的取舍

    相对来讲ROC曲线会稳定很多,在正负样本量都足够的情况下,ROC曲线足够反映模型的判断能力。因此,对于同一模型,PRC和ROC曲线都可以说明一定的问题,而且二者有一定的相关性,如果想评测模型效果,也可以把两条曲线都画出来综合评价。对于有监督的二分类问题,在正负样本都足够的情况下,可以直接用ROC曲线、AUC、KS评价模型效果。在确定阈值过程中,可以根据Precision、Recall或者F1来评价模型的分类效果。对于多分类问题,可以对每一类分别计算Precision、Recall和F1,综合作为模型评价指标。

    ROC曲线下的面积,介于0.1和1之间,作为数值可以直观的评价分类器的好坏,值越大越好。

    ROC曲线的特征是Y轴上的真阳性率和X轴上的假阳性率。

    这意味着图的左上角是“理想”点——假阳性率为0,真阳性率为1。这不是很现实,但它确实意味着曲线下较大的面积(AUC)通常更好。

    ROC曲线的“陡峭度”也很重要,因为最大化真阳性率同时最小化假阳性率是理想的。

    ROC曲线通常用于二值分类以研究分类器的输出。为了将ROC曲线和ROC区域扩展到多标签分类中,需要对输出进行二值化。每个标签可以绘制一条ROC曲线,但也可以通过将标签指示符矩阵的每个元素视为二进制预测(微观平均)来绘制ROC曲线。

    更多相关内容
  • pythonROC 曲线

    千次阅读 2018-10-16 10:31:22
    pythonROC 曲线的实现代码 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 的内容格式:

    展开全文
  • 二分类问题评估指标有ROC曲线--------->对sklearn.metrics.roc_curve中的评估指标计算方式有疑问 样例代码: >>> import numpy as np >>> from sklearn import metrics >>> y = np....

    问题需求:

    二分类问题评估指标有ROC曲线--------->对sklearn.metrics.roc_curve中的评估指标计算方式有疑问

    样例代码:

    >>> 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])
    

    参数解释:

    y:真实的样本标签,默认为{0,1}或者{-1,1}。如果要设置为其它值,则 pos_label 参数要设置为特定值。例如要令样本标签为{1,2},其中2表示正样本,则pos_label=2

    y_score:对每个样本的预测结果

    pos_label:正样本的标签

    FPR:False positive rate

    TPR:True positive rate

    thresholds:阈值的选取规则是在scores值中从大到小的以此选取

    计算原理:

    在这里插入图片描述

    ROC曲线图生成:

    # -*- coding: utf-8 -*-
    
    import numpy as np
    import matplotlib.pyplot as plt
    from sklearn import svm, datasets
    from sklearn.metrics import roc_curve, auc  ###计算roc和auc
    from sklearn.model_selection import train_test_split
    
    # Import some data to play with
    iris = datasets.load_iris()
    X = iris.data
    y = iris.target
    
    ##变为2分类
    X, y = X[y != 2], y[y != 2]
    
    # Add noisy features to make the problem harder
    random_state = np.random.RandomState(0)
    n_samples, n_features = X.shape
    X = np.c_[X, random_state.randn(n_samples, 200 * n_features)]
    
    # shuffle and split training and test sets
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.3, random_state=0)
    
    # Learn to predict each class against the other
    svm = svm.SVC(kernel='linear', probability=True,random_state=random_state)
    
    ###通过decision_function()计算得到的y_score的值,用在roc_curve()函数中
    y_score = svm.fit(X_train, y_train).decision_function(X_test)
    
    # Compute ROC curve and ROC area for each class
    fpr,tpr,threshold = roc_curve(y_test, y_score) ###计算真正率和假正率
    roc_auc = auc(fpr,tpr) ###计算auc的值
    
    plt.figure()
    lw = 2
    plt.figure(figsize=(10,10))
    plt.plot(fpr, tpr, color='darkorange',
             lw=lw, label='ROC curve (area = %0.2f)' % roc_auc) ###假正率为横坐标,真正率为纵坐标做曲线
    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.show()
    

    参考链接:

    https://blog.csdn.net/w1301100424/article/details/84546194
    https://blog.csdn.net/u014264373/article/details/80487766
    https://blog.csdn.net/mago2015/article/details/82833793

    展开全文
  • pythonroc曲线

    千次阅读 2021-10-17 23:51:17
    ⑵也可以通过将标签指示符矩阵的每个元素视为二元预测(微平均)来绘制ROC曲线。⑶另一种用于多类别分类的评估方法是宏观平均,它对每个标签的分类给予相同的权重。 from __future__ import absolute_import from __...

    这个直接画:

    
    from sklearn import metrics
    import numpy as np
    import matplotlib.pyplot as plt
    
    plt.figure(0).clf()  # plt.close()将完全关闭图形窗口,其中plt.clf()将清除图形-您仍然可以在其上绘制另一个绘图。
    
    label = np.random.randint(2, size=1000)
    
    pred=[ random.random()/1.5 if data==0 else random.random() for data in label]
    fpr, tpr, thresh = metrics.roc_curve(label, np.array(pred))
    
    auc = metrics.roc_auc_score(label, pred)
    plt.plot(fpr, tpr, label="data 1, auc=" + str(auc))
    
    label = np.random.randint(2, size=1000)
    
    pred=[ random.uniform(0, 0.7) if data==0 else random.uniform(0.4, 1) for data in label]
    fpr, tpr, thresh = metrics.roc_curve(label, pred)
    auc = metrics.roc_auc_score(label, pred)
    plt.plot(fpr, tpr, label="data 2, auc=" + str(auc))
    
    plt.legend(loc=0)  # 说明所在位置
    plt.show()

    这个读文件:

    label.txt:

    1
    0
    1
    0
    1
    0
    

    feature.txt

    0.1
    0.2
    0.2
    0.2
    0.2
    0.3

    代码:

    # -*- coding: utf-8 -*-
    
    import math
    
    import sklearn
    
    import numpy as np
    
    import matplotlib.pyplot as plt
    
    import skimage
    import sklearn.metrics.pairwise as pw
    
    #读取标签文件
    
    def read_labels(labelfile):
    
        fin=open(labelfile)
    
        lines=fin.readlines()
    
        labels=np.empty((len(lines),))
    
        k=0;
    
        for line in lines:
    
            labels[k]=int(line)
    
            k=k+1;
    
        fin.close()
    
        return labels
    
    def read_Feautures(labelfile):
    
        fin=open(labelfile)
    
        lines=fin.readlines()
    
        labels=np.empty((len(lines),))
    
        k=0;
    
        for line in lines:
    
            labels[k]=float(line)
    
            k=k+1;
    
        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, 1], 'k--')
    
        plt.xlim([0.0, 1.0])
    
        plt.ylim([0.0, 1.0])
    
        plt.xlabel('FPR')
    
        plt.ylabel('TPR')
    
        plt.title('ROC(Receiver operating characteristic)using: '+title)
    
        plt.legend(loc="lower right")
    
        plt.show()
    
        plt.savefig(save_name+'.png')
    
    if __name__=='__main__':
    
        labels = read_labels(u"label.txt")
    
        predicts = read_Feautures(u"feature.txt")
    
        fpr1, tpr1, threshold1s=sklearn.metrics.roc_curve(labels,predicts)
    
        print(threshold1s)
    
        #draw_roc_curve(fpr1,tpr1,title='JSS',save_name='lfw_evaluate')
    
        labels = read_labels(u"label.txt")
    
        predicts = read_Feautures(u"feature.txt")
    
        fpr2, tpr2, threshold2s=sklearn.metrics.roc_curve(labels,predicts)
    
        print(threshold2s)
    
        draw_roc_curve(fpr1,tpr1,fpr2,tpr2,title='AS',save_name='lfw_evaluate')

    以下内容转自:

    https://blog.csdn.net/qq_38410428/article/details/88106395

    基本概念
    precision:预测为对的当中,原本为对的比例(越大越好,1为理想状态)
    recall:原本为对的当中,预测为对的比例(越大越好,1为理想状态)
    F-measure:F度量是对准确率和召回率做一个权衡(越大越好,1为理想状态,此时precision为1,recall为1)
    accuracy:预测对的(包括原本是对预测为对,原本是错的预测为错两种情形)占整个的比例(越大越好,1为理想状态)
    fp rate:原本是错的预测为对的比例(越小越好,0为理想状态)
    tp rate:原本是对的预测为对的比例(越大越好,1为理想状态)
    ROC曲线通常在Y轴上具有真阳性率,在X轴上具有假阳性率。这意味着图的左上角是“理想”点 - 误报率为零,真正的正率为1。这不太现实,但它确实意味着曲线下面积(AUC)通常更好。二分类问题:ROC曲线

    from __future__ import absolute_import
    from __future__ import division
    from __future__ import print_function
    import time
    start_time = time.time()
    import matplotlib.pyplot as plt
    from sklearn.metrics import roc_curve
    from sklearn.metrics import auc
    import numpy as np
    from sklearn.model_selection import train_test_split
    from sklearn.metrics import recall_score,accuracy_score
    from sklearn.metrics import precision_score,f1_score
    from keras.optimizers import Adam,SGD,sgd
    from keras.models import load_model
    
    print('读取数据')
    X_train = np.load('x_train-rotate_2.npy')
    Y_train = np.load('y_train-rotate_2.npy')
    print(X_train.shape)
    print(Y_train.shape)
    
    
    print('获取测试数据和验证数据')
    X_train, X_valid, Y_train, Y_valid = train_test_split(X_train, Y_train, test_size=0.1, random_state=666)
    
    Y_train = np.asarray(Y_train,np.uint8)
    Y_valid = np.asarray(Y_valid,np.uint8)
    X_valid = np.array(X_valid, np.float32) / 255.
    
    
    print('获取模型')
    model = load_model('./model/InceptionV3_model.h5')
    opt = Adam(lr=1e-4)
    model.compile(optimizer=opt, loss='binary_crossentropy')
    
    
    print("Predicting")
    Y_pred = model.predict(X_valid)
    Y_pred = [np.argmax(y) for y in Y_pred]  # 取出y中元素最大值所对应的索引
    Y_valid = [np.argmax(y) for y in Y_valid]
    
    # micro:多分类  
    # weighted:不均衡数量的类来说,计算二分类metrics的平均
    # macro:计算二分类metrics的均值,为每个类给出相同权重的分值。
    precision = precision_score(Y_valid, Y_pred, average='weighted')
    recall = recall_score(Y_valid, Y_pred, average='weighted')
    f1_score = f1_score(Y_valid, Y_pred, average='weighted')
    accuracy_score = accuracy_score(Y_valid, Y_pred)
    print("Precision_score:",precision)
    print("Recall_score:",recall)
    print("F1_score:",f1_score)
    print("Accuracy_score:",accuracy_score)
    
    # 二分类 ROC曲线
    # roc_curve:真正率(True Positive Rate , TPR)或灵敏度(sensitivity)
    # 横坐标:假正率(False Positive Rate , FPR)
    fpr, tpr, thresholds_keras = roc_curve(Y_valid, Y_pred)
    auc = auc(fpr, tpr)
    print("AUC : ", auc)
    plt.figure()
    plt.plot([0, 1], [0, 1], 'k--')
    plt.plot(fpr, tpr, label='Keras (area = {:.3f})'.format(auc))
    plt.xlabel('False positive rate')
    plt.ylabel('True positive rate')
    plt.title('ROC curve')
    plt.legend(loc='best')
    plt.savefig("../images/ROC/ROC_2分类.png")
    plt.show()
    
    
    print("--- %s seconds ---" % (time.time() - start_time))



    ROC图如下所示:


    多分类问题:ROC曲线
    ROC曲线通常用于二分类以研究分类器的输出。为了将ROC曲线和ROC区域扩展到多类或多标签分类,有必要对输出进行二值化。⑴可以每个标签绘制一条ROC曲线。⑵也可以通过将标签指示符矩阵的每个元素视为二元预测(微平均)来绘制ROC曲线。⑶另一种用于多类别分类的评估方法是宏观平均,它对每个标签的分类给予相同的权重。

    from __future__ import absolute_import
    from __future__ import division
    from __future__ import print_function
    import time
    start_time = time.time()
    import matplotlib.pyplot as plt
    from sklearn.metrics import roc_curve
    from sklearn.metrics import auc
    import numpy as np
    from sklearn.model_selection import train_test_split
    from sklearn.metrics import recall_score,accuracy_score
    from sklearn.metrics import precision_score,f1_score
    from keras.optimizers import Adam,SGD,sgd
    from keras.models import load_model
    from itertools import cycle
    from scipy import interp
    from sklearn.preprocessing import label_binarize
    
    nb_classes = 5
    print('读取数据')
    X_train = np.load('x_train-resized_5.npy')
    Y_train = np.load('y_train-resized_5.npy')
    print(X_train.shape)
    print(Y_train.shape)
    
    
    print('获取测试数据和验证数据')
    X_train, X_valid, Y_train, Y_valid = train_test_split(X_train, Y_train, test_size=0.1, random_state=666)
    
    Y_train = np.asarray(Y_train,np.uint8)
    Y_valid = np.asarray(Y_valid,np.uint8)
    X_valid = np.asarray(X_valid, np.float32) / 255.
    
    
    print('获取模型')
    model = load_model('./model/SE-InceptionV3_model.h5')
    opt = Adam(lr=1e-4)
    model.compile(optimizer=opt, loss='categorical_crossentropy')
    
    
    print("Predicting")
    Y_pred = model.predict(X_valid)
    Y_pred = [np.argmax(y) for y in Y_pred]  # 取出y中元素最大值所对应的索引
    Y_valid = [np.argmax(y) for y in Y_valid]
    
    # Binarize the output
    Y_valid = label_binarize(Y_valid, classes=[i for i in range(nb_classes)])
    Y_pred = label_binarize(Y_pred, classes=[i for i in range(nb_classes)])
    
    
    # micro:多分类  
    # weighted:不均衡数量的类来说,计算二分类metrics的平均
    # macro:计算二分类metrics的均值,为每个类给出相同权重的分值。
    precision = precision_score(Y_valid, Y_pred, average='micro')
    recall = recall_score(Y_valid, Y_pred, average='micro')
    f1_score = f1_score(Y_valid, Y_pred, average='micro')
    accuracy_score = accuracy_score(Y_valid, Y_pred)
    print("Precision_score:",precision)
    print("Recall_score:",recall)
    print("F1_score:",f1_score)
    print("Accuracy_score:",accuracy_score)
    
    
    # roc_curve:真正率(True Positive Rate , TPR)或灵敏度(sensitivity)
    # 横坐标:假正率(False Positive Rate , FPR)
    
    
    # Compute ROC curve and ROC area for each class
    fpr = dict()
    tpr = dict()
    roc_auc = dict()
    for i in range(nb_classes):
        fpr[i], tpr[i], _ = roc_curve(Y_valid[:, i], Y_pred[:, i])
        roc_auc[i] = auc(fpr[i], tpr[i])
    
    # Compute micro-average ROC curve and ROC area
    fpr["micro"], tpr["micro"], _ = roc_curve(Y_valid.ravel(), Y_pred.ravel())
    roc_auc["micro"] = auc(fpr["micro"], tpr["micro"])
    
    
    # Compute macro-average ROC curve and ROC area
    
    # First aggregate all false positive rates
    all_fpr = np.unique(np.concatenate([fpr[i] for i in range(nb_classes)]))
    
    # Then interpolate all ROC curves at this points
    mean_tpr = np.zeros_like(all_fpr)
    for i in range(nb_classes):
        mean_tpr += interp(all_fpr, fpr[i], tpr[i])
    
    # Finally average it and compute AUC
    mean_tpr /= nb_classes
    
    fpr["macro"] = all_fpr
    tpr["macro"] = mean_tpr
    roc_auc["macro"] = auc(fpr["macro"], tpr["macro"])
    
    # Plot all ROC curves
    lw = 2
    plt.figure()
    plt.plot(fpr["micro"], tpr["micro"],
             label='micro-average ROC curve (area = {0:0.2f})'
                   ''.format(roc_auc["micro"]),
             color='deeppink', linestyle=':', linewidth=4)
    
    plt.plot(fpr["macro"], tpr["macro"],
             label='macro-average ROC curve (area = {0:0.2f})'
                   ''.format(roc_auc["macro"]),
             color='navy', linestyle=':', linewidth=4)
    
    colors = cycle(['aqua', 'darkorange', 'cornflowerblue'])
    for i, color in zip(range(nb_classes), colors):
        plt.plot(fpr[i], tpr[i], color=color, lw=lw,
                 label='ROC curve of class {0} (area = {1:0.2f})'
                 ''.format(i, roc_auc[i]))
    
    plt.plot([0, 1], [0, 1], 'k--', lw=lw)
    plt.xlim([0.0, 1.0])
    plt.ylim([0.0, 1.05])
    plt.xlabel('False Positive Rate')
    plt.ylabel('True Positive Rate')
    plt.title('Some extension of Receiver operating characteristic to multi-class')
    plt.legend(loc="lower right")
    plt.savefig("../images/ROC/ROC_5分类.png")
    plt.show()
    
    
    print("--- %s seconds ---" % (time.time() - start_time))



    ROC图如下所示:

    展开全文
  • pythonroc

    2020-11-29 13:23:25
    以下是使用scikit learn预测、做出决策边界并画出roc曲线的一个示例,以鸢尾花数据集为例。 1. 导入鸢尾花的数据import numpy as npimport matplotlib.pyplot as pltimportwarningsfrom sklearn impo...
  • pythonROC曲线

    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['...
  • 绘制平滑ROC曲线

    2022-05-11 16:35:22
    使用下面的程序绘制ROC曲线是有很多棱角的,我想获得平滑的曲线该怎么办呢 import numpy as np import matplotlib.pyplot as plt from sklearn import svm, datasets from sklearn.metrics import roc_curve, auc ...
  • 在用python绘图的时候,经常由于数据的原因导致画出来的图折线分界过于明显,因此需要对原数据绘制的折线进行平滑处理,本文介绍利用插值法进行平滑曲线处理:实现所需的库numpy、scipy、matplotlib插值法实现...
  • plot_roc_curve在sklearn0.22版本中,可以实现一行代码画出ROC-AUC图sklearn.metrics.plot_roc_curve(estimator, X, y, sample_weight=None, drop_intermediate=True, response_method='auto', name=None, ax=None, ...
  • 原标题:Matlab建立SVM,KNN和朴素贝叶斯模型分类绘制ROC曲线原文链接:http://tecdat.cn/?p=15508 绘制ROC曲线通过Logistic回归进行分类加载样本数据。load fisheriris通过使用与versicolor和virginica物种相对应的...
  • ROC及AUC计算方法及原理

    千次阅读 2021-03-06 17:52:51
    ROC曲线python代码实现 def plotROC(predStrengths, classLabels): cur=(0.0, 0.0) numPosClass = np.sum(np.array(classLabels) == 1.0) yStep = 1.0/numPosClass xStep = 1.0/(len(classLabels)-numPosClass) ...
  • 红外小目标检测中ROC曲线绘制

    千次阅读 2022-02-09 13:14:21
    ROC曲线绘制欢迎使用Markdown编辑器前言一、什么是ROC曲线?二、怎么绘制ROC曲线总结 欢迎使用Markdown编辑器 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录欢迎使用Markdown编辑...
  • 绘制ROC曲线以通过Logistic回归进行分类 加载样本数据。
  • ROC曲线绘制

    千次阅读 2018-01-14 20:18:11
    ROC曲线指受试者工作特征曲线/接收器操作特性(receiver operating characteristic,ROC)曲线,是反映灵敏性和特效性连续变量的综合指标,是用构图法揭示敏感性和特异性的相互关系,它通过将连续变量设定出多个不同的...
  • 如何画ROC曲线和FROC曲线

    万次阅读 多人点赞 2019-04-07 20:06:26
    ROC曲线代码 具体去看https://www.jianshu.com/p/5df19746daf9。,里面的代码讲的详细 例子 # coding=UTF-8 from sklearn import metrics import matplotlib.pylab as plt #真实值 GTlist = [1.0, 1.0, 0.0, ...
  • ROC曲线的理解

    千次阅读 2019-05-23 17:56:11
    1 ROC曲线的概念 受试者工作特征曲线 (receiver operating characteristic curve,简称ROC曲线),又称为 感受性曲线(sensitivity curve)。得此名的原因在于曲线上各点反映着相同的感受性,它们都是对同一 信号...
  • roc曲线

    2019-10-22 17:03:44
    (当threshold取值越多,ROC曲线就越平滑)。 当我们将threshold设置为1和0时,即分别对应将所有样本划分为负样本和将所有样本划分为正样本,就可以的得到曲线上的(0,0)和(1,1)两点。 关于score值:分类器...
  • 如何在一张图中画多条ROC线?

    千次阅读 多人点赞 2020-04-02 16:20:26
    fpr2,tpr2,thres2 = metrics.roc_curve(label2, y_predicted2) fpr3,tpr3,thres3 = metrics.roc_curve(label3, y_predicted3) roc_auc1 = metrics.auc(fpr1, tpr1) roc_auc2 = metrics.auc(fpr2, tpr2) roc_auc3 = ...
  • 之前我们讨论了使用ROC曲线来描述分类器的优势,有人说它描述了“随机猜测类别的策略”,让我们回到ROC曲线来说明。考虑一个非常简单的数据集,其中包含10个观测值(不可线性分离)
  • 机器学习系列专栏选自 Python-Machine-Learning-Book On GitHub作者:Sebastian Raschka翻译&整理 By Sam...
  • 肿瘤良性恶性预测4 分类模型的评估4.1 分类评估方法混淆矩阵准确率精确率召回率F1-score4.2 分类评估API4.3 ROC曲线和AUC指标TPR与FPRROC曲线AUC指标绘制ROC曲线补充:解决类别不平衡问题1 构造不平衡数据集2 解决...
  • 混淆矩阵、AUC与ROC曲线及代码实现

    千次阅读 2019-01-21 11:28:56
    ,得到的ROC曲线平滑。AUC评价标准,曲线 面积越大 ,分类器更好。 def evaluate_model ( predictions , probs , train_predictions , train_probs ) : """Compare machine learning model to baseline ...
  • python曲线

    2020-11-25 10:49:18
    广告关闭腾讯云11.11云上盛惠 ,精选热门...利用python生成曲线图像的脚本,参考自:http:www.lorenzogil.comprojectspychaimportcairoimportpycha.barwidth,height=500,400surface=cairo.imagesurface(cairo.forma...
  • 深度理解受试者工作特征(ROC)曲线

    千次阅读 2020-12-23 18:03:06
    目录1、分类结果混淆矩阵举例:2、ROC举例:3、AUC4、Python代码 我们通常使用ROC和AUC来衡量分类算法在二分类问题上表现的好坏。 参考:https://zhuanlan.zhihu.com/p/46438528 1、分类结果混淆矩阵 在二分类问题上...
  • origin画ROC曲线

    2022-03-25 15:37:29
    本教程使用的是原始数据,需统计计算后给出对应的参数,并绘制ROC曲线。 数据格式 示例数据为使用两种方法测量得到的RMSF患者和正常人的钠水平,数据格式为形式,其中第1列为人群信息,第2列为Method1测量的结果,...
  • 使用sklearn中roc曲线计算AUC值

    万次阅读 2018-04-16 00:06:26
    ROC曲线指受试者工作特征曲线/接收器操作特性(receiver operating characteristic,ROC)曲线,是反映灵敏性和特效性连续变量的综合指标,是用构图法揭示敏感性和特异性的相互关系,它通过将连续变量设定出多个不同的...
  • ROC曲线ROC曲线全称Receiver Operating Characteristic Curve(接受者操作特性曲线),又称感受性曲线(sensitivity curve),在解释ROC曲线之前需要先了解两个概念:TPR(True Positive Rate 真阳性率)、FPR...
  • 欢迎关注博主主页,学习python视频资源 sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005269003&utm_campaign=commission&...
  • 当阈值取值越多,ROC曲线平滑。 --在阿里比赛的时候还以为ROC是没用的!!!!真的是有眼无珠啊!!!还是有疑惑的是:如何根据ROC来判定结果的好换呢?看哪个分类器更加接近左上角吧。同时,可以根据ROC来确定...

空空如也

空空如也

1 2 3 4 5 ... 19
收藏数 369
精华内容 147
关键字:

python绘制平滑roc曲线