最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

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

PYTHON銀行機器學(xué)習(xí):回歸、隨機森林、KNN近鄰、決策樹、高斯樸素貝葉斯、支持向量機S

2023-03-20 22:38 作者:拓端tecdat  | 我要投稿

全文下載鏈接:http://tecdat.cn/?p=26219

最近我們被客戶要求撰寫關(guān)于銀行機器學(xué)習(xí)的研究報告,包括一些圖形和統(tǒng)計輸出。

該數(shù)據(jù)與銀行機構(gòu)的直接營銷活動相關(guān),營銷活動基于電話。通常,需要與同一客戶的多個聯(lián)系人聯(lián)系,以便訪問產(chǎn)品(銀行定期存款)是否會(“是”)或不會(“否”)訂閱

銀行數(shù)據(jù)集

我們的數(shù)據(jù)集描述

y - 客戶是否訂閱了定期存款?(二進(jìn)制:'是','否')

我們的目標(biāo)是選擇最好的回歸模型來讓客戶訂閱或不訂閱定期存款。我們將使用如下算法:

  • 線性回歸

  • 隨機森林回歸

  • KNN近鄰

  • 決策樹

  • 高斯樸素貝葉斯

  • 支持向量機

選擇最佳模型的決定將基于:

  • 準(zhǔn)確性

  • 過采樣

數(shù)據(jù)準(zhǔn)備

在本節(jié)中,我們加載數(shù)據(jù)。我們的數(shù)據(jù)有 45211 個變量。

輸入變量:
銀行客戶數(shù)據(jù)
1 - 年齡(數(shù)字)
2 - 工作:工作類型(分類:'行政'、'藍(lán)領(lǐng)'、'企業(yè)家'、'女傭'、'管理'、'退休'、'自雇'、'服務(wù)'、'學(xué)生'、'技術(shù)員'、'失業(yè)'、'未知')
3 - 婚姻:婚姻狀況(分類:'離婚'、'已婚'、'單身'、'不詳';注:'離婚'指離婚或喪偶)。
4 - 教育(分類:'基礎(chǔ)4年'、'基礎(chǔ)6年'、'基礎(chǔ)9年'、'高中'、'文盲'、'專業(yè)課程'、'大學(xué)學(xué)位'、'未知')
5 - 違約:是否有違約的信貸?(分類: '沒有', '有', '未知')
6-住房:是否有住房貸款?(分類: '否', '是', '未知')
7 - 貸款:有個人貸款嗎?
8 - contact: 聯(lián)系通信類型(分類:'手機', '電話')。
9 - 月:最后一次聯(lián)系的年份月份(分類:'一月', '二月', '三月', ..., '十一月', '十二月')
10 - day_of_week:最后一次聯(lián)系的星期(分類:'mon', 'tue', 'wed', 'thu', 'fri')
11 - 持續(xù)時間:最后一次聯(lián)系的持續(xù)時間,以秒為單位(數(shù)字)。
12 - 活動:在這個活動期間為這個客戶進(jìn)行的接觸次數(shù)(數(shù)字,包括最后一次接觸)。
13 - pdays: 在上次活動中最后一次與客戶聯(lián)系后的天數(shù)(數(shù)字,999表示之前沒有與客戶聯(lián)系)。
14 - 以前:在這次活動之前,為這個客戶進(jìn)行的接觸次數(shù)(數(shù)字)。
15 - 結(jié)果:上次營銷活動的結(jié)果(分類:"失敗"、"不存在"、"成功")。
社會和經(jīng)濟(jì)背景屬性
16 - emp.var.rate:就業(yè)變化率--季度指標(biāo)(數(shù)值)。
17 - cons.price.idx:消費者價格指數(shù)--月度指標(biāo)(數(shù)值)。
18 - cons.conf.idx:消費者信心指數(shù)--月度指標(biāo)(數(shù)字)。
19 - euribor3m:銀行3個月利率--每日指標(biāo)(數(shù)值)
20 - nr.employed: 雇員人數(shù) - 季度指標(biāo)(數(shù)字)

