python數據預處理

寫在前面

最近在看python數據分析與挖掘實戰這本書,所以就順手做個筆記,方便日後忘記了查找。這本書前面五章主要講的是數據挖掘的建模過程,包括數據探索、數據預處理以及挖掘建模常用算法等幾個方面。後面十章是案例分析,每章一個實戰案例,加深對數據分析與挖掘的理解。前面的都比較基礎,所以從第四章數據預處理開始看。

1. 數據清洗

數據清洗主要是刪除原始數據集中的無關數據、重複數據,平滑噪聲數據,篩選掉與挖掘主題無關的數據,處理缺失值、異常值等。

1.1 缺失值處理

處理缺失值主要有三種方法:刪除記錄、數據插補和不處理。當然這裏數據插補是最使用最多的,包括均值/中位數/衆數插補、固定值插補、最近鄰插補、迴歸方法插補和插值法。

(1)拉格朗日插值法

拉格朗日插值法是一個數學問題


將缺失的函數值對應的點x帶入插值公式即得到缺失值的近似值L(x)。

但是當插值結點增減時,插值多項式就會隨之變化,這在實際計算中是很不方便的,爲了克服這一點,提出了牛頓插值法。

(2)牛頓插值法

  • 差商公式


  • 聯立以上差商公式建立插值多項式


  • 將缺失的函數值對應的點x帶入插值公式即得到缺失值的近似值f(x)

牛頓插值法的優點是計算較簡單,尤其是增加節點時,計算只增加一項,這是拉格朗日插值無法比的。 
缺點是仍沒有改變拉格朗日的插值曲線在節點處有尖點,不光滑,插值多項式在節點處不可導等。

1.2 異常值處理

異常值處理方法 f方法描述
刪除含有異常值的記錄 a直接將含有異常值的記錄刪除
視爲缺失值 l利用缺失值處理的方法進行處理
平均值修正 y用前後兩個觀測值的平均值修正該異常值
不處理 m某些異常值也是包含有用的信息

2. 數據集成

數據集成就是將多個數據源合併存放在一個一致的數據存儲(如數據倉庫)中的過程。

2.1 實體識別

指不同數據源識別出現實世界的實體,他的任務是同意不同數據源的矛盾之處。常見形式有:

  • 同名異義
  • 異名同義
  • 單位不同意

2.2 冗餘屬性識別

數據集成往往造成數據冗餘,例如同一屬性出現多次以及同一屬性命名不一致導致重複

3. 數據變換

數據變換主要是對數據進行規範化處理,將數據轉換成適當的形式,以適用與挖掘任務及算法的需要。

3.1 簡單函數變換

是指對原始數據進行某些數學函數變換,常用的有平方、開方、取對數等等。

簡單函數變換常用來將不具有正態分佈的數據變換成具有正態分佈的數據。

在時間序列分析中,有時簡單的對數變換或者查分運算就可以將非平穩序列轉換成平穩序列。

3.2 規範化

  • 最大-最小規範化
  • 零-均值規範化
  • 小數定標規範化

3.3 連續屬性離散化

某些算法要求數據是分類屬性形式,於是常常需要將連續屬性變換成分類屬性。

數據離散化涉及兩個子問題:確定分類樹以及如何將連續屬性值映射到這些分類值。

常用的離散化方法:

(1)等寬法

將屬性的至分成具有相同寬度的區間,區間的個數有數據本身的特點決定,類似於製作頻率分佈表

(2)等頻法

將相同數量的記錄放進每個區間。

(3)基於聚類分析的方法

首先將連續屬性的值用聚類算法進行聚類,然後再將聚類得到的簇進行處理,合併到一個簇的連續屬性值並做同一標記。

3.4 屬性構造

在數據挖掘過程中,爲了提取更有用的信息,挖掘更深層次的模式,我們需要對已有的屬性集構造出新的屬性,並加入到現有的屬性集合中。

3.5 小波變換

小波變換在信號分析領域應用較爲廣泛。關於小波變換的具體細節可以隨便去CSDN上找一篇教程來學習,這裏就不再贅述。

小波變換可以把非平穩信號分解爲表達不同層次、不同頻帶信息的數據序列,即小波係數。選取適當的小波係數,即完成了信號的特徵提取。

在python中有專門的信號處理庫Pywavelets(pywt)

4. 數據規約

如果數據集過大,則會導致分析過程耗時耗力,數據規約可以產生更小但保持原數據集完整性的新數據集。

(1)屬性規約

通過屬性合併來創建新屬性維數,或者直接通過刪除不相關的數學來減少數據維數。

屬性規約方法主要有:合併屬性、逐步向前選擇、逐步向後刪除、決策樹歸納、主成分分析。

主成分分析(PCA)是一種用於連續屬性的數據降維方法,它構造了原始數據的一個正交變換,新空間的基底取出了原始空間基底下數據的相關性,只需使用少數新變量就能夠解釋原始數據中的大部分變異。

(2)數值規約

參數規約是指通過選擇替代的、較小的數據來減少數據量,包括有參數方法和無參數方法。

5. python主要數據預處理函數

函數名 h函數功能 s所屬擴展庫
interpolate y一維、高維數據插值 Scipy
unique q取出數據中的重複元素,得到單值元素列表 Pandas
isnull p判斷是否空值 Pandas
notnull p判斷是否空值 Pandas
PCA d對指標變量矩陣進行主成分分析 Scikit-learn
random s生成隨機矩陣 Numpy

 

今天我的小橘貓,三月,跑丟整整24小時了。剛開始寫這篇筆記的時候她還趴在我電腦前的。

對不起。

2018.05.06