Hướng dẫn how do you get auc from roc curve in python? - làm thế nào để bạn có được auc từ đường cong roc trong python?

Học máy - AUC - Đường cong ROC


Trên trang này, W3Schools.com hợp tác với Học viện Khoa học Dữ liệu NYC, để cung cấp nội dung đào tạo kỹ thuật số cho sinh viên của chúng tôi.


AUC - Đường cong ROC

Trong phân loại, có nhiều số liệu đánh giá khác nhau. Phổ biến nhất là độ chính xác, đo lường tần suất mô hình là chính xác. Đây là một số liệu tuyệt vời bởi vì nó dễ hiểu và nhận được những phỏng đoán chính xác nhất thường được mong muốn. Có một số trường hợp bạn có thể xem xét sử dụng một số liệu đánh giá khác.accuracy, which measures how often the model is correct. This is a great metric because it is easy to understand and getting the most correct guesses is often desired. There are some cases where you might consider using another evaluation metric.

Một số liệu phổ biến khác là AUC, khu vực dưới đường cong đặc tính vận hành máy thu (ROC). Đường cong đặc trưng hoạt động của Reciever biểu thị tốc độ dương (TP) thực sự so với tỷ lệ dương tính giả (FP) ở các ngưỡng phân loại khác nhau. Các ngưỡng là các điểm cắt xác suất khác nhau tách biệt hai lớp trong phân loại nhị phân. Nó sử dụng xác suất để cho chúng ta biết một mô hình phân tách các lớp tốt như thế nào.AUC, area under the receiver operating characteristic (ROC) curve. The Reciever operating characteristic curve plots the true positive (TP) rate versus the false positive (FP) rate at different classification thresholds. The thresholds are different probability cutoffs that separate the two classes in binary classification. It uses probability to tell us how well a model separates the classes.


Dữ liệu mất cân bằng

Giả sử chúng ta có một tập dữ liệu mất cân bằng trong đó phần lớn dữ liệu của chúng ta có một giá trị. Chúng ta có thể có được độ chính xác cao cho mô hình bằng cách dự đoán lớp đa số.

Thí dụ

Nhập Numpy dưới dạng NP từ sklearn.Metrics Nhập chính xác_score, Infusion_Matrix, Roc_auc_score, Roc_curve
from sklearn.metrics import accuracy_score, confusion_matrix, roc_auc_score, roc_curve

n = 10000 tỷ lệ = .95 N_0 = int ((1-ratio) * n) n_1 = int (tỷ lệ * n)
ratio = .95
n_0 = int((1-ratio) * n)
n_1 = int(ratio * n)

y = np.Array ([0] * n_0 + [1] * n_1) # bên dưới là các xác suất thu được từ một mô hình giả thuyết luôn dự đoán xác suất đa số Lớp # dự đoán lớp 1 sẽ là 100% y_proba = np. mảng ([1]*n) y_pred = y_proba> .5
# below are the probabilities obtained from a hypothetical model that always predicts the majority class
# probability of predicting class 1 is going to be 100%
y_proba = np.array([1]*n)
y_pred = y_proba > .5

print (f'accuracy điểm: {accuracy_score (y, y_pred)} ') 0]/n_0} ') in (f'Class 1 Độ chính xác: {cf_mat [1] [1]/n_1}')
cf_mat = confusion_matrix(y, y_pred)
print('Confusion matrix')
print(cf_mat)
print(f'class 0 accuracy: {cf_mat[0][0]/n_0}')
print(f'class 1 accuracy: {cf_mat[1][1]/n_1}')

Chạy ví dụ »


QUẢNG CÁO


Mặc dù chúng tôi có được độ chính xác rất cao, mô hình không cung cấp thông tin về dữ liệu để nó không hữu ích. Chúng tôi dự đoán chính xác Lớp 1 100% thời gian trong khi dự đoán không chính xác lớp 0 0% thời gian. Với chi phí chính xác, có thể tốt hơn là có một mô hình có thể tách biệt hai lớp.

Thí dụ

