在 Python 中绘制 ROC 曲线

Lakshay Kapoor 2023年1月30日 2021年7月10日
  1. Python 中的 ROC 曲线定义
  2. Python 中的 Scikit-Learn 库
  3. 绘制 ROC 曲线的 Python 代码
  4. 代码说明
在 Python 中绘制 ROC 曲线

在本指南中,我们将帮助你更多地了解这个 Python 函数以及你可以用来绘制 ROC 曲线作为程序输出的方法。

Python 中的 ROC 曲线定义

术语 ROC 曲线代表接收者操作特征曲线。该曲线基本上是任何分类模型在所有分类阈值下的性能的图形表示。

这条曲线有两个参数:

  • 真阳性率(TPR) - 代表真实,即真实灵敏度
  • False Positive Rate(FPR) - 代表伪,即假灵敏度

这两个参数都称为操作特性,并用作定义 ROC 曲线的因素。

在 Python 中,模型的效率是通过查看曲线下面积 (AUC) 来确定的。因此,效率最高的模型的 AUC 等于 1,效率最低的模型的 AUC 等于 0.5。

Python 中的 Scikit-Learn 库

Scikit-learn 库是用于在 Python 中执行机器学习的最重要的开源库之一。该库包含许多用于分类、聚类和回归等任务的工具。

在本教程中,使用了这个库中的几个函数来帮助绘制 ROC 曲线。这些功能是:

  • make_classification - 导入此函数是因为它通过创建点簇来帮助生成随机的 n 类分类问题。
  • RandomForestClassifier - 此函数作为 Random Forest Classifier 导入,并用作本教程中制作 ROC 曲线的示例模型。
  • train_test_split - 此函数用于将整个数据拆分为两个子集(TrainTest),用于训练和测试数据。
  • roc_curve - 此函数用于返回给定模型的 ROC 曲线。

绘制 ROC 曲线的 Python 代码

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.datasets import make_classification
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import roc_curve

def plot_roc_curve(fper, tper):
    plt.plot(fper, tper, color='red', label='ROC')
    plt.plot([0, 1], [0, 1], color='green', linestyle='--')
    plt.xlabel('False Positive Rate')
    plt.ylabel('True Positive Rate')
    plt.title('Receiver Operating Characteristic Curve')
    plt.legend()
    plt.show()
    
data_X, cls_lab = make_classification(n_samples=2100, n_classes=2, weights=[1,1], random_state=2)
train_X, test_X, train_y, test_y = train_test_split(data_X, cls_lab, test_size=0.5, random_state=2)

model =RandomForestClassifier()
model.fit(train_X, train_y)

prob = model.predict_proba(test_X)
prob = probs[:, 1]
fper, tper, thresholds = roc_curve(test_y, prob)
plot_roc_curve(fper, tper)

输出:

Python 中的 ROC 曲线

代码说明

首先,导入绘制 ROC 曲线所需的所有库和函数。然后定义了一个名为 plot_roc_curve 的函数,其中使用 Matplotlib 库提到了曲线的所有关键因素,如颜色、标签和标题。之后,使用 make_classification 函数制作随机样本,然后在 train_test_split 函数的帮助下将它们分为 traintest 集。在这里,数据的 train-test 比率是 0.50。然后使用 RandomForestClassifier 算法来拟合 train_Xtrain_y 数据。最后,roc_curve 函数用于绘制 ROC 曲线。

Lakshay Kapoor avatar Lakshay Kapoor avatar

Lakshay Kapoor is a final year B.Tech Computer Science student at Amity University Noida. He is familiar with programming languages and their real-world applications (Python/R/C++). Deeply interested in the area of Data Sciences and Machine Learning.

LinkedIn