AUC計算方法與Python實現(xiàn)代碼
-AUC計算方法
-AUC的Python實現(xiàn)方式
AUC計算方法
AUC是ROC曲線下的面積,它是機器學習用于二分類模型的評價指標,AUC反應的是模型對樣本的排序能力。它的統(tǒng)計意義是從所有正樣本隨機抽取一個正樣本,從所有負樣本隨機抽取一個負樣本,當前score使得正樣本排在負樣本前面的概率。
AUC的計算主要以下幾種方法:
1、計算ROC曲線下的面積。這是比較直接的一種方法,可以近似計算ROC曲線一個個小梯形的面積。幾乎不會用這種方法
2、從AUC統(tǒng)計意義去計算。所有的正負樣本對中,正樣本排在負樣本前面占樣本對數(shù)的比例,即這個概率值。
具體的做法就是它也是首先對prob score從大到小排序,然后令最大prob score對應的sample 的rank為n,第二大score對應sample的rank為n-1,以此類推。
然后把所有的正類樣本的rank相加,再減去M-1種兩個正樣本組合的情況。
得到的就是所有的樣本中有多少對正類樣本的score大于負類樣本的score。
最后再除以M×N。
公式如下:
AUC的Python實現(xiàn)
通過上面方法二的公式,AUC計算的Python實現(xiàn)如下:
def calAUC(prob,labels): f = list(zip(prob,labels)) rank = [values2 for values1,values2 in sorted(f,key=lambda x:x[0])] rankList = [i+1 for i in range(len(rank)) if rank[i]==1] posNum = 0 negNum = 0 for i in range(len(labels)): if(labels[i]==1): posNum+=1 else: negNum+=1 auc = 0 auc = (sum(rankList)- (posNum*(posNum+1))/2)/(posNum*negNum) print(auc) return auc
其中輸入prob是得到的概率值,labels是分類的標簽(1,-1)
以上這篇AUC計算方法與Python實現(xiàn)代碼就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
python 解決selenium 中的 .clear()方法失效問題
這篇文章主要介紹了python 解決selenium 中的 .clear()方法失效問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09Python實現(xiàn)網(wǎng)絡端口轉發(fā)和重定向的方法
這篇文章主要介紹了Python實現(xiàn)網(wǎng)絡端口轉發(fā)和重定向的方法,結合實例形式分析了Python基于threading和socket模塊實現(xiàn)端口轉發(fā)與重定向的具體操作技巧,需要的朋友可以參考下2016-09-09Python?常用的print輸出函數(shù)和input輸入函數(shù)
這篇文章主要介紹了Python?常用的print輸出函數(shù)和input輸入函數(shù),今天主要學習一下Python中的輸入輸出流,會對標準輸入輸出流、文件輸入輸出流展開介紹,需要的朋友可以參考一下2022-02-02