Nhập Numpy dưới dạng NP từ sklearn.Metrics Nhập chính xác_score, Infusion_Matrix, Roc_auc_score, Roc_curve
y_proba_2 = np.array(
    np.random.uniform(0, .7, n_0).tolist() +
    np.random.uniform(.3, 1, n_1).tolist()
)
y_pred_2 = y_proba_2 > .5

n = 10000 tỷ lệ = .95 N_0 = int ((1-ratio) * n) n_1 = int (tỷ lệ * n)
cf_mat = confusion_matrix(y, y_pred_2)
print('Confusion matrix')
print(cf_mat)
print(f'class 0 accuracy: {cf_mat[0][0]/n_0}')
print(f'class 1 accuracy: {cf_mat[1][1]/n_1}')

Chạy ví dụ »

QUẢNG CÁO

Mặc dù chúng tôi có được độ chính xác rất cao, mô hình không cung cấp thông tin về dữ liệu để nó không hữu ích. Chúng tôi dự đoán chính xác Lớp 1 100% thời gian trong khi dự đoán không chính xác lớp 0 0% thời gian. Với chi phí chính xác, có thể tốt hơn là có một mô hình có thể tách biệt hai lớp.

import matplotlib.pyplot as plt

def plot_roc_curve(true_y, y_prob):
    """
    plots the roc curve based of the probabilities
    """

    fpr, tpr, thresholds = roc_curve(true_y, y_prob)
    plt.plot(fpr, tpr)
    plt.xlabel('False Positive Rate')
    plt.ylabel('True Positive Rate')

Thí dụ

Nhập Numpy dưới dạng NP từ sklearn.Metrics Nhập chính xác_score, Infusion_Matrix, Roc_auc_score, Roc_curve

n = 10000 tỷ lệ = .95 N_0 = int ((1-ratio) * n) n_1 = int (tỷ lệ * n)
print(f'model 1 AUC score: {roc_auc_score(y, y_proba)}')

y = np.Array ([0] * n_0 + [1] * n_1) # bên dưới là các xác suất thu được từ một mô hình giả thuyết luôn dự đoán xác suất đa số Lớp # dự đoán lớp 1 sẽ là 100% y_proba = np. mảng ([1]*n) y_pred = y_proba> .5

Hướng dẫn how do you get auc from roc curve in python? - làm thế nào để bạn có được auc từ đường cong roc trong python?

print (f'accuracy điểm: {accuracy_score (y, y_pred)} ') 0]/n_0} ') in (f'Class 1 Độ chính xác: {cf_mat [1] [1]/n_1}')

Chạy ví dụ »

Thí dụ

Nhập Numpy dưới dạng NP từ sklearn.Metrics Nhập chính xác_score, Infusion_Matrix, Roc_auc_score, Roc_curve

n = 10000 tỷ lệ = .95 N_0 = int ((1-ratio) * n) n_1 = int (tỷ lệ * n)
print(f'model 2 AUC score: {roc_auc_score(y, y_proba_2)}')

y = np.Array ([0] * n_0 + [1] * n_1) # bên dưới là các xác suất thu được từ một mô hình giả thuyết luôn dự đoán xác suất đa số Lớp # dự đoán lớp 1 sẽ là 100% y_proba = np. mảng ([1]*n) y_pred = y_proba> .5

Hướng dẫn how do you get auc from roc curve in python? - làm thế nào để bạn có được auc từ đường cong roc trong python?

print (f'accuracy điểm: {accuracy_score (y, y_pred)} ') 0]/n_0} ') in (f'Class 1 Độ chính xác: {cf_mat [1] [1]/n_1}')

Chạy ví dụ »

QUẢNG CÁO


Mặc dù chúng tôi có được độ chính xác rất cao, mô hình không cung cấp thông tin về dữ liệu để nó không hữu ích. Chúng tôi dự đoán chính xác Lớp 1 100% thời gian trong khi dự đoán không chính xác lớp 0 0% thời gian. Với chi phí chính xác, có thể tốt hơn là có một mô hình có thể tách biệt hai lớp.

