用AdaBoost和GBDT模型處理信用卡違約問題

以決策樹為基函數(shù)的提升方法稱為提升樹(boosting tree),包括GBDT,xgboost,adaboost。

Bootstrap是一種有放回的抽樣方法思想。
該思想的應(yīng)用有兩方面:bagging和boosting
雖然都是有放回的抽樣,但二者的區(qū)別在于:Bagging采用有放回的均勻取樣,而Boosting根據(jù)錯誤率來取樣(Boosting初始化時(shí)對每一個訓(xùn)練例賦相等的權(quán)重1/n议经,然后用該學(xué)算法對訓(xùn)練集訓(xùn)練t輪斧账,每次訓(xùn)練后,對訓(xùn)練失敗的訓(xùn)練例賦以較大的權(quán)重)煞肾,因此Boosting的分類精度要優(yōu)于Bagging咧织。Bagging的訓(xùn)練集的選擇是隨機(jī)的,各輪訓(xùn)練集之間相互獨(dú)立籍救,而Boostlng的各輪訓(xùn)練集的選擇與前面各輪的學(xué)習(xí)結(jié)果有關(guān)习绢。
Bagging主要關(guān)注降低方差,Boosting關(guān)注的主要是降低偏差蝙昙。

GBDT

(Gradient Boosting Decision Tree梯度提升樹) 又叫 MART(Multiple Additive Regression Tree)闪萄,是一種迭代的決策樹算法,該算法由多棵決策樹組成奇颠,所有樹的結(jié)論累加起來做最終答案败去。與其他有監(jiān)督算法一樣,可用于分類問題的識別和預(yù)測問題的解決烈拒。

該集成算法體現(xiàn)了3方面的優(yōu)勢圆裕,分別是提升Boosting,梯度Gradient荆几,和決策樹Decision Tree吓妆。提升是指將多個弱分類器通過線下組合實(shí)現(xiàn)強(qiáng)分類器的過程,梯度是指算法在提升過程中求解損失函數(shù)時(shí)增強(qiáng)了靈活性和便捷性吨铸,決策樹是指算法所使用的弱分類器為CART回歸樹行拢。

先討論決策樹,隨機(jī)森林是利用Bootstrap抽樣技術(shù)生成多個數(shù)據(jù)集诞吱,然后通過這些數(shù)據(jù)集構(gòu)造多棵決策樹剂陡,進(jìn)而運(yùn)用投票或平均的思想實(shí)現(xiàn)分類和預(yù)測問題的解決,但是這樣的隨機(jī)性會導(dǎo)致樹與樹之間并沒有太多的相關(guān)性狐胎,往往會導(dǎo)致隨機(jī)森林算法在擬合效果上不好鸭栖,于是有了“提升”的概念,即通過改變樣本點(diǎn)的權(quán)值和各個弱分類器的權(quán)重握巢,將這些弱分類器組合晕鹊,實(shí)現(xiàn)預(yù)測準(zhǔn)確性的突破,然后又為了求解損失函數(shù)容易和方便,又提出了GBDT溅话。

GBDT的核心在于累加所有樹的結(jié)果作為最終結(jié)果晓锻,回歸樹(預(yù)測實(shí)數(shù)值)是可以累加的,而分類樹(分類標(biāo)簽值)是沒辦法累加的飞几,所以GBDT中的樹都是回歸樹砚哆,不是分類樹,盡管GBDT調(diào)整后也可用于分類但不代表GBDT的樹是分類樹屑墨。即GDBT調(diào)整之后可以用于分類問題躁锁,但是內(nèi)部還是回歸樹。
這部分和決策樹中的是一樣的卵史,無非就是特征選擇战转。回歸樹用的是最小化均方誤差以躯,分類樹是用的是最小化基尼指數(shù)(CART)

