亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python繪制ROC曲線的示例代碼

 更新時(shí)間:2023年07月20日 10:44:50   作者:張小李的風(fēng)  
本文主要介紹了python繪制ROC曲線的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

受試者工作特征(Receiver Operating Characteristic,ROC)的基本知識(shí)

  • ROC曲線可以用來評(píng)估分類器的輸出質(zhì)量。
  • ROC曲線Y軸為真陽性率,X軸為假陽性率。這意味著曲線的左上角是“理想”點(diǎn)——假陽性率為0,真陽性率為1。
  • 上述的理想情況實(shí)際中很難存在,但它確實(shí)表示面積下曲線(AUC)越大通常分類效率越好。
  • ROC曲線的“陡度”也很重要,坡度越大,則越有降低假陽性率,升高真陽性率的趨勢(shì)。
  • ROC曲線通常用于二元分類中研究分類器的輸出(也可在多分類中使用,需要對(duì)標(biāo)簽進(jìn)行二值化【比如ABC三類,進(jìn)行分類時(shí)將標(biāo)簽進(jìn)行二值化處理[A(1)、BC(0)】、【B(1)、AC(0)】、【C(1)、AB(0)】,比如本文不作討論)。

python 實(shí)現(xiàn)

  • 繪制ROC曲線主要基于python 的sklearn庫中的兩個(gè)函數(shù),roc_curv和auc兩個(gè)函數(shù)。
  • roc_curv 用于計(jì)算出fpr(假陽性率)和tpr(真陽性率)
  • auc用于計(jì)算曲線下面積,輸入為fpr、和tpr

roc_curv函數(shù)詳解

  • roc_curve(y_true, y_score, pos_label=None, sample_weight=None,drop_intermediate=True)
  • 輸入值
  • y_true :一個(gè)和樣本數(shù)量一致的一維向量,數(shù)據(jù)是正確的二元標(biāo)簽。如果標(biāo)簽不是{- 1,1}或{0,1},則可以顯式指定pos_label。
  • y_score:一個(gè)樣本數(shù)量一致的一維向量,目標(biāo)分?jǐn)?shù)可以是陽性類的概率估計(jì)、置信度值或決策的非閾值度量(在某些分類器上由“decision_function”返回,比如SVM)。簡單的理解就是對(duì)測(cè)試集進(jìn)行分類后得到的一個(gè)用于衡量該類是陽性還是陰性的分?jǐn)?shù)度量,分類器也是根據(jù)這個(gè)分?jǐn)?shù)來判斷測(cè)試集是陽性樣本還是陰性樣本,因此通常都可以在分類器的中間過程拿到這個(gè)分?jǐn)?shù)。
  • pos_label:樣本標(biāo)簽,如果y_true不滿足{0,1},{-1,1}標(biāo)簽時(shí)則需要通過該參數(shù)指定那些是陽性樣本,其余的則為陰性樣本,默認(rèn)不輸入。
  • sample_weight:一個(gè)樣本數(shù)量一致的一維向量,指定每個(gè)樣本的權(quán)重,默認(rèn)不輸入。
  • drop_intermediate:為true時(shí)(默認(rèn)= True)會(huì)刪除一些不會(huì)出現(xiàn)在ROC曲線上的次優(yōu)閾值。
  • 返回值
  • fpr:假陽性率序列,數(shù)量與thread一致的一維向量。
  • tpr:真陽性率序列,數(shù)量與thread一致的一維向量。
  • thread:該序列是一個(gè)遞減序列,在每一個(gè)閾值下對(duì)y_score進(jìn)行劃分,大于的視為陽性,小于的視為陰性,從而計(jì)算出該閾值下的fpr。

代碼示例

# 導(dǎo)包
import numpy as np
import matplotlib.pyplot as plt
from sklearn.metrics import roc_curve, auc
# 計(jì)算
fpr, tpr, thread = roc_curve(y_test, y_score)
roc_auc[i] = auc(fpr, tpr)
# 繪圖
plt.figure()
lw = 2
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.savefig('roc.png',)
plt.show()

y_test 數(shù)據(jù)示例:

0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1

y_score:數(shù)據(jù)示例:

-0.763011 -0.202245 0.118015 -0.907809 -0.0111619 -0.604873 0.0228349 -0.610769 -0.375728
 -0.470174 -0.422242 -0.335587 -0.227239 -0.0785673  -0.533834 0.121637 -0.713569 -0.551115 
 0.379913 -0.111076

更多SVM及ROC的介紹見文章:

python基于sklearn的SVM和留一法(LOOCV)進(jìn)行二分類
python:Sklearn SVM使用留一法時(shí)如何繪制ROC曲線與計(jì)算AUC

到此這篇關(guān)于python繪制ROC曲線的示例代碼的文章就介紹到這了,更多相關(guān)python繪制ROC曲線內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論