KDD 數據預處理之數據標准化和缺失值補充


數據預處理

在數據清洗過程中,主要處理的是缺失值、異常值和重復值。所謂清洗,是對數據集通過丟棄、填充、替換、去重等操作,實現去除異常、糾正錯誤、補足缺失的目的。

缺失值

數據缺失分為兩種:一是行記錄的缺失,也定義為數據記錄丟失;二是數據列值的缺失,指由於各種原因導致的數據記錄中某些列的值空缺。

不同的數據存儲和環境中對於缺失值的表示結果不同,例如數據庫中是Null、Python返回對象是None、Pandas或Numpy中是NaN。

缺失值處理方法

  • 刪除 : 如果每列或者行數據缺失值達到一定比例, 刪除整行或整列。減少缺失數據記錄對總體數據的影響。但丟棄意味着會消減數據特征。

  • 補全 :

    • 統計法:對於數值型的數據,使用均值、加權均值、中位數等方法補足;對於分類型數據,使用類別眾數最多的值補足。
    • 向前/向后填充:forward imputation / backward imputation data = df.fillna(method='ffill').fillna(method='bfill')
    • 熱卡填補(Hot deck imputation):熱卡填充法是在完整數據中找到一個與它最相似的對象,然后用這個相似對象的值來進行填充。通常會找到超出一個的相似對象,在所有匹配對象中沒有最好的,而是從中隨機的挑選一個作為填充值。這個問題關鍵是不同的問題可能會選用不同的標准來對相似進行判定,以及如何制定這個判定標准。該方法概念上很簡單,且利用了數據間的關系來進行空值估計,但缺點在於難以定義相似標准,主觀因素較多。
    • K最近距離鄰法(K-means clustering):利用無監督機器學習的聚類方法。通過K均值的聚類方法將所有樣本進行聚類划分,然后再通過划分的種類的均值對各自類中的缺失值進行填補。歸其本質還是通過找相似來填補缺失值。
    • 模型法:如,隨機森林。基於已有的其它字段,將缺失字段作為目標變量進行預測,從而得到較為可能的補全值。如果帶有缺失值的列是數值變量,采用回歸模型補全;如果是分類變量,則采用分類模型補全。
    • 專家補全:對於少量且具有重要意義的數據記錄,專家補足也是非常重要的一種途徑。
    • 其他方法:例如隨機法、特殊值法、多重填補等。

Demo

Demo on Github

部分代碼

用每列平均值補充缺失值

sklearn api

import pandas as pd
import numpy as np
from sklearn.preprocessing import Imputer, StandardScaler

df = pd.DataFrame()
df['x0'] = [1,2,3,4,5,np.nan]
df['x1'] = [np.nan,7,8,1,2,5]
df = np.array(df)

mean_imputer = Imputer(missing_values='NaN', strategy='mean', axis=0)
mean_imputer = mean_imputer.fit(df)
imputed_df = mean_imputer.transform(df)
print(imputed_df )

數據標准化

sklearn api

對於標准化來說:如果出現異常點,由於具有一定數據量,少量的異常點對於平均值的影響並不大,從而方差改變較小。在已有樣本足夠多的情況下比較穩定,適合嘈雜的大數據場景。

scaler = StandardScaler()
scaler.fit(imputed_df)
transform_df = scaler.transform(imputed_df)
print(transform_df)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM