文章目錄
在數據挖掘中,原始數據存在大量不完整、有異常的數據,嚴重影響建模的執行效率,甚至會導致結果偏差,因此非常有必要進行數據清洗,數據清洗完成後接着或同時進行數據集成、轉換、規約等一系列處理,這個過程就是數據預處理。
總而言之,數據預處理的主要內容包括數據清洗、數據集成、數據變換和數據規約。
一、數據清洗
數據清洗主要是刪除原始數據集中的無關數據、重複數據,平滑噪聲數據,篩選掉與挖掘主題無關的數據,處理異常值、缺失值等。
1. 缺失值處理
缺失值處理主要包含三類:刪除記錄、數據插補和不處理。
常用數據插補方法如下:
2. 異常值處理
二、數據集成
數據集成是將多個數據源合併存放在一個一致的數據存儲中的過程。
在數據集成時,來自多個數據源的現實世界實體的表達形式是不一樣的,有可能不匹配,考慮實體識別問題和屬性冗餘問題,從而將源數據在最底層上加以轉換、提煉和集成。
1. 實體識別
有同名異義、異名異義和單位不統一
2. 冗餘屬性識別
有:
同一屬性多次出現;
同一屬性命名不一致導致重複。
有些冗餘屬性可以用相關性分析檢測。用相關係數度量兩個屬性之間的相互之間的蘊含程度。
三、數據變換
數據變化主要是對數據進行規範化的處理,將數據轉換成“適當的”形式。以適用於挖掘任務和算法的需要。
1. 簡單函數變換
平方、開方、取對數、差分運算等等
2. 規範化(歸一化)
比如將數據映射到[-1, 1]或者[0, 1]內。
數據規範化對於基於距離的算法尤爲重要。
3. 連續屬性離散化
一些數據挖掘算法,尤其是某些分類算法,要求數據是分離屬性形式。因此,需要將連續屬性變換成爲分類屬性,即連續屬性離散化。
連續屬性的離散化就是在數據的取值範圍內設定若干個離散的劃分點,將取值範圍劃分爲一些離散化的區間,最後用不同的符號或者整數值代表落在每個子區間的數據值。因此離散化涉及到:確定分類數以及如何將連續屬性映射到這些分類值。
常用離散化方法:
等寬法、等頻法、基於聚類分析的方法
4. 屬性構造
利用已有的屬性集構造出新的屬性,並融合到現有的屬性集合當中。
例如:
5. 小波變換
四、數據規約
數據規約產生更小但是保持原來數據完整性的新數據集,規約後的數據集分析和挖掘起來更有效率。
1. 屬性規約
通過屬性合併來創造新的屬性維數,或者通過刪除不相關的屬性來減少數據維度。從而提高數據挖掘效率、降低計算成本。
屬性規約的目標是尋找出最小的屬性子集並確保新的數據子集的概率分佈儘可能接近原來的。
2. 數值規約
通過選擇替代的、較小的數據來減小數據量,包括有參數方法和無參數方法。
有參數方法是用一個模型評估數據,只需存放參數,而不需要存放實際數據。例如迴歸和對數線性模型等。
無參數方法就需要存放實際數據,例如直方圖、聚類、抽樣(採樣)。
小筆記:桶表示給定屬性的一個連續區間。
五、Python主要數據預處理函數
參考書籍:
《Python數據分析與挖掘實戰》