您好,登錄后才能下訂單哦!
這篇“Python如何用鳶尾花數據繪制ROC和AUC曲線”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Python如何用鳶尾花數據繪制ROC和AUC曲線”文章吧。
很多學習器是為了測試樣本產生的一個實值或概率預測,然后將這個預測值與一個分類閾值(threshold)進行比較,若大于閾值則分為正類,否則為反類。主要看需要建立的模型側重于想用在測試數據的泛華性能的好壞。排序本身的質量好壞體系了綜合考慮學習去在不同任務下的“期望泛化性能”的好壞。ROC曲線則是從這個角度出發來研究學習器泛化性能。
ROC的全稱是“受試者工作特征”曲線,與P-R曲線相似。與P-R曲線使用查準率、查全率為縱、橫坐標不同,ROC曲線的縱軸是“真正例率”{簡稱TPR),橫軸是“假正例率”(簡稱FPR)二者分別定義為:
ROC曲線圖以真正例率為Y軸,假正例率為X軸。
進行檢驗判定ROC曲線性能的合理判據是比較ROC曲線下的面積,即AUC。從定義知AUC可通過對ROC曲線下各部分的面積求和而得,AUC可估算為:
從形式化看,AUC考慮的是樣本預測的排序質量,因此它與排序誤差有緊密聯系。因此存在排序損失。
形式基本和P-R曲線差不多,只是幾個數值要改一下。
代碼如下(示例):
from sklearn import svm, datasets from sklearn.model_selection import train_test_split from sklearn.metrics import roc_curve, auc from itertools import cycle from sklearn.preprocessing import label_binarize #標簽二值化LabelBinarizer,可以把yes和no轉化為0和1,或是把incident和normal轉化為0和1。 import numpy as np from sklearn.multiclass import OneVsRestClassifier iris = datasets.load_iris() # 鳶尾花數據導入 X = iris.data #每一列代表了萼片或花瓣的長寬,一共4列,每一列代表某個被測量的鳶尾植物,iris.shape=(150,4) y = iris.target #target是一個數組,存儲了data中每條記錄屬于哪一類鳶尾植物,所以數組的長度是150,所有不同值只有三個 random_state = np.random.RandomState(0) #給定狀態為0的隨機數組 y = label_binarize(y, classes=[0, 1, 2]) n_classes = y.shape[1] n_samples, n_features = X.shape X = np.c_[X, random_state.randn(n_samples, 200 * n_features)] #添加合并生成特征測試數據集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0) #根據此模型訓練簡單數據分類器 classifier = OneVsRestClassifier(svm.SVC(kernel='linear', probability=True, random_state=random_state))#線性分類支持向量機 y_score = classifier.fit(X_train, y_train).decision_function(X_test) #用一個分類器對應一個類別, 每個分類器都把其他全部的類別作為相反類別看待。 fpr = dict() tpr = dict() roc_auc = dict() for i in range(n_classes): fpr[i], tpr[i], _ = roc_curve(y_test[:, i], y_score[:, i]) #計算ROC曲線面積 roc_auc[i] = auc(fpr[i], tpr[i]) fpr["micro"], tpr["micro"], _ = roc_curve(y_test.ravel(), y_score.ravel()) roc_auc["micro"] = auc(fpr["micro"], tpr["micro"]) import matplotlib.pyplot as plt plt.figure() lw = 2 plt.plot(fpr[2], tpr[2], color='darkorange', lw=lw, label='ROC curve (area = %0.2f)' % roc_auc[2]) plt.plot([0, 1], [0, 1], color='navy', lw=lw, linestyle='--') plt.xlabel('FPR') plt.ylabel('TPR') plt.ylim([0.0, 1.0]) plt.xlim([0.0, 1.0]) plt.legend(loc="lower right") plt.title("Precision-Recall") plt.show()
以上就是關于“Python如何用鳶尾花數據繪制ROC和AUC曲線”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。