輸出變量(所需目標(biāo)):

  • y - ?客戶是否認(rèn)購了定期存款?(二進(jìn)制: '是', '否')

data.head(5)

我們的下一步是查看變量的形式以及是否存在缺失值的問題。

df1?=?data.dtypes df1

df2?=?data.isnull().sum()? df2

我們的下一步是計算所有變量的值。

data['y'].value_counts()

data['job'].value_counts()

data['marital'].value_counts()

data['education'].value_counts()

data['housing'].value_counts()

data['loan'].value_counts()

data['contact'].value_counts()

data['month'].value_counts()

data['poutcome'].value_counts()

描述性統(tǒng)計

數(shù)值總結(jié)

data.head(5)

改變因變量 y 的值。代替 no - 0 和代替 yes - 1。

data['y']?=?data['y'].map({'no':?0,?'yes':?1})data.columns

對于我們的每個變量,我們繪制一個箱線圖來查看是否有任何可見的異常值。

plt.figure(figsize=[10,25])ax?=?plt.subplot(611) sns.boxplot(data['age'],orient="v")

我們可以看到許多可見的異常值,尤其是在 balance 、 campaign 、 pdays 的情況下。在 pdays ,我們可以看到很多變量都在分位數(shù)范圍之外。這個變量是一個特例,它被解碼為 -1,這就是我們的圖看起來像這樣的原因。在表示變量之前的箱線圖的情況下,它表示在此活動之前執(zhí)行的聯(lián)系數(shù)量,在這種情況下,我們還可以注意到許多超出分位數(shù)范圍的值。

直方圖

我們的下一步是查看連續(xù)變量的分布和直方圖
我們可以看到?jīng)]有一個變量具有正態(tài)分布。

plt.figure(figsize=[10,20]) plt.subplot(611)g?=?sns.distplot(data["age"],?color="r")





我們的下一步是查看因變量 y 與每個變量或連續(xù)變量之間的關(guān)系。

g?=?sns.FacetGrid(data,?col='y',size=4) g.map

從這些變量中我們可以得到的最有趣的觀察是,大多數(shù)說不的人年齡在20-40歲之間,在月底的第20天,大多數(shù)人也拒絕了這個提議。

分類總結(jié)

我們制作僅包含分類變量的數(shù)據(jù)子集,以便更輕松地繪制箱線圖

data_categorical?=?data[['job', ?'marital', ?'education', ?'default',?'housing', ?'loan','month',?'y']]

我們還查看了分類變量,看看是否有一些有趣的特征
從上面的條形圖中可以看出,最有趣的結(jié)果來自變量:婚姻狀況、教育和工作。
從代表婚姻狀況的圖表來看,大多數(shù)人都已婚。
正如我們在代表教育的圖表上看到的那樣 - 最大的是接受過中等教育的人數(shù)。
在約伯的情況下,我們可以看到大多數(shù)人都有藍(lán)領(lǐng)和管理工作。

我們還想在馬賽克圖上查看我們的分類變量與 y 變量之間的關(guān)系。

plt.rcParams['font.size']?=?16.0

正如我們所見,大多數(shù)人都拒絕了該提議。就地位而言,已婚的人說“不”最多。

在可變違約的情況下,大多數(shù)沒有違約信用的人也拒絕了該提案。

大多數(shù)有住房貸款的人也拒絕了該提議。

大多數(shù)沒有貸款的人拒絕了這個提議。

點擊標(biāo)題查閱往期內(nèi)容

用PyTorch機器學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)分類預(yù)測銀行客戶流失模型

左右滑動查看更多

01

02

03

04

數(shù)據(jù)挖掘

data.head(5)

我們想更深入地研究我們的變量,看看我們是否可以用它們做更多的事情。

我們的下一步是使用 WOE 分析。

finv,?IV?=?datars(data,data.y) IV