以年齡為例:
回歸樹在每個節(jié)點(diǎn)(不一定是葉子節(jié)點(diǎn))都會得一個預(yù)測值槐秧,該預(yù)測值等于屬于這個節(jié)點(diǎn)的所有人年齡的平均值。分枝時(shí)窮舉每一個feature的每個閾值找最好的分割點(diǎn)忧设,但衡量最好的標(biāo)準(zhǔn)不再是最大熵刁标,而是最小化均方差--即(每個人的年齡-預(yù)測年齡)^2 的總和 / N,或者說是每個人的預(yù)測誤差平方和 除以 N址晕。這很好理解命雀,被預(yù)測出錯的人數(shù)越多,錯的越離譜斩箫,均方差就越大吏砂,通過最小化均方差能夠找到最靠譜的分枝依據(jù)。分枝直到每個葉子節(jié)點(diǎn)上人的年齡都唯一或者達(dá)到預(yù)設(shè)的終止條件(如葉子個數(shù)上限)乘客,若最終葉子節(jié)點(diǎn)上人的年齡不唯一狐血,則以該節(jié)點(diǎn)上所有人的平均年齡做為該葉子節(jié)點(diǎn)的預(yù)測年齡。

Boosting易核,迭代匈织,即通過迭代多棵樹來共同決策。他的思想來源是三個臭皮匠頂個諸葛亮牡直,Boost是"提升"的意思缀匕,一般Boosting算法都是一個迭代的過程,每一次新的訓(xùn)練都是為了改進(jìn)上一次的結(jié)果碰逸。GBDT是把所有樹的結(jié)論累加起來做最終結(jié)論的乡小,每棵樹的結(jié)論并不是年齡本身,而是年齡的一個累加量饵史。GBDT的核心就在于满钟,每一棵樹學(xué)的是之前所有樹結(jié)論和的殘差胜榔,這個殘差就是一個加預(yù)測值后能得真實(shí)值的累加量。比如A的真實(shí)年齡是18歲湃番,但第一棵樹的預(yù)測年齡是12歲夭织,差了6歲,即殘差為6歲吠撮。那么在第二棵樹里我們把A的年齡設(shè)為6歲去學(xué)習(xí)尊惰,如果第二棵樹真的能把A分到6歲的葉子節(jié)點(diǎn),那累加兩棵樹的結(jié)論就是A的真實(shí)年齡泥兰;如果第二棵樹的結(jié)論是5歲弄屡,則A仍然存在1歲的殘差,第三棵樹里A的年齡就變成1歲逾条,繼續(xù)學(xué)。

是boosting投剥,但不是Adaboost师脂。GBDT不是Adaboost Decistion Tree。就像提到?jīng)Q策樹大家會想起C4.5江锨,提到boost多數(shù)人也會想到Adaboost吃警。Adaboost是另一種boost方法,它按分類對錯啄育,分配不同的weight酌心,計(jì)算cost function時(shí)使用這些weight,從而讓“錯分的樣本權(quán)重越來越大挑豌,使它們更被重視”安券。Bootstrap也有類似思想,它在每一步迭代時(shí)不改變模型本身氓英,也不計(jì)算殘差侯勉,而是從N個樣本訓(xùn)練集中按一定概率重新抽取N個樣本出來(單個樣本可以被重復(fù)抽樣),對這N個新的樣本再訓(xùn)練一輪铝阐。由于數(shù)據(jù)集變了迭代模型訓(xùn)練結(jié)果也不一樣址貌,而一個樣本被前面分錯的越厲害,它的概率就被設(shè)的越高徘键,這樣就能同樣達(dá)到逐步關(guān)注被分錯的樣本练对,逐步完善的效果。Adaboost的方法被實(shí)踐證明是一種很好的防止過擬合的方法吹害。Adaboost是一種最具代表的提升樹螟凭。Adaboost也可以用于分類或者回歸。

