數據挖掘實踐學習一 數據集處理 未完待續

前言

8月份參加的DataWhale組織的組隊學習活動,自以爲是地報了MySQL,數據挖掘和爬蟲,結果只有MySQL完成得還可以了,數據挖掘不厚道地隨便搞了一下,矇混過關,爬蟲搞了一半最後被請出了羣聊。

雖然沒有完成,但好處保留了這些資料和高手們的聊天記錄,現在想把沒做完和做好的事情做完做好,可以照着別人的腳步,跟着做,這叫站在巨人的肩膀上。做的這些,當然都是爲了一份工作。

 

第一部分是數據集處理,即拿到數據集後,對數據字段的意義和類型、數據的分佈、以及數據的缺失值進行了解和分析,然後做相應的處理。

引用一位羣友的總結,即這一部分包括:1、剔除無用的特徵;2、缺失值的處理;3、異常值和離羣值的處理;4、分類數據的編碼;5、時間類特徵的處理;6、其他特徵的處理。

這一邊日誌,我主要進行數據值的處理,用python的數據可視化包展示一下數據的分佈,這裏也複習一下Matplotlib和seaborn,不然真的過去學的都忘了。至於時間類和其他特徵處理,放在一下篇,專門學習一下特徵工程。

 

數據集說明

這是DataWhale提供的一個金融數據集,數據集已經做了脫密處理。需要做的是預測用戶的貸款是否會逾期。數據字段"status" 是結果標籤:0表示未逾期,1表示逾期。

數據集將會三七分,三分測試集七分訓練集。隨機種子設置爲2018。

 

導入常用的工具包

 

導入數據

導入數據並查看DataFrame結構:總共有4754行數據,90個字段。

字段分析

查看每個字段的唯一值有多少個,如果只有一個唯一值,那麼這個字段特徵沒有什麼用,如果字段的唯一值跟總數據行數相等,那麼也是無關字段

從以上可以看出,'bank_card_no','source','Unnamed: 0','custid','trade_no'是無用特徵

接下來,對每個字段的意義進行探究,從常理上判斷一個特徵字段是否具有意義。

每個字段隨機選取5個數查看

然後逐個看

將字段分類

按照常理去掉一部分無效字段,比如卡號,客戶姓名。一般日期信息應該主要用於做季節性趨勢性分析,或這用戶生命週期的分析,等進步一再看。

刪除無用字段

 

缺失值處理

對每個字段的缺失值進行統計,再按缺失值數量大小排序:

或者通過計算缺失值的比例來看

可見,student_feature 有2998個缺失值,缺失值佔比63%,這個字段需要刪掉。

對於缺失值的處理,這裏參考一片文章:

http://blog.sina.com.cn/s/blog_1523c35670102xlcf.html

這裏使用最填充法去處理缺失值,即填充均值,衆數或者中位數。

一般來說,如果是數值型變量,若存在的變量值是正態分佈則選擇均值填充,若是偏態分佈,則選擇中位數填充;如果不是數值型變量,則選擇衆數填充。

由於均值又受到異常值和利羣值的影響,所以先看看數值型的數據分佈和離羣數據。

爲了畫圖方便,這裏將所有的數值型字段分層三部分:


異常情況:16,23,25這三個圖出現最左/最右暴增的情況,即data_int1[15,22,24] ==>> rank_trad_1_month, trans_top_time_last_1_month, consume_top_time_last_1_month。。。待以後進一步分析。

第21個圖出現分段情況,即'avg_price_last_12_month'

第二段沒有特殊情況出現。

第18個圖出現分段情況,即 'consfin_credit_limit'

對於出現分段情況的 'avg_price_last_12_month','consfin_credit_limit',很奇怪的是通過畫大圖分析,卻沒有看到它們分段的情況。。。暫時不去探究了。

考慮以上圖形基本都呈偏態分佈,所以最後使用中位數對數值類型的缺失值進行填充。

 

 

接下的步驟:

填充數值類缺失值

對於時間日期類特徵的分析,填充時間類缺失值

填充標籤類缺失值

數據類型轉換,將標籤類型的字段轉爲數值類型,參考 https://zhuanlan.zhihu.com/p/87203369

 

--- 未完待續 ---

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章