寫在前面
這篇部落格的主要內容
- 應用MinMaxScaler實現對特徵資料進行歸一化
- 應用StandardScaler實現對特徵資料進行標準化
特徵預處理
定義
通過一些轉換函式將特徵資料轉換成更加適合演算法模型的特徵資料過程
特徵預處理API
sklearn.preprocessing
為什麼要進行歸一化/標準化?
特徵的單位或者大小相差較大,或者某特徵的方差相比其他的特徵要大出幾個數量級,容易影響(支配)目標結果,使得一些演算法無法學習到其它的特徵
歸一化
定義
通過對原始資料進行變換把資料對映到(預設為[0,1])之間
作用於每一列,max為一列的最大值,min為一列的最小值,那麼X’’為最終結果,mx,mi分別為指定區間值預設mx為1,mi為0
API
- sklearn.preprocessing.MinMaxScaler (feature_range=(0,1)… )
- MinMaxScalar.fit_transform(X)
- X:numpy array格式的資料[n_samples,n_features]
- 返回值:轉換後的形狀相同的array
- MinMaxScalar.fit_transform(X)
資料
milage,Liters,Consumtime,target
40920,8.326976,0.953952,3
14488,7.153469,1.673904,2
26052,1.441871,0.805124,1
75136,13.147394,0.428964,1
38344,1.669788,0.134296,1
程式碼
from sklearn.preprocessing import MinMaxScaler
import pandas as pd
def minmax_demo():
data = pd.read_csv("dating.txt")
print(data)
# 1、例項化一個轉換器類
transfer = MinMaxScaler(feature_range=(2, 3))
# 2、呼叫fit_transform
data = transfer.fit_transform(data[['milage','Liters','Consumtime']])
print("最小值最大值歸一化處理的結果:\n", data)
return None
結果
標準化
定義
通過對原始資料進行變換把資料變換到均值為0,標準差為1範圍內
作用於每一列,mean為平均值,σ為標準差
API
- sklearn.preprocessing.StandardScaler( )
- 處理之後每列來說所有資料都聚集在均值0附近標準差差為1
- StandardScaler.fit_transform(X)
- X:numpy array格式的資料[n_samples,n_features]
- 返回值:轉換後的形狀相同的array
資料
同上歸一化介紹中使用的資料
程式碼
from sklearn.preprocessing import StandardScaler
import pandas as pd
def stand_demo():
data = pd.read_csv("dating.txt")
print(data)
transfer = StandardScaler()
data = transfer.fit_transform(data[['milage','Liters','Consumtime']])
print("標準化的結果:\n",data)
print("每一列特徵的平均值:\n",transfer.mean_)
print("每一列特徵的方差:\n",transfer.var_)
return None