Hướng dẫn how do you manually plot a roc curve in python? - làm cách nào để bạn vẽ một đường cong roc trong python theo cách thủ công?


Hồi quy logistic là một phương pháp thống kê mà chúng tôi sử dụng để phù hợp với mô hình hồi quy khi biến phản hồi là nhị phân.

  • Độ nhạy: & nbsp; xác suất mà mô hình dự đoán kết quả tích cực cho một quan sát khi thực sự kết quả là tích cực. Đây cũng được gọi là tỷ lệ tích cực thực sự của người Viking.The probability that the model predicts a positive outcome for an observation when indeed the outcome is positive. This is also called the “true positive rate.”
  • Tính đặc hiệu: & nbsp; xác suất mà mô hình dự đoán kết quả tiêu cực cho một quan sát khi thực sự kết quả là tiêu cực. Điều này cũng được gọi là tỷ lệ âm thực sự của người Viking.The probability that the model predicts a negative outcome for an observation when indeed the outcome is negative. This is also called the “true negative rate.”

Một cách để trực quan hóa hai số liệu này là bằng cách tạo ra một đường cong ROC, viết tắt của đường cong đặc trưng của máy thu. Đây là một âm mưu hiển thị độ nhạy và độ đặc hiệu của mô hình hồi quy logistic.ROC curve, which stands for “receiver operating characteristic” curve. This is a plot that displays the sensitivity and specificity of a logistic regression model.

Ví dụ từng bước sau đây cho thấy cách tạo và giải thích một đường cong ROC trong Python.

Bước 1: Nhập các gói cần thiết

Đầu tiên, chúng tôi sẽ nhập các gói cần thiết để thực hiện hồi quy logistic trong Python:

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn import metrics
import matplotlib.pyplot as plt

Bước 2: Phù hợp với mô hình hồi quy logistic

Tiếp theo, chúng tôi sẽ nhập một bộ dữ liệu và phù hợp với mô hình hồi quy logistic với nó:

#import dataset from CSV file on Github
url = "https://raw.githubusercontent.com/Statology/Python-Guides/main/default.csv"
data = pd.read_csv(url)

#define the predictor variables and the response variable
X = data[['student', 'balance', 'income']]
y = data['default']

#split the dataset into training (70%) and testing (30%) sets
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.3,random_state=0) 

#instantiate the model
log_regression = LogisticRegression()

#fit the model using the training data
log_regression.fit(X_train,y_train)

Bước 3: Vẽ đường cong ROC

Tiếp theo, chúng tôi sẽ tính toán tốc độ dương thực sự và tốc độ dương tính giả và tạo đường cong ROC bằng cách sử dụng gói trực quan hóa dữ liệu matplotlib:

#define metrics
y_pred_proba = log_regression.predict_proba(X_test)[::,1]
fpr, tpr, _ = metrics.roc_curve(y_test,  y_pred_proba)

#create ROC curve
plt.plot(fpr,tpr)
plt.ylabel('True Positive Rate')
plt.xlabel('False Positive Rate')
plt.show()

Hướng dẫn how do you manually plot a roc curve in python? - làm cách nào để bạn vẽ một đường cong roc trong python theo cách thủ công?

Càng nhiều đường cong ôm lấy góc trên cùng bên trái của cốt truyện, mô hình càng tốt trong việc phân loại dữ liệu thành các danh mục.

Như chúng ta có thể thấy từ cốt truyện trên, mô hình hồi quy logistic này thực hiện một công việc khá kém trong việc phân loại dữ liệu thành các danh mục.

Để định lượng điều này, chúng ta có thể tính toán khu vực AUC - dưới đường cong - cho chúng ta biết bao nhiêu lô được đặt dưới đường cong.

AUC càng gần với 1, mô hình càng tốt. Một mô hình có AUC bằng 0,5 không tốt hơn một mô hình tạo ra các phân loại ngẫu nhiên.

Bước 4: Tính AUC

