文件读取、ROC曲线绘画和auc计算

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);

这是一次简单的尝试,有建议或者批评欢迎在评论区留言呀

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
ROC曲线AUC值是描述二元分类模型性能的重要指标。Python作为一种高效的编程语言,提供了很多画ROC曲线计算AUC值的工具。 要画ROC曲线,需要先得到模型的预测概率分数和真实标签。然后,可以使用sklearn.metrics包中的roc_curve和auc函数进行计算和绘图。具体步骤如下: 1. 从模型中得到预测概率分数和真实标签(0或1)。 2. 使用roc_curve函数计算出不同阈值下的真正率(True Positive Rate)和假正率(False Positive Rate)。 3. 使用plt.plot函数画出ROC曲线,并使用plt.show函数显示结果。 4. 使用auc函数计算AUC值。 示例代码如下: ``` from sklearn.metrics import roc_curve, auc import matplotlib.pyplot as plt # 获取预测概率分数和真实标签 y_pred = model.predict_proba(X_test)[:,1] fpr, tpr, thresholds = roc_curve(y_test, y_pred) # 画ROC曲线 plt.plot(fpr, tpr, label='ROC curve (area = %0.2f)' % auc(fpr, tpr)) plt.plot([0, 1], [0, 1], 'k--') 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') plt.legend(loc="lower right") plt.show() # 计算AUCauc_value = auc(fpr, tpr) print('AUC value is: %.2f' % auc_value) ``` 在这个示例中,我们使用model.predict_proba函数获取模型的预测概率分数,X_test为测试数据,y_test为测试数据的真实标签。我们使用roc_curve函数计算出不同阈值下的真正率和假正率,并使用plt.plot函数画出ROC曲线。我们使用auc函数计算ROC曲线下的面积即AUC值,并输出AUC值。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值