在 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