在大家的生活中,貸款是不能避開的話題。而銀行在向個人提供貸款時,需要對這個人進行一個全面的評估,防止這個人還不上貸款,從而成爲壞賬。所以利用機器學習來評估一個人是否能夠取得貸款,是一個非常熱門的話題。
今天,小編就帶領大家實現一個完整的機器學習的項目。來預測一個人究竟能否獲得銀行的貸款。
我們今天用到的庫包含了sklearn、matplotlib、numpy、pandas、seaborn、scipy等庫,從機器學習到數據分析到數據可視化的展示,可謂是乾貨滿滿。
01 數據初探
首先我們讀入數據,並對數據進行一個初步的認知:
可以看出,貸到款的人數佔到總人數的69%。在對整體數據有一個整體的把握之後,接下來我們來對每個特徵的重要性進行分析。
02 特徵分析
首先我們先從標稱型數據開始分析。如下圖所示:上圖中,橫座標是每個標稱型的數據類型,縱座標是我們的Label,也即Loan_Status。從上述的數據分佈可以得到下面很多的信息:
- 左上角中Gender和Loan_Status的關係,可以看出,無論是男性還是女性,大部分的人都得到了貸款。
- 性別在是否提供貸款的判定中並不是特別重要的特徵信息。
- 在右上角的Married和Loan_Status的關係,可以看出大多數結婚的人都得到了貸款
- 如果一個人結婚了,那麼他有很大的概率得到貸款。所以Married對於Loan_Status是一個好的特徵,對於其他的標稱型類型同樣可以採用這樣的方法進行分析。
接下來我們來看一下數值型的特徵
可以看出,當CoapplicantInocme的中位數較低時,Loan_Status 爲N,所以 CoapplicantInocme是一個很好的特徵信息。
03 數據清洗
對特徵進行分析後,接下來就是數據的清洗,包括了缺失值的處理,對於標稱型的數據,我們將其按照衆數來填充,而對於數值型的數據,採用平均值來填充(也可以採用缺失值的上一個值來填充),然後將標籤進行one_hot來編碼,最終處理後的數據如下所示。
04 模型訓練與測試 對於數據進行清洗後,接下來就是模型的訓練,對於二分類問題,採用logistic迴歸、KNN、SVM(SVC)和決策樹四種模型來訓練,並通過準確率,召回率,F1準確率,分類準確率分數五個評價指標來評價模型
對於模型的訓練,採用了兩種方法,第一種是直接將數據集分爲訓練集和測試集,其中對於訓練集和測試集,其label中的Y和N的比例同數據集中的label比例相同。然後再訓練集上訓練模型,在測試集上測試模型。下圖展示的是模型在訓練集上訓練後在測試集上測試的結果。
從評價指標和上圖展示可以得出,目前最好的模型是logistic模型,而SVC模型相當於只是存儲了數據,並沒有對數據進行任何的判斷分類,呈現過擬合的狀態。
對於模型訓練的第二種方法是採用K折交叉驗證的訓練方法,該方法是將原數據有放回的採樣N次,每次將原數據分爲訓練集和測試集,然後進行模型的訓練和測試。然後平均N次的評價結果來對模型進行評估。
從上圖右側的結果可以看出,此時的SVC同樣是呈現過擬合的狀態,而K折交叉驗證下,決策樹的結果要好於logistic迴歸,在測試集上的準確率達到了80.86%,得到訓練好的模型後,我們就可以利用該模型來預測個人的數據,來預測他能否得到銀行的貸款。
最後,我們來展示一下K折交叉驗證的細節:
上圖可以看到,針對logistic迴歸模型,K折交叉驗證每次都重新劃分訓練集和測試集,來訓練模型,在測試集上進行測試。然後將每次訓練後的評價指標結果進行保存。最終將K次(這裏是10次)的訓練結果進行平均,就得到了每個評價指標的平均結果。
以上就是小編帶領大家進行的一個簡單的機器學習項目練習,在這個基礎上,大家還可以繼續優化,比如說進行特徵的組合選擇,來優化特徵,同時可以針對模型的參數進行調整來提升模型的性能。
希望本篇對大家面試AI算法崗位,有幫助,歡迎在留言區點評,記得給個三連哦!
目前wx搜索Python 【菜鳥學Python】排第二,匯聚了30萬Python愛好者,累計原創近400篇趣味乾貨(爬蟲,數據分析,算法,面試指南,原創趣味實戰,Python遊戲,機器學習),歡迎一起學Python,交流指正。