欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python機(jī)器學(xué)習(xí)利用鳶尾花數(shù)據(jù)繪制ROC和AUC曲線(xiàn)

 更新時(shí)間:2023年02月07日 16:33:51   作者:fanstuck  
這篇文章主要為大家介紹了Python機(jī)器學(xué)習(xí)利用鳶尾花數(shù)據(jù)繪制ROC和AUC曲線(xiàn)實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

一、ROC與AUC

很多學(xué)習(xí)器是為了測(cè)試樣本產(chǎn)生的一個(gè)實(shí)值或概率預(yù)測(cè),然后將這個(gè)預(yù)測(cè)值與一個(gè)分類(lèi)閾值(threshold)進(jìn)行比較,若大于閾值則分為正類(lèi),否則為反類(lèi)。主要看需要建立的模型側(cè)重于想用在測(cè)試數(shù)據(jù)的泛華性能的好壞。排序本身的質(zhì)量好壞體系了綜合考慮學(xué)習(xí)去在不同任務(wù)下的“期望泛化性能”的好壞。ROC曲線(xiàn)則是從這個(gè)角度出發(fā)來(lái)研究學(xué)習(xí)器泛化性能。

1.ROC

ROC的全稱(chēng)是“受試者工作特征”曲線(xiàn),與P-R曲線(xiàn)相似。與P-R曲線(xiàn)使用查準(zhǔn)率、查全率為縱、橫坐標(biāo)不同,ROC曲線(xiàn)的縱軸是“真正例率”{簡(jiǎn)稱(chēng)TPR),橫軸是“假正例率”(簡(jiǎn)稱(chēng)FPR)二者分別定義為:

ROC曲線(xiàn)圖以真正例率為Y軸,假正例率為X軸。

2.AUC

進(jìn)行檢驗(yàn)判定ROC曲線(xiàn)性能的合理判據(jù)是比較ROC曲線(xiàn)下的面積,即AUC。從定義知AUC可通過(guò)對(duì)ROC曲線(xiàn)下各部分的面積求和而得,AUC可估算為:

從形式化看,AUC考慮的是樣本預(yù)測(cè)的排序質(zhì)量,因此它與排序誤差有緊密聯(lián)系。因此存在排序損失。

二、代碼實(shí)現(xiàn)

形式基本和P-R曲線(xiàn)差不多,只是幾個(gè)數(shù)值要改一下。

代碼如下(示例):

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 #標(biāo)簽二值化LabelBinarizer,可以把yes和no轉(zhuǎn)化為0和1,或是把incident和normal轉(zhuǎn)化為0和1。
import numpy as np
from sklearn.multiclass import OneVsRestClassifier
iris = datasets.load_iris()
# 鳶尾花數(shù)據(jù)導(dǎo)入
X = iris.data
#每一列代表了萼片或花瓣的長(zhǎng)寬,一共4列,每一列代表某個(gè)被測(cè)量的鳶尾植物,iris.shape=(150,4)
y = iris.target
#target是一個(gè)數(shù)組,存儲(chǔ)了data中每條記錄屬于哪一類(lèi)鳶尾植物,所以數(shù)組的長(zhǎng)度是150,所有不同值只有三個(gè)
random_state = np.random.RandomState(0)
#給定狀態(tài)為0的隨機(jī)數(shù)組
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)]
#添加合并生成特征測(cè)試數(shù)據(jù)集
X_train, X_test, y_train, y_test = train_test_split(X, y,
                                                    test_size=0.25,
                                                    random_state=0)
#根據(jù)此模型訓(xùn)練簡(jiǎn)單數(shù)據(jù)分類(lèi)器
classifier = OneVsRestClassifier(svm.SVC(kernel='linear', probability=True,
                                 random_state=random_state))#線(xiàn)性分類(lèi)支持向量機(jī)
y_score = classifier.fit(X_train, y_train).decision_function(X_test)
#用一個(gè)分類(lèi)器對(duì)應(yīng)一個(gè)類(lèi)別, 每個(gè)分類(lèi)器都把其他全部的類(lèi)別作為相反類(lèi)別看待。
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])
    #計(jì)算ROC曲線(xiàn)面積
    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機(jī)器學(xué)習(xí)利用鳶尾花數(shù)據(jù)繪制ROC和AUC曲線(xiàn)的詳細(xì)內(nèi)容,更多關(guān)于Python數(shù)據(jù)繪制ROC AUC的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python中的列表推導(dǎo)淺析

    python中的列表推導(dǎo)淺析

    這篇文章主要介紹了python中的列表推導(dǎo),需要的朋友可以參考下
    2014-04-04
  • 關(guān)于pandas-profiling的降級(jí)之旅

    關(guān)于pandas-profiling的降級(jí)之旅

    這篇文章主要介紹了關(guān)于pandas-profiling的降級(jí)之旅,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Python寫(xiě)的英文字符大小寫(xiě)轉(zhuǎn)換代碼示例

    Python寫(xiě)的英文字符大小寫(xiě)轉(zhuǎn)換代碼示例

    這篇文章主要介紹了Python寫(xiě)的英文字符大小寫(xiě)轉(zhuǎn)換代碼示例,本文例子相對(duì)簡(jiǎn)單,本文直接給出代碼實(shí)例,需要的朋友可以參考下
    2015-03-03
  • Python3 mmap內(nèi)存映射文件示例解析

    Python3 mmap內(nèi)存映射文件示例解析

    這篇文章主要介紹了Python3 mmap內(nèi)存映射文件示例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • python 如何在list中找Topk的數(shù)值和索引

    python 如何在list中找Topk的數(shù)值和索引

    這篇文章主要介紹了python 如何在list中找Topk的數(shù)值和索引的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • python數(shù)據(jù)爬下來(lái)保存的位置

    python數(shù)據(jù)爬下來(lái)保存的位置

    在本篇文章里小編給大家整理的是關(guān)于python數(shù)據(jù)爬下來(lái)保存的位置,需要的朋友們可以參考下。
    2020-02-02
  • 拿來(lái)就用!Python批量合并PDF的示例代碼

    拿來(lái)就用!Python批量合并PDF的示例代碼

    這篇文章主要介紹了Python批量合并PDF的示例代碼,幫助大家更好的理解和學(xué)習(xí)Python,感興趣的朋友可以了解下
    2020-08-08
  • 如何爬取通過(guò)ajax加載數(shù)據(jù)的網(wǎng)站

    如何爬取通過(guò)ajax加載數(shù)據(jù)的網(wǎng)站

    這篇文章主要介紹了如何爬取通過(guò)ajax加載數(shù)據(jù)的網(wǎng)站,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • 用Python編寫(xiě)一個(gè)國(guó)際象棋AI程序

    用Python編寫(xiě)一個(gè)國(guó)際象棋AI程序

    在這篇文章中我會(huì)介紹這個(gè)AI如何工作,每一個(gè)部分做什么,它為什么能那樣工作起來(lái)。你可以直接通讀本文,或者去下載代碼,邊讀邊看代碼。雖然去看看其他文件中有什么AI依賴(lài)的類(lèi)也可能有幫助,但是AI部分全都在A(yíng)I.py文件中
    2014-11-11
  • Python 深入理解yield

    Python 深入理解yield

    yield的英文單詞意思是生產(chǎn),剛接觸Python的時(shí)候感到非常困惑,一直沒(méi)弄明白yield的用法。
    2008-09-09

最新評(píng)論