簡述 python使用sklearn畫ROC曲線

2021-08-25 08:58:23 字數 2487 閱讀 9254

使用sklearn的一系列方法後可以很方便的繪製處roc曲線,這裡簡單實現以下。

主要是利用混淆矩陣中的知識作為繪製的資料(如果不是很懂可以先看看這裡的基礎):

tpr(ture positive rate):真陽率                                   影象的縱座標

fpr(false positive rate):陽率(偽陽率)                     影象的橫座標

mean_tpr:累計真陽率求平均值

mean_fpr:累計陽率求平均值

該示例每一步有詳細說明。

import numpy as np

import matplotlib.pyplot as plt

from sklearn import svm, datasets

from sklearn.metrics import roc_curve, auc

from sklearn.model_selection import stratifiedkfold

iris = datasets.load_iris()

x = iris.data

y = iris.target

x, y = x[y != 2], y[y != 2] # 去掉了label為2,label只能二分,才可以。

n_samples, n_features = x.shape

# 增加雜訊特徵

random_state = np.random.randomstate(0)

x = np.c_[x, random_state.randn(n_samples, 200 * n_features)]

cv = stratifiedkfold(n_splits=6) #匯入該模型,後面將資料劃分6份

classifier = svm.svc(kernel='linear', probability=true,random_state=random_state) # svc模型 可以換作adaboost模型試試

# 畫平均roc曲線的兩個引數

mean_tpr = 0.0 # 用來記錄畫平均roc曲線的資訊

mean_fpr = np.linspace(0, 1, 100)

cnt = 0

for i, (train, test) in enumerate(cv.split(x,y)): #利用模型劃分資料集和目標變數 為一一對應的下標

cnt +=1

probas_ = classifier.fit(x[train], y[train]).predict_proba(x[test]) # 訓練模型後**每條樣本得到兩種結果的概率

fpr, tpr, thresholds = roc_curve(y[test], probas_[:, 1]) # 該函式得到偽正例、真正例、閾值,這裡只使用前兩個

mean_tpr += np.interp(mean_fpr, fpr, tpr) # 插值函式 interp(x座標,每次x增加距離,y座標) 累計每次迴圈的總值後面求平均值

mean_tpr[0] = 0.0 # 將第乙個真正例=0 以0為起點

roc_auc = auc(fpr, tpr) # 求auc面積

plt.plot(fpr, tpr, lw=1, label='roc fold (area = )'.format(i, roc_auc)) # 畫出當前分割資料的roc曲線

plt.plot([0, 1], [0, 1], '--', color=(0.6, 0.6, 0.6), label='luck') # 畫對角線

mean_tpr /= cnt # 求陣列的平均值

mean_tpr[-1] = 1.0 # 座標最後乙個點為(1,1) 以1為終點

mean_auc = auc(mean_fpr, mean_tpr)

plt.plot(mean_fpr, mean_tpr, 'k--',label='mean roc (area = )'.format(mean_auc), lw=2)

plt.xlim([-0.05, 1.05]) # 設定x、y軸的上下限,設定寬一點,以免和邊緣重合,可以更好的觀察影象的整體

plt.ylim([-0.05, 1.05])

plt.xlabel('false positive rate')

plt.ylabel('true positive rate') # 可以使用中文,但需要匯入一些庫即字型

畫出了6次迴圈的roc曲線,以及最後的平均roc曲線。

簡述mysql應用 MYSQL使用簡述

您可能感興趣的話題 mssql 一 連線mysql。1 例1 連線到本機上的mysql。首先在開啟dos視窗,然後進入目錄 mysqlbin,再鍵入命令mysql uroot p,回車後提示你輸密碼,如果剛安裝好mysql,超級使用者root是沒有密碼的,故直接回車即可進入到mysql中了,mysq...

簡述mysql事件作用 MYSQL使用簡述

1 如果你打命令時,回車後發現忘記加分號,你無須重打一遍命令,只要打個分號回車就可以了。也就是說你可以把乙個完整的命令分成幾行來打,完後用分號作結束標誌就ok。2 你可以使用游標上下鍵調出以前的命令。但以前我用過的乙個mysql舊版本不支援。我現在用的是mysql 3.23.27 beta win。...

簡述python檔案操作

讀寫檔案是最常見的io操作,python內建了讀寫檔案的函式,用法和c是相容的.讀寫檔案前,我們先必須了解一下,在磁碟上讀寫檔案的功能都是由作業系統提供的,現代作業系統不允許普通的程式直接操作磁碟,所以讀寫檔案就是請求作業系統開啟乙個檔案物件 通常稱為檔案描述符 然後通過作業系統提供的介面從這個檔案...