基于對我們有用的 WOE 分析變量是:pdays、previous、job、housing、balance、month、duration、poutcome、contact。
在下一步中,我們決定根據(jù) WOE 結(jié)果和變量的先前結(jié)果刪除無用的列。
我們刪除的其中一個列是 poutcome,盡管它的 WOE 很高,但我們決定刪除它,因為從 prevois 分析中我們看到它有許多未知的觀察結(jié)果。
在可變持續(xù)時間的情況下,我們也可以看到WOE相當(dāng)大,甚至可以說這個結(jié)果有點可疑。我們決定根據(jù) WOE 結(jié)果放棄它,因為我們的模型應(yīng)該根據(jù)過去的數(shù)據(jù)說明是否建議給某個人打電話。
在可變接觸的情況下,我們放棄了它,因為對我們來說,接觸形式在我們的模型中沒有用。
我們還刪除了變量 day 因為它對我們沒有用,因為這個變量代表天數(shù),而該變量的 WOE 非常小。我們刪除的最后一個變量是變量 pdays,盡管這個變量 WOE 的結(jié)果非常好,但它對我們來說并不是一個有用的變量。

我們分析中剩下的列:

特征選擇和工程

要執(zhí)行我們的算法,我們首先需要將字符串更改為二進(jìn)制變量。

data?=?pd.get_dummies(data=data,?columns?=?['job',?'marital',?'education'?,?'month'],?\ ???????????????????????????????????prefix?=?['job',?'marital',?'education'?,?'month'])

我們更改了列的名稱。

data.head(5)

創(chuàng)建虛擬變量后,我們進(jìn)行了 Pearson 相關(guān)。

age?=?pearsonr(data['age'],?data['y'])

sns.heatmap(corr

我們選擇了數(shù)字列來檢查相關(guān)性。正如我們所看到的,沒有相關(guān)性。

我們查看因變量和連續(xù)變量之間的關(guān)系。

pylab.show()

交叉驗證

經(jīng)過所有準(zhǔn)備工作,我們終于可以將數(shù)據(jù)集拆分為訓(xùn)練集和測試集。

算法的實現(xiàn)

邏輯回歸

K=5kf?=?KFold(n_splits=K,?shuffle=True)logreg?=?LogisticRegression()?[[7872???93] ?[?992???86]]

?[[7919???81] ?[?956???86]]

?[[7952???60] ?[?971???59]]

?[[7871???82] ?[1024???65]]

?[[7923???69] ?[?975???75]]

決策樹

dt2?=?tree.DecisionTreeClassifier(random_state=1,?max_depth=2)?[[7988????0] ?[1055????0]]

?[[7986????0] ?[1056????0]]

?[[7920???30] ?[1061???31]]

?[[8021????0] ?[1021????0]]

?[[7938???39] ?[1039???26]]

隨機森林

random_forest?=?RandomForestClassifier?[[7812??183] ?[?891??157]]

?[[7825??183] ?[?870??164]]

?[[7774??184] ?[?915??169]]

?[[7770??177] ?[?912??183]]

?[[7818??196] ?[?866??162]]

KNN近鄰

classifier?=?KNeighborsClassifier(n_neighbors?=13,metric?=?'minkowski'?,?p=2)print("Mean?accuracy:?",accuracyknn/K)print("The?best?AUC:?",?bestaucknn)?[[7952???30] ?[1046???15]]

?[[7987???30] ?[1010???15]]

?[[7989???23] ?[1017???13]]

?[[7920???22] ?[1083???17]]

?[[7948???21] ?[1052???21]]

高斯樸素貝葉斯

kf?=?KFold(n_splits=K,?shuffle=True)gaussian?=?GaussianNB()?[[7340??690] ?[?682??331]]

?[[7321??633] ?[?699??389]]

?[[7291??672] ?[?693??386]]

?[[7300??659] ?[?714??369]]

?[[7327??689] ?[?682??344]]

?``````models?=?pd.DataFrame({ ????'Model':?['KNN',?'Logistic?Regression',? ??????????????'Naive?Bayes',?'Decision?Tree','Random?Forest'], ????'Score':?[?accuracyknn/K,?accuracylogreg/K,? ??????????????accuracygnb/K,?accuracydt/K,?accuracyrf/K], ????'BestAUC':?[bestaucknn,bestauclogreg,bestaucgnb, ????????????????bestaucdt,bestaucrf]})

我們看到根據(jù) AUC 值的最佳模型是樸素貝葉斯我們不應(yīng)該太在意最低的 R2 分?jǐn)?shù),因為數(shù)據(jù)非常不平衡(很容易預(yù)測 y=0)。在混淆矩陣中,我們看到它預(yù)測了漂亮的價值真正值和負(fù)值。令我們驚訝的是,決策樹的 AUC 約為 50%。