GBDT是提升算法的擴(kuò)展板它呀,在原始的提升算法中赂摆,如果損失函數(shù)為平方損失或指數(shù)損失挟憔,求解損失函數(shù)的最小值問題會很簡單,但如果損失函數(shù)為更一般的函數(shù)(比如絕對值損失函數(shù)獲Huber損失函數(shù)),目標(biāo)值的求解會復(fù)雜烟号,F(xiàn)reidman提出了梯度提升算法绊谭,即在第m輪基礎(chǔ)模型中,利用損失函數(shù)的負(fù)梯度值作為該輪基礎(chǔ)模型損失值的近似汪拥,并利用這個近似值構(gòu)建下一輪基礎(chǔ)模型达传。

Gradient體現(xiàn)在:無論前面一顆樹的cost function是什么,是均方差還是均差迫筑,只要它以誤差作為衡量標(biāo)準(zhǔn)宪赶,那么殘差向量都是它的全局最優(yōu)方向,這就是Gradient脯燃。

GBDT適用范圍:
GBDT可以適用于回歸問題(線性和非線性)搂妻,相對于logistic regression僅能用于線性回歸,GBDT適用面更廣辕棚。
GBDT也可用于二分類問題(設(shè)定閾值欲主,大于為正,否則為負(fù))和多分類問題逝嚎。

優(yōu)點(diǎn):
參數(shù)少扁瓢,準(zhǔn)確率高,運(yùn)算時(shí)間少补君,對異常數(shù)據(jù)穩(wěn)定引几。

GBDT和隨機(jī)森林
GBDT和隨機(jī)森林的相同點(diǎn):
都是由多棵樹組成
最終的結(jié)果都由多棵樹共同決定

GBDT和隨機(jī)森林的不同點(diǎn):
組成隨機(jī)森林的可以是分類樹、回歸樹挽铁;組成GBDT只能是回歸樹
組成隨機(jī)森林的樹可以并行生成(Bagging)伟桅;GBDT只能串行生成(Boosting)
對于最終的輸出結(jié)果而言,隨機(jī)森林使用多數(shù)投票或者簡單平均叽掘;而GBDT則是將所有結(jié)果累加起來贿讹,或者加權(quán)累加起來
隨機(jī)森林對異常值不敏感,GBDT對異常值非常敏感
隨機(jī)森林對訓(xùn)練集一視同仁權(quán)值一樣够掠,GBDT是基于權(quán)值的弱分類器的集成
隨機(jī)森林通過減小模型的方差提高性能民褂,GBDT通過減少模型偏差提高性能

注:
GBDT相比于決策樹有什么優(yōu)點(diǎn)
泛化性能更好!GBDT的最大好處在于疯潭,每一步的殘差計(jì)算其實(shí)變相的增大了分錯樣本的權(quán)重赊堪,而已經(jīng)分對的樣本則都趨向于0。這樣后面就更加專注于那些分錯的樣本竖哩。

Gradient體現(xiàn)在哪里哭廉?
可以理解為殘差是全局最優(yōu)的絕對方向,類似于求梯度相叁。

AdaBoost

通過組合多個分類器(可以不同)的分類結(jié)果遵绰,獲得了比簡單的分類器更好的效果辽幌。選擇不同的分類器可以緩解同一分類器可能放大的過擬合問題。

有三種集成方法:Bagging椿访、Boosting 和 Random Forset乌企。Bagging通過隨機(jī)抽樣 S 次(有放回的抽樣),得到 S 個與原數(shù)據(jù)集大小相同的數(shù)據(jù)集成玫,作用到 S 個分類器上加酵,最后根據(jù)投票決定分到哪一個類;Boosting 在 Bagging 上更進(jìn)一步哭当,它在數(shù)據(jù)集上順序應(yīng)用了多個不同的分類器猪腕。

