sklearn.metrics.auc
函数用于计算ROC曲线下的面积(Area Under the Curve),是评估二元分类模型性能的重要指标之一。它的使用方法如下:
sklearn.metrics.auc(x, y)
其中,x和y是array-like类型,分别代表ROC曲线的x轴和y轴坐标。
具体地说,x轴坐标代表1-Specificity(即False Positive Rate),y轴坐标代表Sensitivity(即True Positive Rate)。
通过计算ROC曲线下的面积来评估二元分类模型的性能,AUC的取值范围在0.5到1之间,值越大越好,0.5表示随机猜测,1表示完美分类。
下面提供两个实例来说明sklearn.metrics.auc
函数的使用方法:
实例一:
from sklearn.metrics import roc_curve
from sklearn.metrics import auc
import matplotlib.pyplot as plt
import numpy as np
# 构造样本数据
y_true = np.array([1, 1, 2, 2])
y_scores = np.array([0.1, 0.4, 0.35, 0.8])
# 计算ROC曲线并绘制
fpr, tpr, thresholds = roc_curve(y_true, y_scores, pos_label=2)
roc_auc = auc(fpr, tpr)
plt.plot(fpr, tpr, label='ROC curve (area = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], 'r--')
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.show()
实例二:
from sklearn import svm
from sklearn.metrics import roc_curve, auc
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
import numpy as np
# 构造样本数据
X, y = np.random.randn(10, 2), np.ones(10)
y[:5] = 0
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y)
# 训练支持向量机分类器
clf = svm.SVC(kernel='linear', probability=True)
clf.fit(X_train, y_train)
# 预测并计算ROC曲线
y_score = clf.predict_proba(X_test)[:, 1]
fpr, tpr, _ = roc_curve(y_test, y_score)
roc_auc = auc(fpr, tpr)
# 绘制ROC曲线
plt.plot(fpr, tpr, label='ROC curve (area = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], 'r--')
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.show()
以上两个实例都是以绘制ROC曲线为主要目的,首先需要计算ROC曲线下的面积,即sklearn.metrics.auc
函数的作用。其中实例一是手动生成样本数据,并通过给定的阈值计算出TPR和FPR,绘制ROC曲线,并计算其面积。实例二利用SVM分类器的预测结果计算出TPR和FPR,绘制ROC曲线,并计算其面积。