欠采樣

我們嘗試對變量 y=0 進(jìn)行欠采樣

gTrain,?gValid?=?train_test_split

邏輯回歸

predsTrain?=?logreg.predict(gTrainUrandom)

predsTrain?=?logreg.predict(gTrain20Urandom)

predsTrain?=?logreg.predict(gTrrandom)

決策樹

?print("Train?AUC:",?metrics.roc_auc_score(ygTrds))

隨機森林

print("Train?AUC:",?metrics.roc_auc_score(ygTr,?predsTrain), ??????"Valid?AUC:",?metrics.roc_auc_score(ygVd,?preds))

KNN近鄰

print("Train?AUC:",?metrics.roc_auc_score(ygTrm,?predsTrain), ??????"Valid?AUC:",?metrics.roc_auc_score(ygVal10,?preds))

高斯樸素貝葉斯

print("Train?AUC:",?metrics.roc_auc_score(ygTraom,?predsTrain), ??????"Valid?AUC:",?metrics.roc_auc_score(ygid,?preds))

過采樣

我們嘗試對變量 y=1 進(jìn)行過采樣

feates?=?datolist()print(feures) feaes.remove('y')

print(gTrainOSM.shape)(31945,?39)``````smt?=?SMOT(32345,?39)``````smt?=?SMOT(32595,?39) ``````ygTrain10OSM=gTrain10OSM['y']gTrain10OSM=gTrain10OSM.drop(columns=['y'])

邏輯回歸

print("Train?AUC:",?metrics.roc_auc_score(ygTrin10SM,?predsTrain), ??????"Valid?AUC:",?metrics.roc_auc_score(ygValid,?preds))

決策樹

dt2.fit(,ygTranOS)predsTrain?=?dtpreict(TrainOSM)preds?=?dt2.predict(gValid)

隨機森林

random_forest.fit(rainOSM,?ygTranOS)predsTrain?=?random_forest.prect(gTraiOSM) p

KNN近鄰

classifier.fit(granOSM,?yTanOSM)predsTrain?=?classifier.predict(gTaiSM)preds?=?classifier.predict(Vaid)

高斯樸素貝葉斯

gaussian.fit(gTriOM,?ygrainM)predsTrain?=?gaussian.predcti)

結(jié)論

我們看到欠采樣和過采樣變量 y 對 AUC 沒有太大幫助。

本文摘選?《?PYTHON銀行機器學(xué)習(xí):回歸、隨機森林、KNN近鄰、決策樹、高斯樸素貝葉斯、支持向量機SVM分析營銷活動數(shù)據(jù)?》?,點擊“閱讀原文”獲取全文完整資料。

點擊標(biāo)題查閱往期內(nèi)容

