Mẹo Hướng dẫn dùng roc curce python ✅

Kinh Nghiệm Hướng dẫn Hướng dẫn dùng roc curce python Mới Nhất

Lê Khánh Vy đang tìm kiếm từ khóa Hướng dẫn dùng roc curce python được Update vào lúc : 2022-10-01 07:24:11 . Với phương châm chia sẻ Thủ Thuật Hướng dẫn trong nội dung bài viết một cách Chi Tiết Mới Nhất. Nếu sau khi đọc nội dung bài viết vẫn ko hiểu thì hoàn toàn có thể lại Comments ở cuối bài để Tác giả lý giải và hướng dẫn lại nha.

Tôi đang nỗ lực vẽ đồ thị ROC để đánh giá độ đúng chuẩn của quy mô Dự kiến mà tôi đã phát triển trong Python bằng phương pháp sử dụng những gói hồi quy logistic. Tôi đã tính tỷ lệ dương thực sự cũng như tỷ lệ dương tính giả; tuy nhiên, tôi không thể tìm ra cách vẽ những thứ này một cách đúng chuẩn bằng phương pháp sử dụng matplotlib và tính giá trị AUC. Làm thế nào tôi hoàn toàn có thể làm điều đó?

Dưới đây là hai cách bạn hoàn toàn có thể thử, giả sử model của bạn là một công cụ Dự kiến sklearn:

import sklearn.metrics as metrics # calculate the fpr and tpr for all thresholds of the classification probs = model.predict_proba(X_test) preds = probs[:,1] fpr, tpr, threshold = metrics.roc_curve(y_test, preds) roc_auc = metrics.auc(fpr, tpr) # method I: plt import matplotlib.pyplot as plt plt.title('Receiver Operating Characteristic') plt.plot(fpr, tpr, 'b', label="AUC = %0.2f" % roc_auc) plt.legend(loc="lower right") plt.plot([0, 1], [0, 1],'r--') plt.xlim([0, 1]) plt.ylim([0, 1]) plt.ylabel('True Positive Rate') plt.xlabel('False Positive Rate') plt.show() # method II: ggplot from ggplot import * df = pd.DataFrame(dict(fpr = fpr, tpr = tpr)) ggplot(df, aes(x = 'fpr', y = 'tpr')) + geom_line() + geom_abline(linetype="dashed")

hay là thử

ggplot(df, aes(x = 'fpr', ymin = 0, ymax = 'tpr')) + geom_line(aes(y = 'tpr')) + geom_area(alpha = 0.2) + ggtitle("ROC Curve w/ AUC = %s" % str(roc_auc))

Đây là cách đơn giản nhất để vẽ đường cong ROC, được đưa ra một bộ nhãn sự thật mặt đất và xác suất Dự kiến. Phần tốt nhất là, nó vẽ đường cong ROC cho TẤT CẢ những lớp, do đó bạn đã và đang có được nhiều đường cong trông ngăn nắp

import scikitplot as skplt import matplotlib.pyplot as plt y_true = # ground truth labels y_probas = # predicted probabilities generated by sklearn classifier skplt.metrics.plot_roc_curve(y_true, y_probas) plt.show()

Đây là một đường cong mẫu được tạo bởi plot_roc_curve. Tôi đã sử dụng bộ tài liệu chữ số mẫu từ scikit-learn để có 10 lớp. Lưu ý rằng một đường cong ROC được vẽ cho từng lớp.

Hướng dẫn dùng roc curce python

Tuyên bố miễn trừ trách nhiệm: Lưu ý rằng điều này sử dụng thư viện scikit-diễn biến mà tôi đã xây dựng.

Vẫn chưa rõ vấn đề ở đây là gì, nhưng nếu bạn có một mảng true_positive_rate và một mảng false_positive_rate, thì việc vẽ đường cong ROC và nhận AUC cũng đơn giản như sau:

import matplotlib.pyplot as plt import numpy as np x = # false_positive_rate y = # true_positive_rate # This is the ROC curve plt.plot(x,y) plt.show() # This is the AUC auc = np.trapz(y,x)