Boosting 中最流行的的一個算法是 AdaBoost,是一種迭代算法钦勘,其核心思想是針對同一個訓(xùn)練集訓(xùn)練不同的分類器(弱分類器)陋葡,以弱學(xué)習(xí)器作為基分類器,并且輸入數(shù)據(jù)彻采,使其通過權(quán)重向量進(jìn)行加權(quán)腐缤。在第一次迭代中,所有數(shù)據(jù)等權(quán)重颊亮,在后續(xù)迭代中柴梆,前次迭代中分錯的數(shù)據(jù)的權(quán)值增大陨溅,將修改過權(quán)值的新數(shù)據(jù)集送給下層分類器進(jìn)行訓(xùn)練终惑,最后將每次訓(xùn)練得到的分類器最后融合起來,作為最后的決策分類器门扇。這種針對錯誤的調(diào)節(jié)能力正是 AdaBoost 的長處雹有。

AdaBoost的具體做法:
(1)提高那些被前一輪弱分類器錯誤分類樣本的權(quán)值,降低那些被正確分類的樣本的權(quán)值臼寄。這樣一來霸奕,那些沒有得到正確分類的數(shù)據(jù),由于其權(quán)值的加大而受到后一輪弱分類器的關(guān)注吉拳。
(2)采用加權(quán)多數(shù)表決质帅。具體的,加大分類錯誤率低的分類器的權(quán)值留攒,使其在表決中起較大作用煤惩,減少分類誤差率大的弱分類器的權(quán)值,使其在表決中起較小作用炼邀。

三部分組成:
(1)分類器權(quán)重更新公式
(2)樣本分布(也就是樣本權(quán)重)更新公式
(3)加性模型魄揉。 最小化指數(shù)損失函數(shù)

優(yōu)點(diǎn):

很好的利用了弱分類器進(jìn)行級聯(lián);
可以將不同的分類算法作為弱分類器拭宁;
AdaBoost 具有很高的精度洛退;
相對于 Bagging 算法和 Random Forest 算法瓣俯,AdaBoost 充分考慮的每個分類器的權(quán)重;
不改變所給的訓(xùn)練數(shù)據(jù)兵怯,而不斷改變訓(xùn)練數(shù)據(jù)的權(quán)值分布彩匕,使得訓(xùn)練數(shù)據(jù)在基本分類器的學(xué)習(xí)中起不同的作用。這是AdaBoost的一個特點(diǎn)摇零;
利用基本分類器的加權(quán)線性組合構(gòu)建最終分類器推掸,是AdaBoost的另一個特點(diǎn);
AdaBoost被實(shí)踐證明是一種很好的防止過擬合的方法驻仅;
泛化錯誤率低谅畅,易編碼,可以應(yīng)用在大部分分類器上噪服,無參數(shù)調(diào)整毡泻。

缺點(diǎn):
AdaBoost 迭代次數(shù)也就是弱分類器數(shù)目不太好設(shè)定,可以使用交叉驗(yàn)證來進(jìn)行確定粘优;
數(shù)據(jù)不平衡導(dǎo)致分類精度下降仇味;
訓(xùn)練比較耗時(shí),每次重新選擇當(dāng)前分類器最好切分點(diǎn)雹顺;
AdaBoost只適用于二分類問題丹墨;
對離散點(diǎn)敏感。

應(yīng)用領(lǐng)域:
模式識別嬉愧、計(jì)算機(jī)視覺領(lǐng)域贩挣,用于二分類和多分類場景。

# 導(dǎo)入第三方包
import pandas as pd
import matplotlib.pyplot as plt

# 讀入數(shù)據(jù)
default = pd.read_excel(r'F:\default.xls')
default.head()


自變量包括客戶的性別没酣、受教育水平王财、年齡、婚姻狀況裕便、信用額度绒净、6個月的歷史還款狀態(tài)、賬單金額以及還款金額偿衰,因變量y表示用戶在下個月的信用卡還款是否存在違約的情況(1表示違約挂疆,9表示不違約)

首先查看因變量中各類別的比例差異,通過餅圖:

