日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

sklearn下的ROC与AUC原理详解

發布時間:2024/9/18 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sklearn下的ROC与AUC原理详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ROC全稱Receiver operating characteristic。

定義

TPR:true positive rate,正樣本中分類正確的比率,即TP/(TP+FN),一般希望它越大越好

FPR:false negtive rage,負樣本中分類錯誤的比率,即FP/(FP+TN),一般希望它越小越好

ROC曲線:以FPR作為X軸,TPR作為y軸

roc_curve函數的原理及計算方式

要作ROC曲線,需要計算FPR及對應的TPR。

對于一個給定的預測概率,設定不同的閾值,預測結果會不一樣。例如我們設定閾值在0.5以上的為預測正確的樣本和閾值在0.3以上的結果,得到的預測就完全不同。而ROC曲線就是計算不同閾值下FPR及對應的TPR。

以https://www.w3cschool.cn/doc_scikit_learn/scikit_learn-modules-generated-sklearn-metrics-roc_curve.html?lang=en為例

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

roc_curve從score中取了4個值作為閾值,用這個閾值判斷,得到不同閾值下的fpr和tpr,利用fpr和tpr作出ROC曲線。

auc原理及計算方式:

AUC全稱Area Under the Curve,即ROC曲線下的面積。sklearn通過梯形的方法來計算該值。上述例子的auc代碼如下:

>>> metrics.auc(fpr, tpr) 0.75

roc_auc_score原理及計算方式:

在二分類問題中,roc_auc_score的結果都是一樣的,都是計算AUC。

在多分類中,有兩種計算方式:One VS Rest和 One VS One,在multi_class參數中分別為ovr和ovo。

ovr:以3分類為例,混淆矩陣分為3層,第一層為C1類和排除了C1的其他類,第二層為C2類和排除了C2的其他類,第三層為C3類和排除了C3的其他類,如圖所示:

在這種情況下,需要指明如何得到總的score,sklearn的average參數有4種選擇:

micro: 把所有類放在一起計算。即:

然后以此作ROC曲線,求得score.

macro: 為每一層分配相同的權值。即

weighted: 以該類在樣本中占的百分比作為權重,計算TPR和FPR。

sample: 對于樣本很不均勻的類,可以采用該方法。所以對多分類的roc_auc_score使用示例如下:

roc_auc_score(y_true, y_scores, multi_class='ovo',labels=[0,1,2],average='macro')

總結

以上是生活随笔為你收集整理的sklearn下的ROC与AUC原理详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。