python繪制ROC曲線的示例代碼
受試者工作特征(Receiver Operating Characteristic,ROC)的基本知識(shí)
- ROC曲線可以用來(lái)評(píng)估分類器的輸出質(zhì)量。
- ROC曲線Y軸為真陽(yáng)性率,X軸為假陽(yáng)性率。這意味著曲線的左上角是“理想”點(diǎn)——假陽(yáng)性率為0,真陽(yáng)性率為1。
- 上述的理想情況實(shí)際中很難存在,但它確實(shí)表示面積下曲線(AUC)越大通常分類效率越好。
- ROC曲線的“陡度”也很重要,坡度越大,則越有降低假陽(yáng)性率,升高真陽(yáng)性率的趨勢(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庫(kù)中的兩個(gè)函數(shù),roc_curv和auc兩個(gè)函數(shù)。
- roc_curv 用于計(jì)算出fpr(假陽(yáng)性率)和tpr(真陽(yáng)性率)
- 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ù)可以是陽(yáng)性類的概率估計(jì)、置信度值或決策的非閾值度量(在某些分類器上由“decision_function”返回,比如SVM)。簡(jiǎn)單的理解就是對(duì)測(cè)試集進(jìn)行分類后得到的一個(gè)用于衡量該類是陽(yáng)性還是陰性的分?jǐn)?shù)度量,分類器也是根據(jù)這個(gè)分?jǐn)?shù)來(lái)判斷測(cè)試集是陽(yáng)性樣本還是陰性樣本,因此通常都可以在分類器的中間過(guò)程拿到這個(gè)分?jǐn)?shù)。
- pos_label:樣本標(biāo)簽,如果y_true不滿足{0,1},{-1,1}標(biāo)簽時(shí)則需要通過(guò)該參數(shù)指定那些是陽(yáng)性樣本,其余的則為陰性樣本,默認(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:假陽(yáng)性率序列,數(shù)量與thread一致的一維向量。
- tpr:真陽(yáng)性率序列,數(shù)量與thread一致的一維向量。
- thread:該序列是一個(gè)遞減序列,在每一個(gè)閾值下對(duì)y_score進(jìn)行劃分,大于的視為陽(yáng)性,小于的視為陰性,從而計(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的介紹見(jiàn)文章:
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)文章
Python實(shí)現(xiàn)人生重開(kāi)模擬器小游戲講解
這篇文章主要介紹了Python實(shí)現(xiàn)人生重開(kāi)模擬器小游戲,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2023-01-01
解決pycharm下載庫(kù)時(shí)出現(xiàn)Failed to install package的問(wèn)題
很多小伙伴遇到pycharm下載庫(kù)時(shí)出現(xiàn)Failed to install package不知道怎么解決,下面小編給大家?guī)?lái)了解決方法,需要的朋友參考下吧2021-09-09
通過(guò)python實(shí)現(xiàn)隨機(jī)交換禮物程序詳解
這篇文章主要介紹了通過(guò)python實(shí)現(xiàn)隨機(jī)交換禮物程序詳解的,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07
Anaconda+spyder+pycharm的pytorch配置詳解(GPU)
這篇文章主要介紹了Anaconda+spyder+pycharm的pytorch配置,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10