# 數(shù)據(jù)集中是否違約的客戶比例
# 為確保繪制的餅圖為圓形下翎,需執(zhí)行如下代碼
plt.axes(aspect = 'equal')
# 中文亂碼和坐標(biāo)軸負(fù)號的處理
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False
#重命名因變量
default.rename(columns={'default payment next month':'y'},inplace=True)
# 統(tǒng)計(jì)客戶是否違約的頻數(shù)
counts = default.y.value_counts()
# 繪制餅圖
plt.pie(x = counts, # 繪圖數(shù)據(jù)
        labels=pd.Series(counts.index).map({0:'不違約',1:'違約'}), # 添加文字標(biāo)簽
        autopct='%.1f%%' # 設(shè)置百分比的格式缤言,這里保留一位小數(shù)
       )
# 顯示圖形
plt.show()

違約客戶比例占比22.1%,不違約客戶占比77.9%漏设,總體來說墨闲,兩個類別的比例不算失衡。

一般而言郑口,如果兩個類別比例為9:1鸳碧,則認(rèn)為失衡盾鳞,為99:1,認(rèn)為嚴(yán)重失衡瞻离。

拆分?jǐn)?shù)據(jù)

# 將數(shù)據(jù)集拆分為訓(xùn)練集和測試集
# 導(dǎo)入第三方包
from sklearn import model_selection
from sklearn import ensemble
from sklearn import metrics

# 排除數(shù)據(jù)集中的ID變量和因變量腾仅,剩余的數(shù)據(jù)用作自變量X
X = default.drop(['ID','y'], axis = 1)
y = default.y
# 數(shù)據(jù)拆分
X_train,X_test,y_train,y_test = model_selection.train_test_split(X,y,test_size = 0.25, random_state = 1234)

構(gòu)建AdaBoost模型

# 構(gòu)建AdaBoost算法的類
AdaBoost1 = ensemble.AdaBoostClassifier()
# 算法在訓(xùn)練數(shù)據(jù)集上的擬合
AdaBoost1.fit(X_train,y_train)
# 算法在測試數(shù)據(jù)集上的預(yù)測
pred1 = AdaBoost1.predict(X_test)

# 返回模型的預(yù)測效果
print('模型的準(zhǔn)確率為:\n',metrics.accuracy_score(y_test, pred1))
print('模型的評估報(bào)告:\n',metrics.classification_report(y_test, pred1))

使用模型默認(rèn)參數(shù),準(zhǔn)確率為81.25%套利,預(yù)測客戶違約(y=1)的精確率為68%推励,覆蓋率為32%,繪制ROC曲線

# 計(jì)算客戶違約的概率值肉迫,用于生成ROC曲線的數(shù)據(jù)
y_score = AdaBoost1.predict_proba(X_test)[:,1]
fpr,tpr,threshold = metrics.roc_curve(y_test, y_score)
# 計(jì)算AUC的值
roc_auc = metrics.auc(fpr,tpr)

# 繪制面積圖
plt.stackplot(fpr, tpr, color='steelblue', alpha = 0.5, edgecolor = 'black')
# 添加邊際線
plt.plot(fpr, tpr, color='black', lw = 1)
# 添加對角線
plt.plot([0,1],[0,1], color = 'red', linestyle = '--')
# 添加文本信息
plt.text(0.5,0.3,'ROC curve (area = %0.2f)' % roc_auc)
# 添加x軸與y軸標(biāo)簽
plt.xlabel('1-Specificity')
plt.ylabel('Sensitivity')
# 顯示圖形
plt.show()

面積AUC為0.78验辞,不到0.8,通過調(diào)整參數(shù)喊衫,即交叉驗(yàn)證的方法來選擇相對合理的參數(shù)值跌造,并且可以進(jìn)一步做特征篩選(按照重要因素)

# 自變量的重要性排序
importance = pd.Series(AdaBoost1.feature_importances_, index = X.columns)
importance.sort_values().plot(kind = 'barh')
plt.show()

取出重要性比較高的變量再利用交叉驗(yàn)證選擇參數(shù)建模

importance[importance>0.02]
importance[importance>0.02].index
# 取出重要性比較高的自變量建模
predictors = list(importance[importance>0.02].index)
predictors