# Dưới đây là các xác suất thu được từ một mô hình giả thuyết không phải lúc nào cũng dự đoán chế độ y_proba_2 = np.array (& nbsp; & nbsp; & nbsp; & nbsp; np.random.uniform (0, .7, n_0). & nbsp; & nbsp; & nbsp; & nbsp; np.random.uniform (.3, 1, n_1) .tolist ()) y_pred_2 = y_proba_2> .5

print (f'accuracy điểm: {accuracy_score (y, y_pred_2)} ') 0]/n_0} ') in (f'Class 1 Độ chính xác: {cf_mat [1] [1]/n_1}')

Thí dụ

Nhập Numpy dưới dạng NP từ sklearn.Metrics Nhập chính xác_score, Infusion_Matrix, Roc_auc_score, Roc_curve

n = 10000 tỷ lệ = .95 N_0 = int ((1-ratio) * n) n_1 = int (tỷ lệ * n)
y = np.array([0] * n + [1] * n)
#
y_prob_1 = np.array(
    np.random.uniform(.25, .5, n//2).tolist() +
    np.random.uniform(.3, .7, n).tolist() +
    np.random.uniform(.5, .75, n//2).tolist()
)
y_prob_2 = np.array(
    np.random.uniform(0, .4, n//2).tolist() +
    np.random.uniform(.3, .7, n).tolist() +
    np.random.uniform(.6, 1, n//2).tolist()
)

In (F'model 1 Điểm chính xác: {accuracy_score (y, y_prob_1> .5)} ') in (f'model 2 điểm chính xác: {ascuracy_score (y, y_prob_2> .5)}')
print(f'model 2 accuracy score: {accuracy_score(y, y_prob_2>.5)}')

In (F'model 1 AUC Điểm: {Roc_auc_score (y, y_prob_1)} ') in (F'model 2 AUC Điểm: {roc_auc_score (y, y_prob_2)}')
print(f'model 2 AUC score: {roc_auc_score(y, y_prob_2)}')

Chạy ví dụ »

Thí dụ

Âm mưu mô hình 1:

Plot_roc_curve (y, y_prob_1)

Kết quả

Hướng dẫn how do you get auc from roc curve in python? - làm thế nào để bạn có được auc từ đường cong roc trong python?

Chạy ví dụ »

Thí dụ

Âm mưu mô hình 1:

Plot_roc_curve (y, y_prob_1)
plt.plot(fpr, tpr)

Kết quả

Hướng dẫn how do you get auc from roc curve in python? - làm thế nào để bạn có được auc từ đường cong roc trong python?

Chạy ví dụ »

Thí dụ



AUC được tính từ ROC như thế nào?

ROC AUC là khu vực dưới đường cong ROC và thường được sử dụng để đánh giá chất lượng thứ tự của hai lớp đối tượng bằng thuật toán.Rõ ràng là giá trị này nằm trong phân đoạn [0,1].Trong ví dụ của chúng tôi, giá trị AUC ROC = 9,5/12 ~ 0,79. and is often used to evaluate the ordering quality of two classes of objects by an algorithm. It is clear that this value lies in the [0,1] segment. In our example, ROC AUC value = 9.5/12 ~ 0.79.

Sklearn tính điểm AUC trong Python như thế nào?

linear_model nhập logisticRegression >>> từ sklearn.Nhập các số liệu roc_auc_score >>> x, y = load_breast_cancer (return_x_y = true) >>> clf = logisticRegression (solver = "liblinear", ngẫu nhiên_state = 0).Fit (x, y) >>> roc_auc_score (y, clf. predict_proba (x) [:, 1]) 0.99 ... >>>>

AUC trong Python là gì?

Một số liệu phổ biến khác là AUC, khu vực dưới đường cong đặc tính vận hành máy thu (ROC).Đường cong đặc trưng hoạt động của Reciever biểu thị tốc độ dương (TP) thực sự so với tỷ lệ dương tính giả (FP) ở các ngưỡng phân loại khác nhau.area under the receiver operating characteristic (ROC) curve. The Reciever operating characteristic curve plots the true positive (TP) rate versus the false positive (FP) rate at different classification thresholds.