国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

拓端tecdat|Python信貸風(fēng)控模型:梯度提升Adaboost,XGBoost,SGD, GBOOST, SVC,隨機(jī)森

2022-05-04 11:17 作者:拓端tecdat  | 我要投稿

原文鏈接:http://tecdat.cn/?p=26184?

原文出處:拓端數(shù)據(jù)部落公眾號(hào)

在此數(shù)據(jù)集中,我們必須預(yù)測(cè)信貸的違約支付,并找出哪些變量是違約支付的最強(qiáng)預(yù)測(cè)因子?以及不同人口統(tǒng)計(jì)學(xué)變量的類別,拖欠還款的概率如何變化?

有25個(gè)變量:

1. ID:?每個(gè)客戶的ID
2. LIMIT_BAL:?金額
3. SEX:?性別(1 =男,2 =女)
4.教育程度:(1 =研究生,2 =本科,3 =高中,4 =其他,5 =未知)
5.婚姻:?婚姻狀況(1 =已婚,2 =單身,3 =其他)
6.年齡:
7.??PAY_0:??2005年9月的還款狀態(tài)(-1 =正常付款,1 =延遲一個(gè)月的付款,2 =延遲兩個(gè)月的付款,8 =延遲八個(gè)月的付款,9 =延遲9個(gè)月以上的付款)
8. PAY_2:??2005年8月的還款狀態(tài)(與上述相同)
9. PAY_3:?2005年7月的還款狀態(tài)(與上述相同)
10. PAY_4:??2005年6月的還款狀態(tài)(與上述相同)
11. PAY_5:??2005年5月的還款狀態(tài)(與上述相同)
12. PAY_6:?還款狀態(tài)2005年4月?的賬單(與上述相同)
13. BILL_AMT1:?2005年9月的賬單金額
14. BILL_AMT2:??2005年8月的賬單金額
15. BILL_AMT3:?賬單金額2005年7月?的賬單金額
16. BILL_AMT4:?2005年6月的賬單金額
17. BILL_AMT5:??2005年5月的賬單金額
18. BILL_AMT6:?2005年4月
19. PAY_AMT1??2005年9月,先前支付金額
20. PAY_AMT2??2005年8月,以前支付的金額
21. PAY_AMT3:?2005年7月的先前付款
22. PAY_AMT4:??2005年6月的先前付款
23. PAY_AMT5:??2005年5月的先前付款
24. PAY_AMT6:?先前的付款額在2005年4月
25. default.payment.next.month:?默認(rèn)付款(1 =是,0 =否)

現(xiàn)在,我們知道了數(shù)據(jù)集的整體結(jié)構(gòu)。因此,讓我們應(yīng)用在應(yīng)用機(jī)器學(xué)習(xí)模型時(shí)通常應(yīng)該執(zhí)行的一些步驟。

相關(guān)視頻:Boosting集成學(xué)習(xí)原理與R語(yǔ)言提升回歸樹(shù)BRT預(yù)測(cè)短鰭鰻分布生態(tài)學(xué)實(shí)例

Boosting集成學(xué)習(xí)原理與R語(yǔ)言提升回歸樹(shù)BRT預(yù)測(cè)短鰭鰻分布生態(tài)學(xué)實(shí)例

,時(shí)長(zhǎng)10:25

第1步:導(dǎo)入

  1. import numpy as np

  2. import matplotlib.pyplot as plt

所有寫(xiě)入當(dāng)前目錄的結(jié)果都保存為輸出。

dataset = pd.read_csv('Card.csv')

現(xiàn)在讓我們看看數(shù)據(jù)是什么樣的



?

第2步:數(shù)據(jù)預(yù)處理和清理

dataset.shape(30000, 25)

意味著有30,000條目包含25列

從上面的輸出中可以明顯看出,任何列中都沒(méi)有對(duì)象類型不匹配。

  1. #檢查數(shù)據(jù)中Null項(xiàng)的數(shù)量,按列計(jì)算。

  2. dataset.isnull().sum()

