📜  绘制神经网络 keras 的 roc 曲线 - Python (1)

📅  最后修改于: 2023-12-03 14:56:52.362000             🧑  作者: Mango

绘制神经网络 keras 的 roc 曲线 - Python

在机器学习中,经常需要评估分类模型的性能, ROC 曲线是一种常用的评估分类器性能的方法。本文将介绍如何使用 keras 绘制 ROC 曲线。

准备数据

在绘制 ROC 曲线之前,需要准备数据集、训练模型和计算预测概率。在本文中,我们使用 Sklearn 自带的鸢尾花数据集,使用逻辑回归模型进行分类,示例代码如下:

from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split

X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)

model = LogisticRegression()
model.fit(X_train, y_train)

y_prob = model.predict_proba(X_test)

在上述代码中,我们使用 train_test_split 将数据集分为训练集和测试集,并使用逻辑回归模型对数据进行分类,最终得到测试集每个样本的预测概率 y_prob

绘制 ROC 曲线

绘制 ROC 曲线需要计算分类器在不同阈值下的真阳性率(True Positive Rate, TPR)和假阳性率(False Positive Rate, FPR)。在 Python 中,可以使用 Scikit-learn 自带的 roc_curve 函数计算 TPR 和 FPR,代码如下:

from sklearn.metrics import roc_curve

fpr, tpr, thresholds = roc_curve(y_test, y_prob[:, 1])

在上述代码中,roc_curve 函数需要传入测试集的真实标签和每个样本的预测概率,计算得到 FPR、TPR 和阈值 thresholds

绘制 ROC 曲线的代码如下:

import matplotlib.pyplot as plt

plt.plot(fpr, tpr)
plt.plot([0, 1], [0, 1], linestyle='--')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC Curve')
plt.show()

在上述代码中,我们通过 plot 函数将 FPR 和 TPR 画成坐标系上的线段,并在左下角到右上角画出一条斜率为 1 的虚线,表示分类器随机预测的情况。最终,我们使用 xlabelylabeltitle 函数添加坐标轴和标题,调用 show 函数展示 ROC 曲线。

完整代码如下:

from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import roc_curve
import matplotlib.pyplot as plt

X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)

model = LogisticRegression()
model.fit(X_train, y_train)

y_prob = model.predict_proba(X_test)

fpr, tpr, thresholds = roc_curve(y_test, y_prob[:, 1])

plt.plot(fpr, tpr)
plt.plot([0, 1], [0, 1], linestyle='--')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC Curve')
plt.show()

运行以上代码,即可绘制出 ROC 曲线。

结论

绘制 ROC 曲线是评估分类模型性能的常用方法,它可以帮助我们选择最佳阈值和评估不同分类器的性能。在本文中,我们介绍了如何使用 keras 绘制 ROC 曲线,包括准备数据、计算 TPR 和 FPR、绘制 ROC 曲线等步骤。