Đường cong AUC cho phân loại nhị phân bằng matplotlib

from sklearn import svm, datasets from sklearn import metrics from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_split from sklearn.datasets import load_breast_cancer import matplotlib.pyplot as plt Tải dữ liệu ung thư vúbreast_cancer = load_breast_cancer() X = breast_cancer.data y = breast_cancer.target Tách bộ dữ liệuX_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.33, random_state=44) Mô hìnhclf = LogisticRegression(penalty='l2', C=0.1) clf.fit(X_train, y_train) y_pred = clf.predict(X_test) Sự chính xácprint("Accuracy", metrics.accuracy_score(y_test, y_pred)) Đường cong AUCy_pred_proba = clf.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) plt.plot(fpr,tpr,label="data 1, auc="+str(auc)) plt.legend(loc=4) plt.show()

Đây là mã python để tính toán đường cong ROC (dưới dạng biểu đồ phân tán):

import matplotlib.pyplot as plt import numpy as np score = np.array([0.9, 0.8, 0.7, 0.6, 0.55, 0.54, 0.53, 0.52, 0.51, 0.505, 0.4, 0.39, 0.38, 0.37, 0.36, 0.35, 0.34, 0.33, 0.30, 0.1]) y = np.array([1,1,0, 1, 1, 1, 0, 0, 1, 0, 1,0, 1, 0, 0, 0, 1 , 0, 1, 0]) # false positive rate fpr = [] # true positive rate tpr = [] # Iterate thresholds from 0.0, 0.01, ... 1.0 thresholds = np.arange(0.0, 1.01, .01) # get number of positive and negative examples in the dataset P = sum(y) N = len(y) - P # iterate through all thresholds and determine fraction of true positives # and false positives found this threshold for thresh in thresholds: FP=0 TP=0 for i in range(len(score)): if (score[i] > thresh): if y[i] == 1: TP = TP + 1 if y[i] == 0: FP = FP + 1 fpr.append(FP/float(N)) tpr.append(TP/float(P)) plt.scatter(fpr, tpr) plt.show()

Các câu vấn đáp trước nhận định rằng bạn thực sự đã tự tính toán TP/Sens. Đó là một ý tưởng tồi để thực hiện việc này một cách thủ công, thật thuận tiện và đơn giản để mắc lỗi với những tính toán, thay vì sử dụng hiệu suất cao thư viện cho tất cả những điều này.

hàm plot_roc trong scikit_lean thực hiện đúng chuẩn những gì bạn cần: ://scikit-learn.org/urdy/auto_examples/model_selection/plot_roc.html

Phần thiết yếu của mã là:

for i in range(n_classes): fpr[i], tpr[i], _ = roc_curve(y_test[:, i], y_score[:, i]) roc_auc[i] = auc(fpr[i], tpr[i]) from sklearn import metrics import numpy as np import matplotlib.pyplot as plt y_true = # true labels y_probas = # predicted results fpr, tpr, thresholds = metrics.roc_curve(y_true, y_probas, pos_label=0) # Print ROC curve plt.plot(fpr,tpr) plt.show() # Print AUC auc = np.trapz(tpr,fpr) print('AUC:', auc)

Tôi đã thực hiện một hiệu suất cao đơn giản có trong một gói cho đường cong ROC. Tôi mới khởi đầu thực hành học máy, vì vậy xin vui lòng cho tôi biết nếu mã này còn có vấn đề!

Hãy xem tập tin github readme để biết thêm rõ ràng! :)

https://github.com/bc123456/ROC