步驟3.數(shù)據(jù)可視化和探索性數(shù)據(jù)分析

  1. # 按性別檢查違約者和非違約者的計(jì)數(shù)數(shù)量

  2. sns.countplot

從上面的輸出中可以明顯看出,與男性相比,女性的整體拖欠付款更少

可以明顯看出,那些擁有婚姻狀況的人的已婚狀態(tài)人的默認(rèn)拖欠付款較少。


sns.pairplot

sns.jointplot

男女按年齡分布

g.map(plt.hist,'AGE')

dataset['LIMIT_BAL'].plot.density

步驟4.找到相關(guān)性

X.corrwith

從上圖可以看出,最負(fù)相關(guān)的特征是LIMIT_BAL,但我們不能盲目地刪除此特征,因?yàn)楦鶕?jù)我的看法,這對(duì)預(yù)測(cè)非常重要。ID無(wú)關(guān)緊要,并且在預(yù)測(cè)中沒(méi)有任何作用,因此我們稍后將其刪除。


  1. # 繪制熱圖

  2. sns.heatmap(corr)

步驟5:將數(shù)據(jù)分割為訓(xùn)練和測(cè)試集

訓(xùn)練數(shù)據(jù)集和測(cè)試數(shù)據(jù)集必須相似,通常具有相同的預(yù)測(cè)變量或變量。它們?cè)谧兞康挠^察值和特定值上有所不同。如果將模型擬合到訓(xùn)練數(shù)據(jù)集上,則將隱式地最小化誤差。擬合模型為訓(xùn)練數(shù)據(jù)集提供了良好的預(yù)測(cè)。然后,您可以在測(cè)試數(shù)據(jù)集上測(cè)試模型。如果模型在測(cè)試數(shù)據(jù)集上也預(yù)測(cè)良好,則您將更有信心。因?yàn)闇y(cè)試數(shù)據(jù)集與訓(xùn)練數(shù)據(jù)集相似,但模型既不相同也不相同。這意味著該模型在真實(shí)意義上轉(zhuǎn)移了預(yù)測(cè)或?qū)W習(xí)。

因此,通過(guò)將數(shù)據(jù)集劃分為訓(xùn)練和測(cè)試子集,我們可以有效地測(cè)量訓(xùn)練后的模型,因?yàn)樗郧皬奈纯吹竭^(guò)測(cè)試數(shù)據(jù),因此可以防止過(guò)度擬合。

我只是將數(shù)據(jù)集拆分為20%的測(cè)試數(shù)據(jù),其余80%將用于訓(xùn)練模型。

train_test_split(X, y, test_size = 0.2, random_state = 0)

步驟6:規(guī)范化數(shù)據(jù):特征標(biāo)準(zhǔn)化

對(duì)于許多機(jī)器學(xué)習(xí)算法而言,通過(guò)標(biāo)準(zhǔn)化(或Z分?jǐn)?shù)標(biāo)準(zhǔn)化)進(jìn)行特征標(biāo)準(zhǔn)化可能是重要的預(yù)處理步驟。

許多算法(例如SVM,K近鄰算法和邏輯回歸)都需要對(duì)特征進(jìn)行規(guī)范化,

  1. min_test = X_test.min()

  2. range_test = (X_test - min_test).max()

  3. X_test_scaled = (X_test - min_test)/range_test

步驟7:應(yīng)用機(jī)器學(xué)習(xí)模型

  1. from sklearn.ensemble ?import AdaBoostClassifier

  2. adaboost =AdaBoostClassifier()



  1. xgb_classifier.fit(X_train_scaled, y_train,verbose=True)

  2. end=time()

  3. train_time_xgb=end-start

