1. 程式人生 > >資料預處理案例

資料預處理案例

最近在做資料處理的一些事情,寫一下自己的一些處理方式,可能會比較low,


我這份資料是關於售賣房屋的方面的資料:從資料庫轉存的csv檔案,有三百多列,也就是有300多個特徵,並且資料的缺失值特別嚴重,拿到這樣一份殘缺不全的資料我也是很苦惱,

先看一下我的處理方式,

我進行資料處理用的是pandas庫,大致瀏覽了一下資料,缺失很多,首先我們需要先統計出每一列的缺失情況,

1:由於我的資料最終是要用於去訓練模型的,所以對於每一個特徵,我首先先允許他的有效資料必須要大於10000條的,不然資料量不夠,模型的最終效果會很差;

2:進行人為的篩選,剔除到如唯一識別符號id,編號,電話號碼之類的資料,具體還是要看你的標籤,才最終決定你所要剔除的特徵,這是要往多了挑,因為你不知道這個特徵是否對最終模型會有怎樣的影響,對於百分之百需要取出的才去除,要以模型的訓練最終的效果來決定這個特徵是留還是不留,可能有更好的方式,感覺這種方式很low,如果發現有更加科學的方式我會繼續更新的

3:進行了一步篩選之後,我又提取出了資料缺失值比率大於%50 的這部分資料,利用pandas.columns 拿到這些特徵,

4:最後一步就是分別以這些缺失比較大但是有效資料又是大於10000的為基準,分別得到該特徵得到的資料,

比如:有一個特徵是room,那就以room該列不為空來獲取一個樣本資料,這個操作不會對特徵個數產生影響,最終會得到一個小的樣本,

但是我在進行這一步操作的時候速度特別的慢:用了兩種方式,一種是drop的方式,一種是通過建立一個新的DataFrame的方式,通過行新增的方式;

其中drop方式是最慢的,

5:最後就是再次對分別得到的資料樣本做分析,觀看各個特徵缺失值的情況,選取適當的樣本作為訓練資料;


當然這只是預處理方式,在樣本資料進行訓練之前,還要進行一項‘特徵工程’的操作才行,也就是特徵的處理,對於數值資料怎樣操作,非數值又怎樣操作,是否應該進行編碼,是否應該進行歸一化,等等,

還有就是推薦使用tensorflow下一個estimator的庫,這個庫下封裝了好幾個模型,而且有一個關於特徵處理的方式,特別好用,讓你跟注重你的資料和你模型最終的樣子,當然如果你是模型大牛,更注重模型,喜歡自己定製,那就不推薦這個庫了,這個庫下比較出名的就是wide and deep 模型,線性模型和深度模型的結合;


END