from sklearn.metrics import confusion_matrix, accuracy_score, roc_auc_score, roc_curve import matplotlib.pyplot as plt import seaborn as sns import numpy as np def plot_ROC(y_train_true, y_train_prob, y_test_true, y_test_prob): ''' a funciton to plot the ROC curve for train labels and test labels. Use the best threshold found in train set to classify items in test set. ''' fpr_train, tpr_train, thresholds_train = roc_curve(y_train_true, y_train_prob, pos_label =True) sum_sensitivity_specificity_train = tpr_train + (1-fpr_train) best_threshold_id_train = np.argmax(sum_sensitivity_specificity_train) best_threshold = thresholds_train[best_threshold_id_train] best_fpr_train = fpr_train[best_threshold_id_train] best_tpr_train = tpr_train[best_threshold_id_train] y_train = y_train_prob > best_threshold cm_train = confusion_matrix(y_train_true, y_train) acc_train = accuracy_score(y_train_true, y_train) auc_train = roc_auc_score(y_train_true, y_train) print 'Train Accuracy: %s ' %acc_train print 'Train AUC: %s ' %auc_train print 'Train Confusion Matrix:' print cm_train fig = plt.figure(figsize=(10,5)) ax = fig.add_subplot(121) curve1 = ax.plot(fpr_train, tpr_train) curve2 = ax.plot([0, 1], [0, 1], color="navy", linestyle="--") dot = ax.plot(best_fpr_train, best_tpr_train, marker="o", color="black") ax.text(best_fpr_train, best_tpr_train, s="(%.3f,%.3f)" %(best_fpr_train, best_tpr_train)) plt.xlim([0.0, 1.0]) plt.ylim([0.0, 1.0]) plt.xlabel('False Positive Rate') plt.ylabel('True Positive Rate') plt.title('ROC curve (Train), AUC = %.4f'%auc_train) fpr_test, tpr_test, thresholds_test = roc_curve(y_test_true, y_test_prob, pos_label =True) y_test = y_test_prob > best_threshold cm_test = confusion_matrix(y_test_true, y_test) acc_test = accuracy_score(y_test_true, y_test) auc_test = roc_auc_score(y_test_true, y_test) print 'Test Accuracy: %s ' %acc_test print 'Test AUC: %s ' %auc_test print 'Test Confusion Matrix:' print cm_test tpr_score = float(cm_test[1][1])/(cm_test[1][1] + cm_test[1][0]) fpr_score = float(cm_test[0][1])/(cm_test[0][0]+ cm_test[0][1]) ax2 = fig.add_subplot(122) curve1 = ax2.plot(fpr_test, tpr_test) curve2 = ax2.plot([0, 1], [0, 1], color="navy", linestyle="--") dot = ax2.plot(fpr_score, tpr_score, marker="o", color="black") ax2.text(fpr_score, tpr_score, s="(%.3f,%.3f)" %(fpr_score, tpr_score)) plt.xlim([0.0, 1.0]) plt.ylim([0.0, 1.0]) plt.xlabel('False Positive Rate') plt.ylabel('True Positive Rate') plt.title('ROC curve (Test), AUC = %.4f'%auc_test) plt.savefig('ROC', dpi = 500) plt.show() return best_threshold

Một biểu đồ roc mẫu được tạo bởi mã này

Tải thêm tài liệu liên quan đến nội dung bài viết Hướng dẫn dùng roc curce python programming python GridSearchCV ROC curve ROC curve sklearn Plot_confusion_matrix

Clip Hướng dẫn dùng roc curce python ?

Bạn vừa tham khảo Post Với Một số hướng dẫn một cách rõ ràng hơn về Clip Hướng dẫn dùng roc curce python tiên tiến nhất

Share Link Tải Hướng dẫn dùng roc curce python miễn phí

Hero đang tìm một số trong những Chia SẻLink Download Hướng dẫn dùng roc curce python miễn phí.

Thảo Luận thắc mắc về Hướng dẫn dùng roc curce python

Nếu sau khi đọc nội dung bài viết Hướng dẫn dùng roc curce python vẫn chưa hiểu thì hoàn toàn có thể lại Comments ở cuối bài để Mình lý giải và hướng dẫn lại nha #Hướng #dẫn #dùng #roc #curce #python - Hướng dẫn dùng roc curce python - 2022-10-01 07:24:11
Related posts:

Post a Comment

Previous Post Next Post

Discuss

×Close