python繪制ROC曲線的示例代碼
受試者工作特征(Receiver Operating Characteristic,ROC)的基本知識
- ROC曲線可以用來評估分類器的輸出質量。
- ROC曲線Y軸為真陽性率,X軸為假陽性率。這意味著曲線的左上角是“理想”點——假陽性率為0,真陽性率為1。
- 上述的理想情況實際中很難存在,但它確實表示面積下曲線(AUC)越大通常分類效率越好。
- ROC曲線的“陡度”也很重要,坡度越大,則越有降低假陽性率,升高真陽性率的趨勢。
- ROC曲線通常用于二元分類中研究分類器的輸出(也可在多分類中使用,需要對標簽進行二值化【比如ABC三類,進行分類時將標簽進行二值化處理[A(1)、BC(0)】、【B(1)、AC(0)】、【C(1)、AB(0)】,比如本文不作討論)。
python 實現
- 繪制ROC曲線主要基于python 的sklearn庫中的兩個函數,roc_curv和auc兩個函數。
- roc_curv 用于計算出fpr(假陽性率)和tpr(真陽性率)
- auc用于計算曲線下面積,輸入為fpr、和tpr
roc_curv函數詳解
- roc_curve(y_true, y_score, pos_label=None, sample_weight=None,drop_intermediate=True)
- 輸入值
- y_true :一個和樣本數量一致的一維向量,數據是正確的二元標簽。如果標簽不是{- 1,1}或{0,1},則可以顯式指定pos_label。
- y_score:一個樣本數量一致的一維向量,目標分數可以是陽性類的概率估計、置信度值或決策的非閾值度量(在某些分類器上由“decision_function”返回,比如SVM)。簡單的理解就是對測試集進行分類后得到的一個用于衡量該類是陽性還是陰性的分數度量,分類器也是根據這個分數來判斷測試集是陽性樣本還是陰性樣本,因此通常都可以在分類器的中間過程拿到這個分數。
- pos_label:樣本標簽,如果y_true不滿足{0,1},{-1,1}標簽時則需要通過該參數指定那些是陽性樣本,其余的則為陰性樣本,默認不輸入。
- sample_weight:一個樣本數量一致的一維向量,指定每個樣本的權重,默認不輸入。
- drop_intermediate:為true時(默認= True)會刪除一些不會出現在ROC曲線上的次優(yōu)閾值。
- 返回值
- fpr:假陽性率序列,數量與thread一致的一維向量。
- tpr:真陽性率序列,數量與thread一致的一維向量。
- thread:該序列是一個遞減序列,在每一個閾值下對y_score進行劃分,大于的視為陽性,小于的視為陰性,從而計算出該閾值下的fpr。
代碼示例
# 導包 import numpy as np import matplotlib.pyplot as plt from sklearn.metrics import roc_curve, auc # 計算 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 數據示例:
0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1
y_score:數據示例:
-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)進行二分類
python:Sklearn SVM使用留一法時如何繪制ROC曲線與計算AUC
到此這篇關于python繪制ROC曲線的示例代碼的文章就介紹到這了,更多相關python繪制ROC曲線內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python導出chrome書簽到markdown文件的實例代碼
python導出chrome書簽到markdown文件,主要就是解析chrome的bookmarks文件,然后拼接成markdown格式的字符串,最后輸出到文件即可。下面給大家分享實例代碼,需要的朋友參考下2017-12-12Python推導式簡單示例【列表推導式、字典推導式與集合推導式】
這篇文章主要介紹了Python推導式,結合簡單實例形式分析了Python列表推導式、字典推導式與集合推導式基本使用方法,需要的朋友可以參考下2018-12-12django rest framework之請求與響應(詳解)
下面小編就為大家?guī)硪黄猟jango rest framework之請求與響應(詳解)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望對大家有所幫助2017-11-11