用PyTorch機器學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)分類預(yù)測銀行客戶流失模型
R語言用FNN-LSTM假近鄰長短期記憶人工神經(jīng)網(wǎng)絡(luò)模型進(jìn)行時間序列深度學(xué)習(xí)預(yù)測4個案例
Python中TensorFlow的長短期記憶神經(jīng)網(wǎng)絡(luò)(LSTM)、指數(shù)移動平均法預(yù)測股票市場和可視化
R語言KERAS用RNN、雙向RNNS遞歸神經(jīng)網(wǎng)絡(luò)、LSTM分析預(yù)測溫度時間序列、 IMDB電影評分情感
Python用Keras神經(jīng)網(wǎng)絡(luò)序列模型回歸擬合預(yù)測、準(zhǔn)確度檢查和結(jié)果可視化
Python用LSTM長短期記憶神經(jīng)網(wǎng)絡(luò)對不穩(wěn)定降雨量時間序列進(jìn)行預(yù)測分析
R語言中的神經(jīng)網(wǎng)絡(luò)預(yù)測時間序列:多層感知器(MLP)和極限學(xué)習(xí)機(ELM)數(shù)據(jù)分析報告
R語言深度學(xué)習(xí):用keras神經(jīng)網(wǎng)絡(luò)回歸模型預(yù)測時間序列數(shù)據(jù)
Matlab用深度學(xué)習(xí)長短期記憶(LSTM)神經(jīng)網(wǎng)絡(luò)對文本數(shù)據(jù)進(jìn)行分類
R語言KERAS深度學(xué)習(xí)CNN卷積神經(jīng)網(wǎng)絡(luò)分類識別手寫數(shù)字圖像數(shù)據(jù)(MNIST)
MATLAB中用BP神經(jīng)網(wǎng)絡(luò)預(yù)測人體脂肪百分比數(shù)據(jù)
Python中用PyTorch機器學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)分類預(yù)測銀行客戶流失模型
R語言實現(xiàn)CNN(卷積神經(jīng)網(wǎng)絡(luò))模型進(jìn)行回歸數(shù)據(jù)分析Python使用神經(jīng)網(wǎng)絡(luò)進(jìn)行簡單文本分類
R語言用神經(jīng)網(wǎng)絡(luò)改進(jìn)Nelson-Siegel模型擬合收益率曲線分析
R語言基于遞歸神經(jīng)網(wǎng)絡(luò)RNN的溫度時間序列預(yù)測
R語言神經(jīng)網(wǎng)絡(luò)模型預(yù)測車輛數(shù)量時間序列
R語言中的BP神經(jīng)網(wǎng)絡(luò)模型分析學(xué)生成績
matlab使用長短期記憶(LSTM)神經(jīng)網(wǎng)絡(luò)對序列數(shù)據(jù)進(jìn)行分類
R語言實現(xiàn)擬合神經(jīng)網(wǎng)絡(luò)預(yù)測和結(jié)果可視化
用R語言實現(xiàn)神經(jīng)網(wǎng)絡(luò)預(yù)測股票實例
使用PYTHON中KERAS的LSTM遞歸神經(jīng)網(wǎng)絡(luò)進(jìn)行時間序列預(yù)測
python用于NLP的seq2seq模型實例:用Keras實現(xiàn)神經(jīng)網(wǎng)絡(luò)機器翻譯
用于NLP的Python:使用Keras的多標(biāo)簽文本LSTM神經(jīng)網(wǎng)絡(luò)分類


PYTHON銀行機器學(xué)習(xí):回歸、隨機森林、KNN近鄰、決策樹、高斯樸素貝葉斯、支持向量機S的評論 (共 條)

分享到微博請遵守國家法律
南丹县| 潮安县| 南开区| 客服| 海伦市| 元阳县| 敦煌市| 凉城县| 临桂县| 五指山市| 招远市| 岳阳市| 丹巴县| 武鸣县| 桐柏县| 邳州市| 赤城县| 玛多县| 台北县| 八宿县| 鄂州市| 林甸县| 怀安县| 郑州市| 晋中市| 资源县| 金塔县| 浦江县| 阿合奇县| 兴宁市| 响水县| 林芝县| 日照市| 沙雅县| 长乐市| 宝兴县| 巴马| 宁海县| 隆安县| 孝昌县| 昭觉县|