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 計算の量を減らすことができます。
操作の結果は次のとおりです:
このマシンに pylab がインストールされていない場合は、依存関係と描画部分に直接注釈を付けることができます
Note
上記のコード: 1. 以下の結果のみ2 つのカテゴリは計算できます (2 つのカテゴリのラベルについては、気軽に扱うことができます)
2. 上記のコードの各スコアにはしきい値があります。実際、この効率は非常に低いです。サンプルまたは横軸の座標を計算するときに等分を計算する
ご覧いただきありがとうございます
大学時代、独学でPythonを学ぶことにしましたが、社会人になってからはパソコンの調子が悪くなってしまいました。基礎的なことを学びました 学歴が無いとどうしようもありません 明後日で挽回できるのでコーディング以外でも自分なりの反撃を開始しました Pythonのコア知識を学び続けて勉強しましたコンピューターの基礎知識を徹底的に学びました。整理した後、WeChat 公開アカウント「プログラマー アカデミー」に投稿しました。凡庸になりたくない場合は、私と一緒にコーディング以外の分野でも成長し続けてください。
実は、ここにはテクノロジーだけではなく、テクノロジー以外のものも存在します。例えば、ディアオシではなく優秀なプログラマーになるにはどうすればよいかなどです。プログラマー自体が崇高な存在ですよね。それ? ? 【クリックして参加】 自分らしく高貴な人になりたいなら、ぜひ!
読んでくれた皆さん、ありがとうございます。たくさんの利益が得られることを願っています。
Python チュートリアル」
以上がPython による ROC 曲線の描画と AUC 値の計算 (コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。