應(yīng)用具有100棵樹(shù)和標(biāo)準(zhǔn)熵的隨機(jī)森林

  1. classifier = RandomForestClassifier(random_state = 47,

  2. criterion = 'entropy',n_estimators=100)


  1. svc_model = SVC(kernel='rbf', gamma=0.1,C=100)

knn = KNeighborsClassifier(n_neighbors = 7)

步驟8:分析和比較機(jī)器學(xué)習(xí)模型的訓(xùn)練時(shí)間


  1. Train_Time = [

  2. train_time_ada,

  3. train_time_xgb,

  4. train_time_sgd,

  5. train_time_svc,

  6. train_time_g,

  7. train_time_r100,


  8. train_time_knn

  9. ]

從上圖可以明顯看出,與其他模型相比,Adaboost和XGboost花費(fèi)的時(shí)間少得多,而其他模型由于SVC花費(fèi)了最多的時(shí)間,原因可能是我們已經(jīng)將一些關(guān)鍵參數(shù)傳遞給了SVC。

步驟9.模型優(yōu)化

在每個(gè)迭代次數(shù)上,隨機(jī)搜索的性能均優(yōu)于網(wǎng)格搜索。同樣,隨機(jī)搜索似乎比網(wǎng)格搜索更快地收斂到最佳狀態(tài),這意味著迭代次數(shù)更少的隨機(jī)搜索與迭代次數(shù)更多的網(wǎng)格搜索相當(dāng)。

在高維參數(shù)空間中,由于點(diǎn)變得更稀疏,因此在相同的迭代中,網(wǎng)格搜索的性能會(huì)下降。同樣常見(jiàn)的是,超參數(shù)之一對(duì)于找到最佳超參數(shù)并不重要,在這種情況下,網(wǎng)格搜索浪費(fèi)了很多迭代,而隨機(jī)搜索卻沒(méi)有浪費(fèi)任何迭代。

現(xiàn)在,我們將使用Randomsearch cv優(yōu)化模型準(zhǔn)確性。如上表所示,Adaboost在該數(shù)據(jù)集中表現(xiàn)最佳。因此,我們將嘗試通過(guò)微調(diào)adaboost和SVC的超參數(shù)來(lái)進(jìn)一步優(yōu)化它們。

參數(shù)調(diào)整

現(xiàn)在,讓我們看看adaboost的最佳參數(shù)是什么

random_search.best_params_{'random_state': 47, 'n_estimators': 50, 'learning_rate': 0.01}

random_search.best_params_{'n_estimators': 50, 'min_child_weight': 4, 'max_depth': 3}

random_search.best_params_{'penalty': 'l2', 'n_jobs': -1, 'n_iter': 1000, 'loss': 'log', 'alpha': 0.0001}

出色的所有指標(biāo)參數(shù)準(zhǔn)確性,F(xiàn)1分?jǐn)?shù)精度,ROC,三個(gè)模型adaboost,XGBoost和SGD的召回率現(xiàn)已優(yōu)化。此外,我們還可以嘗試使用其他參數(shù)組合來(lái)查看是否會(huì)有進(jìn)一步的改進(jìn)。

ROC曲線圖


  1. auc = metrics.roc_auc_score(y_test,model.predict(X_test_scaled))


  2. plt.plot([0, 1], [0, 1],'r--')


  1. # 計(jì)算測(cè)試集分?jǐn)?shù)的平均值和標(biāo)準(zhǔn)差

  2. test_mean = np.mean


  3. # 繪制訓(xùn)練集和測(cè)試集的平均準(zhǔn)確度得分

  4. plt.plot

  5. # 繪制訓(xùn)練集和測(cè)試集的準(zhǔn)確度。

  6. plt.fill_between

驗(yàn)證曲線的解釋

如果樹(shù)的數(shù)量在10左右,則該模型存在高偏差。兩個(gè)分?jǐn)?shù)非常接近,但是兩個(gè)分?jǐn)?shù)都離可接受的水平太遠(yuǎn),因此我認(rèn)為這是一個(gè)高度偏見(jiàn)的問(wèn)題。換句話說(shuō),該模型不適合。

