目录
1.简介
AUC-ROC曲线(Area Under the Curve - Receiver Operating Characteristic Curve)是一种评估分类模型性能的方法,特别是在二分类问题中。ROC曲线通过绘制不同阈值下真正例率(True Positive Rate, TPR)和假正例率(False Positive Rate, FPR)来展示模型的性能。它将真正例率(TPR,也称为召回率或灵敏度)作为y轴,假正例率(FPR,1 - 特异度)作为x轴。曲线下的面积(AUC)提供了模型整体性能的一个度量。本代码将使用决策树进行分类任务,并使用AUC-ROC曲线来评估模型的性能。
2.计算方法
y轴: ,即真实值为1的召回率。
x轴: ,即真实值为0的预测错误的概率。
AUC:AUC是ROC曲线下的面积,它表示模型的分类能力。AUC值的范围是0到1,值越高表示模型的分类性能越好。AUC值为0.5时,模型的性能不比随机猜测好;AUC值为1时,即TPR为1,FPR为0时,模型具有完美的分类能力。
3.代码实现
import pandas as pd
#将变量与结果划分开
data = datas.iloc[:, :-1]
target = datas.iloc[:, -1]
from sklearn.model_selection import train_test_split
data_train, data_test, target_train, target_test = train_test_split(data, target, test_size = 0.2, random_state = 60)
#定义决策树
from sklearn import tree
dtr = tree.DecisionTreeClassifier(criterion = 'gini', max_depth = 6, random_state = 42, max_leaf_nodes = 10)
dtr.fit(data_train, target_train)
# 分类的性能评价
'''AUC值的计算'''
y_pred_proba = dtr.predict_proba(data_test)
# 使用测试集数据预测概率,predict_proba方法返回每个样本属于每个类别的概率
a = y_pred_proba[:, 1]
# 从预测概率中提取正类(即1)的概率
auc_result = metrics.roc_auc_score(target_test, a)
# 计算AUC值,使用测试集的真实标签和预测的正类概率
'''绘制ROC-AUC曲线'''
import matplotlib.pyplot as plt
from sklearn.metrics import roc_curve #得到不同阈值的ROC
fpr, tpr, thresholds = roc_curve(target_test, a)
# 计算ROC曲线上的点,fpr是假正例率,tpr是真正例率,thresholds是对应的阈值
#绘制ROC曲线
plt.figure()
plt.plot(fpr, tpr, color= 'darkorange', lw=2, label='ROC curve(area=%0.2f)'% auc_result)
plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--') #函数来绘制一条从点(0,0)到点(1,1)的线段。
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()
plt.show()