Chúng ta có thể sử dụng mã sau để tính toán AUC của mô hình và hiển thị nó ở góc dưới bên phải của biểu đồ ROC:

#define metrics
y_pred_proba = log_regression.predict_proba(X_test)[::,1]
fpr, tpr, _ = metrics.roc_curve(y_test,  y_pred_proba)
auc = metrics.roc_auc_score(y_test, y_pred_proba)

#create ROC curve
plt.plot(fpr,tpr,label="AUC="+str(auc))
plt.ylabel('True Positive Rate')
plt.xlabel('False Positive Rate')
plt.legend(loc=4)
plt.show()

Hướng dẫn how do you manually plot a roc curve in python? - làm cách nào để bạn vẽ một đường cong roc trong python theo cách thủ công?

AUC cho mô hình hồi quy logistic này hóa ra là & nbsp; 0,5602. Vì điều này gần 0,5, điều này xác nhận rằng mô hình thực hiện một công việc kém để phân loại dữ liệu.0.5602. Since this is close to 0.5, this confirms that the model does a poor job of classifying data.

Liên quan: Cách vẽ nhiều đường cong ROC trong Python How to Plot Multiple ROC Curves in Python

Làm thế nào để bạn thủ công âm mưu roc?

Để vẽ đường cong ROC, chúng ta cần tính toán TPR và FPR cho nhiều ngưỡng khác nhau (bước này được bao gồm trong tất cả các thư viện có liên quan là Scikit-learn). Đối với mỗi ngưỡng, chúng tôi vẽ giá trị FPR trong trục x và giá trị TPR trong trục y. Sau đó chúng tôi tham gia các dấu chấm với một dòng. Đó là nó!calculate the TPR and FPR for many different thresholds (This step is included in all relevant libraries as scikit-learn ). For each threshold, we plot the FPR value in the x-axis and the TPR value in the y-axis. We then join the dots with a line. That's it!

Làm thế nào để bạn vẽ nhiều đường cong ROC trong một lô trong Python?

Làm thế nào để vẽ nhiều đường cong ROC trong Python (ví dụ)..
Bước 1: Nhập các gói cần thiết.Đầu tiên, chúng tôi sẽ nhập một số gói cần thiết trong Python: từ các số liệu nhập Sklearn từ các bộ dữ liệu nhập Sklearn từ Sklearn.....
Bước 2: Tạo dữ liệu giả.....
Bước 3: Phù hợp với nhiều mô hình & đường cong ROC cốt truyện ..

Làm thế nào để bạn tính toán AUC bằng tay?

Bạn có thể chia không gian thành 2 phần: Tam giác và hình thang. Tam giác sẽ có vùng TPR*FRP/2, hình thang (1 -FPR)*(1 +TPR)/2 = 1/2 - FPR/2 +TPR/2 - TPR*fpr/2.Tổng diện tích là 1/2 - FPR/2 + TPR/2.Đây là cách bạn có thể có được nó, chỉ có 2 điểm.divide the space into 2 parts: a triangle and a trapezium. The triangle will have area TPR*FRP/2 , the trapezium (1-FPR)*(1+TPR)/2 = 1/2 - FPR/2 + TPR/2 - TPR*FPR/2 . The total area is 1/2 - FPR/2 + TPR/2 . This is how you can get it, having just 2 points.

Làm thế nào để bạn viết kết quả đường cong ROC?

Một đường cong ROC cho thấy mối quan hệ giữa độ nhạy và độ đặc hiệu lâm sàng cho mọi lần cắt có thể.Đường cong ROC là một biểu đồ với: trục x hiển thị 1-đặc hiệu (= phân đoạn dương tính giả = fp/(fp+tn)) trục y hiển thị độ nhạy (= phân đoạn dương thực = tp/(tp+fn))The x-axis showing 1 – specificity (= false positive fraction = FP/(FP+TN)) The y-axis showing sensitivity (= true positive fraction = TP/(TP+FN))