當前位置:
首頁 > 科技 > 為什麼我們需要數據預處理?

為什麼我們需要數據預處理?

作者 | 邱雅婷

責編| 郭芮

數據挖掘的核心是什麼?這個的答案是演算法應該沒什麼疑問。那數據挖掘的基石又是什麼呢?那就是今天我們要來說的數據預處理。

什麼是數據預處理?

數據科學家們一直想為數據預處理賦予一個定義。其實簡單地說,數據預處理就是一種數據挖掘技術,本質就是為了將原始數據轉換為可以理解的格式或者符合我們挖掘的格式。

為什麼需要數據預處理?

在真實世界中,數據通常是不完整的(缺少某些感興趣的屬性值)、不一致的(包含代碼或者名稱的差異)、極易受到雜訊(錯誤或異常值)的侵擾的。因為資料庫太大,而且數據集經常來自多個異種數據源,低質量的數據將導致低質量的挖掘結果。就像一個大廚現在要做美味的蒸魚,如果不將魚進行去鱗等處理,一定做不成我們口中美味的魚。

數據預處理就是解決上面所提到的數據問題的可靠方法。

那它是怎麼做到的呢?

就像大廚準備處理魚的刀具一樣,數據預處理也是如此。它準備原始數據以便進一步處理。下面是數據預處理要採取的步驟,如圖:

數據清洗: 填寫缺失的值,光滑雜訊數據,識別或刪除離群點,並解決不一致性來「清理數據」;

數據集成:使用多個資料庫,數據立方體或文件;

數據歸約: 用替代的,較小的數據表示形式替換元數據,得到信息內容的損失最小化,方法包括維規約,數量規約和數據壓縮;

數據變換:將數據變換成使用挖掘的形式。

下面這張圖很形象得把這四個步驟的作用表現出來,挺有意思的。

數據預處理任務

應用

是時候採取一些簡單的實際應用來了解數據預處理是如何完成的。

下面的例子我們用 Python 來處理,還需要用到兩個庫,分別是 Numpy、Pandas。

準備數據

在這裡,我們有一個數據集,其中包括IT專業人員的信息,比如國家、工資、性別,如下:

我們可以隨意創建此數據集的副本。

我們可以觀察到上面的數據集包含一些空值,這是故意的。後面很快可以看到它發揮的作用

導入庫

簡單說下 Numpy、Pandas 這兩個庫的作用:Numpy 庫包含數學工具,它可以用於在我們代碼中的任何類型的數學;Pandas 庫用於導入和管理數據集。

下面是我們導入庫的方法:

導入數據集

我們已經導入庫了,接下來我們需要獲取數據集。在我本地里,我將我的數據集文件命名為『profess』,它的格式為.csv。

導入數據集後,我們輸出看下它的格式如何:

Good!我們成功得將數據集導入測試環境中。

數據清洗——查看缺失值

為了成功管理數據,缺失值的概念很重要。如果工程師沒有正確處理缺失值,可能最後得出關於數據的推斷是不準確的。我們再來仔細看下我們的數據的缺失值情況,用 Pandas 庫的 isnull 函數來看看。

我們可以發現 Age,Salary 列都有缺失值(就是為空的值),缺失值數量都為1。處理缺失值有7種處理方法,我們這裡說說比較常用的兩種。

1、此方法經常用於處理空值,如果某行有特定特徵d的空值,就刪除此行。如果特定列具有超過75%的缺失值,就刪除特定列。不過我們要在確保樣本數據足夠多的情況下,採用這個方法。因為我們要確保刪除數據後,不會增加偏差。

2、這個方法適用於具有年份或者年齡,金額等數字數據的功能。我們可以計算特徵的均值,中值或眾數,將其替換為缺失值。與第一種方法相比,這種可以抵消數據的缺失,產生更好的效果。

我們用來看一下操作:

我們成功替換掉了。

數據歸約

為了滿足挖掘需求,我們需要知道這些工程師們的薪水分布區間,但是我們只有『Salary』 薪水這一列,所以為了方便挖掘,我們給我們的數據集增加『薪水等級』 level 這一列,通過 Salary 列進行區間歸約,這種方法叫做「屬性構造」。我們看看操作:

我們定義一個『數據變換』的函數給,根據 Salary 判斷選擇區間進行變換並賦值給 level。

數據變換

我們可以看到 Salary 列也有空值,從業務上理解它應該是數字數值才是。但是我們發現我們的數據集中是貨幣格式,我們需要對它進行『數據變換』,轉換成我們所需的數字格式。來看下實際操作:

變換成功:

我們定義一個「數據變換」的函數,然後將它應用再 Salary 列上,最後同數據清洗那一步同樣的替換操作,我們這裡用平均值替換。

寫在最後

至此我們算走完數據預處理的一個基本流程。

這是比較基礎的一個小應用,但是相信我們以後處理數據的時候能有一個基本清晰的解決思路,以及如何選擇處理方法以及為什麼選擇有所了解。

數據挖掘一路走來也有幾十年的歷史了,數據預處理每個步驟都開發出很多的方法。由於不一致或臟數據的數量巨大,以及問題本身的複雜性,數據預處理仍然是一個活躍的研究領域。篇幅所限,無法一一敘述,以後會再深入。

作者:邱雅婷,就職於信用行業的互聯網公司,數據工程師,愛好讀書,思考。本文為作者投稿,版權歸其個人所有。

熱 文推 薦


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 CSDN 的精彩文章:

C++ 開發者怒了:這個無用的模塊設計最終會害死 C++!
如何用深度學習 AI 美顏實現天天 P 圖瘋狂變臉演算法? | 技術頭條

TAG:CSDN |