面對眾多資料難以下手?資料預處理讓你輕輕鬆鬆“超車”

格伯納發表於2018-06-27

眾所周知,基於現實世界資料不完整(缺少屬性值,只有聚合資料),資料不一致(比如說錯誤或異常值)等原因,我們對資料預處理越發的看重。

在機器學習演算法中,我們通常會使用一些技術來處理資料,以獲得更好的結果。在這裡,作者使用的是Python語言,你也可以用其他語言來處理資料。

面對眾多資料難以下手?資料預處理讓你輕輕鬆鬆“超車”


在python中,我們首先匯入庫/模組,這些庫/模組可以幫助我們將程式碼區分為不同的部分。

匯入庫

面對眾多資料難以下手?資料預處理讓你輕輕鬆鬆“超車”


在這裡,我們使用了不同的資料集,其中包括一些獨立的變數。

匯入資料集

面對眾多資料難以下手?資料預處理讓你輕輕鬆鬆“超車”


在匯入資料時,我們發現在"年齡"和"工資"方面有一些缺失值。並且某些分類資料包含在了"採購"這一獨立值中。

因此,我們需要從實際情況出發,解決這些問題。

缺失值

面對眾多資料難以下手?資料預處理讓你輕輕鬆鬆“超車”


想查詢缺失值,我們就需要找出平均值。

分類資料

面對眾多資料難以下手?資料預處理讓你輕輕鬆鬆“超車”


什麼是分類屬性?

面對眾多資料難以下手?資料預處理讓你輕輕鬆鬆“超車”


分類變數是屬於特定類別的變數。像頭髮顏色、性別、大學專業、大學就讀、政治傾向、殘疾或性取向都可以是列出分類變數的類別。通常,這些變數在一個集合中是固定不變的。

例如:

"頭髮顏色"這一類別可以包含"黑色"、"棕色"、"金色"和"紅色"這些分類變數。

"性別"類別可以包含"男性"、"女性"或"其他人"這些分類變數。

拆分資料集

面對眾多資料難以下手?資料預處理讓你輕輕鬆鬆“超車”


拆分資料集意味著將完整的資料集分成兩部分。即拆分為:

1.測試資料

2.訓練資料

在拆分中,測試資料應包含20%的資料,訓練資料應包含80%的資料。為了拆分資料,我們使用帶有cross_validation的scikit-learn包,並然後把它匯入模組train_test_split中。

功能擴充

面對眾多資料難以下手?資料預處理讓你輕輕鬆鬆“超車”


面對眾多資料難以下手?資料預處理讓你輕輕鬆鬆“超車”


什麼是StandardScaler?

對許多機器學習估計器來說,資料集StandardScaler化是一種極其常見的需求。如果單個特徵不像標準的正態分佈資料時(例如,均值為0的高斯分佈和單位方差為0的高斯分佈),它們的表現會很糟糕。

預處理模組提供了實用程式類StandardScaler分析器,該分析器通過Transformer API來計算訓練和測試資料集上的均值和標準差。相關連結:http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.StandardScaler.html

FIT_Transform()和Transform()之間的區別?

將資料居中(使其均值為0,單位標準差為0),減去均值,再除以標準差。

面對眾多資料難以下手?資料預處理讓你輕輕鬆鬆“超車”


因此,每個sklearn的變換的fit()只計算引數(例如StandardScaler的μ和σ)並將它們儲存為內部物件狀態。

功能擴充方法

面對眾多資料難以下手?資料預處理讓你輕輕鬆鬆“超車”


參考資料

如果你想要完整的python程式碼對每個資料進行預處理,請訪問下面的連結:https://github.com/LAsain/Machine_Learning/blob/master/Data_Preprocessing.ipynb

此外,關於資料預處理的更多細節,請點選下面這個連結。熟練掌握這些資料預處理方法,能使你更上一層樓。

連結:http://scikit-learn.org/stable/modules/preprocessing.html

資料預處理的具體細節及其型別,你可以參照這個連結:https://medium.com/@silicon.smile1/data-preprocessing-b1552b4060f3(在這篇文章中,你會知道為什麼我們需要資料預處理? 資料清理、資料整合、資料轉換、資料離散化等更多內容。)

面對眾多資料難以下手?資料預處理讓你輕輕鬆鬆“超車”

出品


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31509949/viewspace-2156721/,如需轉載,請註明出處,否則將追究法律責任。

相關文章