ROC曲线,即接受者操作特性曲线是指在特定刺激条件下,以被试在不同判断标准下所得的虚报概率P(y/N)为横坐标,以击中概率P(y/SN)为纵坐标,画得的各点的连线。这是百度百科的解释,反正很拗口啦。
很多理论网上都很齐全了。今天就记录一下,用python3计算ROC曲线和AUC值的代码:
#导入数据
def LoadData(pathname):
data_name = xlrd.open_workbook(pathname); # 打开文件,也可以用panda的csv_read函数,得到的结果类型是dataframe
table = data_name.sheet_by_index(0); # 索引获取工作表
label= (np.array(table.col_values(0)))[1:]; # 获取第一列的内容为label,因为存在表头,所以用了切片[1:]
predict = (np.array(table.col_values(1)))[1:]; # 获取第二列的内容为predict
label= np.float64(label)
predict = np.float64(predict);#由于表头数据是字符,因此后面数据都会是字符,要类型转换
return label,predict;
#ROC曲线画图函数
def DrawROC(fpr,tpr,roc_auc,title='ROC curve'):
plt.plot([0, 1], [0, 1], '--', color=(0.7, 0.7, 0.7));
plt.plot(fpr, tpr, 'k--',label='ROC (area = %0.2f)' % roc_auc, lw=2);
plt.xlim([0.00, 1.00]);
plt.ylim([0.00, 1.00]);
plt.xlabel('False Positive Rate', fontsize=13);
plt.ylabel('True Positive Rate', fontsize=13);
plt.title('%s'%title, fontsize=18);
plt.legend(loc='lower right');
plt.show();
pathname = input('请输入文件路径:') #文件路径输入
label, predict = LoadData(pathname); #文件装载
fpr, tpr, thresholds = roc_curve(label, predict, pos_label = 1);
roc_auc = auc(fpr,tpr); #auc计算
DrawROC(fpr, tpr, roc_auc); #ROC曲线绘图
print('AUC的值',roc_auc);
这是一次简单的尝试,有建议或者批评欢迎在评论区留言呀