先對基礎(chǔ)模型決策樹DecisionTreeClassifier的參數(shù)進(jìn)行調(diào)優(yōu)

# 通過網(wǎng)格搜索法選擇基礎(chǔ)模型所對應(yīng)的合理參數(shù)組合
# 導(dǎo)入第三方包
from sklearn.model_selection import GridSearchCV
from sklearn.tree import DecisionTreeClassifier

max_depth = [3,4,5,6]
params1 = {'base_estimator__max_depth':max_depth}
base_model = GridSearchCV(estimator = ensemble.AdaBoostClassifier(base_estimator = DecisionTreeClassifier()),
                          param_grid= params1, scoring = 'roc_auc', cv = 5, n_jobs = 4, verbose = 1)
base_model.fit(X_train[predictors],y_train)
# 返回參數(shù)的最佳組合和對應(yīng)AUC值
base_model.best_params_, base_model.best_score_

經(jīng)過5重交叉驗(yàn)證,最大的樹深度選擇為3

再對提升樹AdaBoostClassifier模型的參數(shù)調(diào)優(yōu)

# 通過網(wǎng)格搜索法選擇提升樹的合理參數(shù)組合
# 導(dǎo)入第三方包
from sklearn.model_selection import GridSearchCV

n_estimators = [100,200,300]
learning_rate = [0.01,0.05,0.1,0.2]
params2 = {'n_estimators':n_estimators,'learning_rate':learning_rate}
adaboost = GridSearchCV(estimator = ensemble.AdaBoostClassifier(base_estimator = DecisionTreeClassifier(max_depth = 3)),
                        param_grid= params2, scoring = 'roc_auc', cv = 5, n_jobs = 4, verbose = 1)
adaboost.fit(X_train[predictors] ,y_train)
# 返回參數(shù)的最佳組合和對應(yīng)AUC值
adaboost.best_params_, adaboost.best_score_

經(jīng)過5重交叉驗(yàn)證族购,AdaBoost算法的最佳基礎(chǔ)模型個數(shù)為300壳贪,學(xué)習(xí)率為0..01

基于以上調(diào)參結(jié)果重新構(gòu)造模型

# 使用最佳的參數(shù)組合構(gòu)建AdaBoost模型
AdaBoost2 = ensemble.AdaBoostClassifier(base_estimator = DecisionTreeClassifier(max_depth = 3),
                                       n_estimators = 300, learning_rate = 0.01)
# 算法在訓(xùn)練數(shù)據(jù)集上的擬合
AdaBoost2.fit(X_train[predictors],y_train)
# 算法在測試數(shù)據(jù)集上的預(yù)測
pred2 = AdaBoost2.predict(X_test[predictors])

# 返回模型的預(yù)測效果
print('模型的準(zhǔn)確率為:\n',metrics.accuracy_score(y_test, pred2))
print('模型的評估報(bào)告:\n',metrics.classification_report(y_test, pred2))

準(zhǔn)確率只提升了0.35%,可以考慮其他模型

# 計(jì)算正例的預(yù)測概率,用于生成ROC曲線的數(shù)據(jù)
y_score = AdaBoost2.predict_proba(X_test[predictors])[:,1]
fpr,tpr,threshold = metrics.roc_curve(y_test, y_score)
# 計(jì)算AUC的值
roc_auc = metrics.auc(fpr,tpr)

# 繪制面積圖
plt.stackplot(fpr, tpr, color='steelblue', alpha = 0.5, edgecolor = 'black')
# 添加邊際線
plt.plot(fpr, tpr, color='black', lw = 1)
# 添加對角線
plt.plot([0,1],[0,1], color = 'red', linestyle = '--')
# 添加文本信息
plt.text(0.5,0.3,'ROC curve (area = %0.2f)' % roc_auc)
# 添加x軸與y軸標(biāo)簽
plt.xlabel('1-Specificity')
plt.ylabel('Sensitivity')
# 顯示圖形
plt.show()

構(gòu)建GBDT模型

