
206
9
章 半教師あり学習
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: Area under the \
curve = {0:0.2f}'.format(areaUnderROC))
plt.legend(loc="lower right")
plt.show()
if returnPreds==True:
return preds, average_precision
最後に、
precisionAnalysis
関数を定義する。この関数は、あるレベルの再現率に対する適合率
を調べるために用いる。ここでは、テストセット内の不正なクレジットカードトランザクションのうち
75 %
を検出したい場合の、モデルの適合率を求める。この値が高ければ良いモデルということになる。
これは妥当な評価基準だと言えるだろう。不正のうち
75%
を可能な限り高い適合率で検出したいの
だ。適合率が十分高くなければ、不必要に真正のクレジットカードトランザクションを拒否しているこ
とになり、おそらく顧客に不愉快な思いをさせることになる。
def precisionAnalysis(df, column, threshold):
df.sort_values(by=column, ...