1. 程式人生 > >機器學習實踐(四)—sklearn之特徵預處理

機器學習實踐(四)—sklearn之特徵預處理

一、特徵預處理概述

  • 什麼是特徵預處理

    # scikit-learn的解釋
    provides several common utility functions and transformer classes to change raw feature vectors into a representation that is more suitable for the downstream estimators.
    

    翻譯過來:通過一些轉換函式將特徵資料轉換成更加適合演算法模型的特徵資料過程

  • 數值型資料的無量綱化:

    • 歸一化
    • 標準化
  • 為什麼我們要進行歸一化/標準化?

    百面機器學習-為什麼需要對數值型別的特徵做歸一化

    如果存在特徵的數值差別比較大的特徵,那麼分析出來的結果顯然就會傾向於數值差別比較大的特徵。

    如果存在特徵的方差比較大的特徵,那麼分析出來的結果顯然就會傾向於方差比較大的特徵。

    我們需要用到一些方法進行無量綱化,使不同規格的資料轉換到同一規格。

二、歸一化

  • 定義

    通過對原始資料進行變換把資料對映到 [0,1] 之間

  • 公式

    x

    = x o l
    d
    m i n
    m a x m i n
    x^{'} = \frac{x^{old}-min}{max-min}

    x n e w = x ( m x m i ) + m i x^{new} = x^{'} * (mx - mi) + mi

    max、min 分別為該特徵資料中的最大值、最小值

    mx、mi 分別為設定的歸一化區間的最大值、最小值

  • sklearn API:

    sklearn.preprocessing.MinMaxScaler (feature_range=(0,1))

    • MinMaxScalar.fit_transform(X)
      • X:numpy array 格式的資料
      • return:轉換後的形狀相同的array
  • 示例程式碼:

import pandas as pd
from sklearn.preprocessing import MinMaxScaler

data = pd.read_csv('dating.txt')

# 1、建立傳喚器,預設 feature_range=(0,1)
transfer = MinMaxScaler(feature_range=(2,3))

# 2、呼叫fit_transform
transfer.fit_transform(data[['milage','Liters','Consumtime','target']])
  • 歸一化缺點:

    • 最大值最小值是變化的,歸一化容易受極值影響,穩健性較差。
    • 最大值與最小值容易受異常點影響,所以這種方法魯棒性較差,只適合傳統精確小資料場景。

三、標準化

  • 定義

    通過對原始資料進行變換把資料變換到均值為0,標準差為1範圍內

  • 公式

    x n e w = x m e a n σ x^{new} = \frac{x - mean}{σ}

    作用於每一列,mean為平均值,σ為標準差

  • sklearn API:

    sklearn.preprocessing.StandardScaler( )

    • 處理之後每列來說所有資料都聚集在均值0附近標準差差為1
    • StandardScaler.fit_transform(X)
      • X:numpy array格式的資料
      • return:轉換後的形狀相同的array
  • 示例程式碼:

import pandas as pd
from sklearn.preprocessing import StandardScaler

data = pd.read_csv('dating.txt')

# 1、建立轉換器
transfer = StandardScaler()

# 2、呼叫fit_transform
new_data = transfer.fit_transform(data[data.columns[:3]])

# 3、列印標準化後的結果
print(new_data)
  • 歸一化的缺點在標準化下不存在

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