ホームページ  >  記事  >  バックエンド開発  >  Python による ROC 曲線の描画と AUC 値の計算 (コード付き)

Python による ROC 曲線の描画と AUC 値の計算 (コード付き)

烟雨青岚
烟雨青岚転載
2020-06-19 13:01:546928ブラウズ

Python による ROC 曲線の描画と AUC 値の計算 (コード付き)

はじめに

ROC (受信機動作特性) 曲線とAUC は、バイナリ分類器の品質を評価するためによく使用されます。この記事では、まず ROC と AUC について簡単に紹介し、次に例を使用して Python で ROC 曲線を作成し、AUC を計算する方法を示します。

AUC の概要

AUC (曲線下面積) は、機械学習二値分類モデルで非常に一般的に使用される評価指標です。F1 スコアと比較して、プロジェクトの不均衡に対する許容度がより高くなります。現在、一般的な機械学習ライブラリ (scikit-learn など) には通常、この指標の計算が統合されていますが、モデルが別個であるか、自分で作成されている場合もあります。この場合、トレーニング モデルの品質を評価したい場合は、次のことを行う必要があります。 AUC 計算モジュール 情報を探していたところ、この記事で libsvm-tools に非常にわかりやすい AUC 計算があることがわかったので、将来使用するためにこれを選択しました。

AUC の計算

AUC の計算は次の 3 つのステップに分かれています:

1. 計算データの準備。モデルのトレーニング中のトレーニング セット。交差検証によって計算されます。評価セット (evaluate) がある場合は、通常は直接計算できます。データの形式には、通常、予測スコアとそのターゲット カテゴリが必要です (これは、

2. 閾値分割により、水平(X:偽陽性率)と垂直(Y:真陽性率)の点が得られます##3.座標点を結んだ後曲線に変換し、曲線の下の面積を計算します。これが AUC の値です。

Python コードに直接移動します。
#! -*- coding=utf-8 -*-import pylab as pl
from math import log,exp,sqrt
 
 
evaluate_result="you file path"db = [] #[score,nonclk,clk]pos, neg = 0, 0
with open(evaluate_result,'r') as fs: for line in fs:
 nonclk,clk,score = line.strip().split('\t')
 nonclk = int(nonclk)
 clk = int(clk)
 score = float(score)
 db.append([score,nonclk,clk])
 pos += clk
 neg += nonclk
  
  
 
db = sorted(db, key=lambda x:x[0], reverse=True)
 #计算ROC坐标点xy_arr = []tp, fp = 0., 0. 
for i in range(len(db)):
 tp += db[i][2]
 fp += db[i][1]
 xy_arr.append([fp/neg,tp/pos])
 #计算曲线下面积auc = 0. 
prev_x = 0for x,y in xy_arr: if x != prev_x:
 auc += (x - prev_x) * y
 prev_x = x
 
print "the auc is %s."%auc
 x = [_v[0] for _v in xy_arr]
y = [_v[1] for _v in xy_arr]
pl.title("ROC curve of %s (AUC = %.4f)" % ('svm',auc))
pl.xlabel("False Positive Rate")
pl.ylabel("True Positive Rate")
pl.plot(x, y)# use pylab to plot x and y
pl.show()# show the plot on the screen

形式は次のとおりです:

nonclk \t clk \t score

その内:

1、nonclick: クリックされていないデータ。これは負のサンプルの数と見なすことができます。

2、clk: clk: クリック数、これは正のサンプルの数とみなすことができます
3、スコア: 予測スコア。このスコアをグループとして使用して、陽性サンプルと陰性サンプルの事前統計を実行すると、AUC 計算の量を減らすことができます。
操作の結果は次のとおりです:

Python による ROC 曲線の描画と AUC 値の計算 (コード付き)このマシンに pylab がインストールされていない場合は、依存関係と描画部分に直接注釈を付けることができます

Note
上記のコード: 1. 以下の結果のみ2 つのカテゴリは計算できます (2 つのカテゴリのラベルについては、気軽に扱うことができます)
2. 上記のコードの各スコアにはしきい値があります。実際、この効率は非常に低いです。サンプルまたは横軸の座標を計算するときに等分を計算する
ご覧いただきありがとうございます
大学時代、独学でPythonを学ぶことにしましたが、社会人になってからはパソコンの調子が悪くなってしまいました。基礎的なことを学びました 学歴が無いとどうしようもありません 明後日で挽回できるのでコーディング以外でも自分なりの反撃を開始しました Pythonのコア知識を学び続けて勉強しましたコンピューターの基礎知識を徹底的に学びました。整理した後、WeChat 公開アカウント「プログラマー アカデミー」に投稿しました。凡庸になりたくない場合は、私と一緒にコーディング以外の分野でも成長し続けてください。

実は、ここにはテクノロジーだけではなく、テクノロジー以外のものも存在します。例えば、ディアオシではなく優秀なプログラマーになるにはどうすればよいかなどです。プログラマー自体が崇高な存在ですよね。それ? ? 【クリックして参加】 自分らしく高貴な人になりたいなら、ぜひ!

読んでくれた皆さん、ありがとうございます。たくさんの利益が得られることを願っています。

この記事は、https://blog.csdn.net/adrrry/article/details/106796288# から転載されています。 ## 推奨チュートリアル: 「Python チュートリアル

以上がPython による ROC 曲線の描画と AUC 値の計算 (コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。