# 運(yùn)用網(wǎng)格搜索法選擇梯度提升樹的合理參數(shù)組合
learning_rate = [0.01,0.05,0.1,0.2]
n_estimators = [100,300,500]
max_depth = [3,4,5,6]
params = {'learning_rate':learning_rate,'n_estimators':n_estimators,'max_depth':max_depth}
gbdt_grid = GridSearchCV(estimator = ensemble.GradientBoostingClassifier(),
                         param_grid= params, scoring = 'roc_auc', cv = 5, n_jobs = 4, verbose = 1)
gbdt_grid.fit(X_train[predictors],y_train)
# 返回參數(shù)的最佳組合和對應(yīng)AUC值
gbdt_grid.best_params_, gbdt_grid.best_score_
# 基于最佳參數(shù)組合的GBDT模型寝杖,對測試數(shù)據(jù)集進(jìn)行預(yù)測
pred = gbdt_grid.predict(X_test[predictors])
# 返回模型的預(yù)測效果
print('模型的準(zhǔn)確率為:\n',metrics.accuracy_score(y_test, pred))
print('模型的評估報(bào)告:\n',metrics.classification_report(y_test, pred))

與AdaBoost結(jié)果一致违施,說明GBDT采用一階導(dǎo)函數(shù)的值近似殘差是合理的

# 計(jì)算違約客戶的概率值,用于生成ROC曲線的數(shù)據(jù)
y_score = gbdt_grid.predict_proba(X_test[predictors])[:,1]
fpr,tpr,threshold = metrics.roc_curve(y_test, y_score)
# 計(jì)算AUC的值
roc_auc = metrics.auc(fpr,tpr)

# 繪制面積圖
plt.stackplot(fpr, tpr, color='steelblue', alpha = 0.5, edgecolor = 'black')
# 添加邊際線
plt.plot(fpr, tpr, color='black', lw = 1)
# 添加對角線
plt.plot([0,1],[0,1], color = 'red', linestyle = '--')
# 添加文本信息
plt.text(0.5,0.3,'ROC curve (area = %0.2f)' % roc_auc)
# 添加x軸與y軸標(biāo)簽
plt.xlabel('1-Specificity')
plt.ylabel('Sensitivity')
# 顯示圖形
plt.show()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末瑟幕,一起剝皮案震驚了整個濱河市磕蒲,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌收苏,老刑警劉巖亿卤,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件愤兵,死亡現(xiàn)場離奇詭異鹿霸,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)秆乳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進(jìn)店門懦鼠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人屹堰,你說我怎么就攤上這事肛冶。” “怎么了扯键?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵睦袖,是天一觀的道長。 經(jīng)常有香客問我荣刑,道長馅笙,這世上最難降的妖魔是什么伦乔? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮董习,結(jié)果婚禮上烈和,老公的妹妹穿的比我還像新娘。我一直安慰自己皿淋,他們只是感情好招刹,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著窝趣,像睡著了一般疯暑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上哑舒,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天缰儿,我揣著相機(jī)與錄音,去河邊找鬼散址。 笑死乖阵,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的预麸。 我是一名探鬼主播瞪浸,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼吏祸!你這毒婦竟也來了对蒲?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤贡翘,失蹤者是張志新(化名)和其女友劉穎蹈矮,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鸣驱,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡泛鸟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了踊东。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片北滥。...
    茶點(diǎn)故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖闸翅,靈堂內(nèi)的尸體忽然破棺而出再芋,到底是詐尸還是另有隱情,我是刑警寧澤坚冀,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布济赎,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏司训。R本人自食惡果不足惜华蜒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望豁遭。 院中可真熱鬧叭喜,春花似錦、人聲如沸蓖谢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春蜕该,著一層夾襖步出監(jiān)牢的瞬間坑夯,已是汗流浹背徐裸。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓级乍,卻偏偏與公主長得像,于是被迫代替她去往敵國和親帚湘。 傳聞我的和親對象是個殘疾皇子玫荣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內(nèi)容