1. 程式人生 > >python 畫 ROC 曲線

python 畫 ROC 曲線

python  畫 ROC 曲線的實現程式碼

import numpy as np
import matplotlib.pyplot as plt

from sklearn.metrics import auc  ###計算roc和auc
import pandas as pd

base = "D:\\WFLW\\wflw_blur_128\\ROC\\"

df =pd.read_csv( base + "sobel_roc.txt", encoding='utf8', delimiter=' ', header=0)
df_lap =pd.read_csv( base + "lap_roc.txt", encoding='utf8', delimiter=' ', header=0)
df_dft =pd.read_csv( base + "dft_roc.txt", encoding='utf8', delimiter=' ', header=0)
df_cnn =pd.read_csv( base + "cnn_roc.txt", encoding='utf8', delimiter=' ', header=0)

tpr = df['tpr']
fpr = df['fpr']

tpr_lap = df_lap['tpr']
fpr_lap = df_lap['fpr']

tpr_dft = df_dft['tpr']
fpr_dft = df_dft['fpr']

tpr_cnn = df_cnn['tpr']
fpr_cnn = df_cnn['fpr']

roc_auc = auc(fpr, tpr) ###計算auc的值

roc_auc_lap = auc(fpr_lap, tpr_lap) ###計算auc的值

roc_auc_dft = auc(fpr_dft, tpr_dft) ###計算auc的值

roc_auc_cnn = auc(fpr_cnn, tpr_cnn)

print(roc_auc)

plt.figure()
lw = 2
plt.figure(figsize=(10,10))
plt.plot(fpr, tpr, color='darkorange', lw=lw, label='Sobel ROC curve (area = %0.2f)' % roc_auc) ###假正率為橫座標,真正率為縱座標做曲線

plt.plot(fpr_lap, tpr_lap, color='navy', lw=lw, label='Lap ROC curve (area = %0.2f)' % roc_auc_lap)

plt.plot(fpr_dft, tpr_dft, color='red', lw=lw, label='Dft ROC curve (area = %0.2f)' % roc_auc_dft)

plt.plot(fpr_cnn, tpr_cnn, color='green', lw=lw, label='CNN ROC curve (area = %0.2f)' % roc_auc_cnn)
#plt.plot(tpr, fpr, 'k--', label='Mean ROC (area = %0.2f)' % 1, lw=2)

#plt.plot([0, 1], [0, 1], color='navy', lw=lw, linestyle='--')

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 example')
plt.legend(loc="lower right")
plt.savefig(base + "roc_img\\sobel_roc.jpg")
plt.show()

畫圖結果