在最大樹(shù)數(shù)為250的情況下,由于訓(xùn)練得分為0.82但驗(yàn)證得分約為0.81,因此模型存在高方差。換句話說(shuō),模型過(guò)度擬合。同樣,數(shù)據(jù)點(diǎn)顯示出一種優(yōu)美的曲線。但是,我們的模型使用非常復(fù)雜的曲線來(lái)盡可能接近每個(gè)數(shù)據(jù)點(diǎn)。因此,具有高方差的模型具有非常低的偏差,因?yàn)樗鼛缀鯖](méi)有假設(shè)數(shù)據(jù)。實(shí)際上,它對(duì)數(shù)據(jù)的適應(yīng)性太大。

從曲線中可以看出,大約30到40的最大樹(shù)可以最好地概括看不見(jiàn)的數(shù)據(jù)。隨著最大樹(shù)的增加,偏差變小,方差變大。我們應(yīng)該保持兩者之間的平衡。在30到40棵樹(shù)的數(shù)量之后,訓(xùn)練得分就開(kāi)始上升,而驗(yàn)證得分開(kāi)始下降,因此我開(kāi)始遭受過(guò)度擬合的困擾。因此,這是為什么30至40之間的任何數(shù)量的樹(shù)都是一個(gè)不錯(cuò)的選擇的原因。

結(jié)論

因此,我們已經(jīng)看到,調(diào)整后的Adaboost的準(zhǔn)確性約為82.95%,并且在所有其他性能指標(biāo)(例如F1分?jǐn)?shù),Precision,ROC和Recall)中也取得了不錯(cuò)的成績(jī)。

此外,我們還可以通過(guò)使用Randomsearch或Gridsearch進(jìn)行模型優(yōu)化,以找到合適的參數(shù)以提高模型的準(zhǔn)確性。

我認(rèn)為,如果對(duì)這三個(gè)模型進(jìn)行了適當(dāng)?shù)恼{(diào)整,它們的性能都會(huì)更好。

最受歡迎的見(jiàn)解

1.從決策樹(shù)模型看員工為什么離職

2.R語(yǔ)言基于樹(shù)的方法:決策樹(shù),隨機(jī)森林

3.python中使用scikit-learn和pandas決策樹(shù)

4.機(jī)器學(xué)習(xí):在SAS中運(yùn)行隨機(jī)森林?jǐn)?shù)據(jù)分析報(bào)告

5.R語(yǔ)言用隨機(jī)森林和文本挖掘提高航空公司客戶滿意度

6.機(jī)器學(xué)習(xí)助推快時(shí)尚精準(zhǔn)銷售時(shí)間序列

7.用機(jī)器學(xué)習(xí)識(shí)別不斷變化的股市狀況——隱馬爾可夫模型的應(yīng)用

8.python機(jī)器學(xué)習(xí):推薦系統(tǒng)實(shí)現(xiàn)(以矩陣分解來(lái)協(xié)同過(guò)濾)

9.python中用pytorch機(jī)器學(xué)習(xí)分類預(yù)測(cè)銀行客戶流失


拓端tecdat|Python信貸風(fēng)控模型:梯度提升Adaboost,XGBoost,SGD, GBOOST, SVC,隨機(jī)森的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
旺苍县| 嘉善县| 林西县| 固原市| 安徽省| 岳阳县| 富民县| 新邵县| 肥城市| 衡东县| 武义县| 金秀| 突泉县| 闽侯县| 安陆市| 丹阳市| 民乐县| 沂南县| 定陶县| 建始县| 灵宝市| 万载县| 都昌县| 闻喜县| 连南| 云林县| 巴里| 温泉县| 禄丰县| 祁东县| 安宁市| 霍城县| 双江| 东方市| 宜宾市| 天等县| 通山县| 永安市| 仁寿县| 松潘县| 确山县|