天天看點

機器學習--資料預處理

歸一化

  • 目的

    使得單一特征對于最後的結果影響不太大,尤其是錯誤值

    機器學習--資料預處理
  • API
    機器學習--資料預處理
  • 代碼示範
from sklearn.preprocessing import MinMaxScaler


def mm():
    mm = MinMaxScaler()

    data = mm.fit_transform([[90,2,10,40],[60,4,15,45],[75,3,13,46]])

    print(data)

    return None

if __name__ == '__main__':
    mm()
           
  • 問題:如果資料中異常點較多,會有什麼影響

    對于最大值或者最小值會産生影響,也就對于歸一化過程産生影響,是以這種歸一化方法的魯棒性比較差,隻适合傳統精确小資料場景

标準化

  • 目的:通過對原始資料進行變換把資料變換到均值為0,标準差為1範圍内,如果出現異常點,由于具有一定的資料量,少量的異常點對于平均值的影響并不大,進而方差改變較小
    機器學習--資料預處理
  • API
    機器學習--資料預處理
  • 代碼示範
from sklearn.preprocessing import StandardScaler


def stand():
    std = StandardScaler()

    data = std.fit_transform([[1,-1,3], [2,4,2], [4,6,-1]])

    print(data)

    return None

if __name__ == '__main__':
    stand()
           
  • 總結

    在已有樣本足夠多的情況下比較穩定,适合現在嘈雜大資料場景

    一般都是進行标準化處理,而非歸一化處理

缺失值處理

  • 删除或者插補
    機器學習--資料預處理
    機器學習--資料預處理

    一般使用pandas:dropna,fillna

    但是要求資料格式為np.nan float類型

replace(“?”,np.nan)進行替換後使用fit_transform進行操作

  • 代碼示範
from sklearn.preprocessing import Imputer
import numpy as np


def im():
    im = Imputer(missing_values='NaN',strategy='mean',axis=0)
    
    data = im.fit_transform([[1,2],[np.nan,3],[7,6]])

    print(data)

    return None

if __name__ == '__main__':
    im()
           

繼續閱讀