1. 程式人生 > >機器學習 --2 特徵預處理 之 資料標準化

機器學習 --2 特徵預處理 之 資料標準化

歸一化:

  • API位置
sklearn.preprocessing
  • 歸一化:
    特點:通過對原始資料進行變換把資料對映到(預設為[0,1])之間
    注意也可以通過指定MinMaxScalar 裡邊的feature_range 來指定縮放的範圍
  • 示例程式碼
from sklearn.preprocessing import MinMaxScaler


# 歸一化
# 最小最大縮放(MinMaxScaler)
# 按照最大最小值縮放到 0-1 區間(也可以指定feature_range)
def mm():
    mm = MinMaxScaler(feature_range=(0,1))
    data = mm.fit_transform([[90, 2, 10, 40],
                      [60, 4, 15, 45],
                      [75, 3, 13, 46]])
    print(data)
    return None

if __name__=='__main__':
    mm()

標準化

  • API位置
from sklearn.preprocessing import StandardScaler
  • 標準化
    使用標準差,使得在樣本足夠多的情況下,比較穩定,適應資料比較嘈雜的環境(避免異常點過分影響)
  • 示例程式碼
from sklearn.preprocessing import StandardScaler
import numpy as np
# 缺失值處理
# 版本更新:
#  DeprecationWarning: Class Imputer is deprecated; Imputer was deprecated in version 0.20 and will be removed in 0.22. Import impute.SimpleImputer from sklearn instead.
#   warnings.warn(msg, category=DeprecationWarning)
from sklearn.preprocessing import Imputer


# 標準化縮放
def stand():
    std = StandardScaler()
    data = std.fit_transform([[1., -1., 3.],
                              [2., 4., 2.],
                              [4., 6., -1.]])
    print(data)
    return None


# 缺失值處理
# 可以刪除(不建議)
# 可以插補(使用平均值 或者 中位數) 一般按列填補
def im():
    # 指定缺失的是nan 軸用0軸(按列)
    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__":
    stand()
    im()
    '''
    [[1. 2.]
    [4. 3.]
    [7. 6.]]
    '''