StandardScalers資料預處理

2021-08-21 20:03:38 字數 1604 閱讀 4918

我們知道,在訓練模型的時候,要輸入features,即因子,也叫特徵。對於同乙個特徵,不同的樣本中的取值可能會相差非常大,一些異常小或異常大的資料會誤導模型的正確訓練;另外,如果資料的分布很分散也會影響訓練結果。以上兩種方式都體現在方差會非常大。此時,我們可以將特徵中的值進行標準差標準化,即轉換為均值為0,方差為1的正態分佈。所以在訓練模型之前,一定要對特徵的資料分布進行探索,並考慮是否有必要將資料進行標準化。 

標準化的方式一: 

使用preprocessing.scale()

from sklearn import preprocessing   

import numpy as np

x = np.array([[1., -1., 2.], [2., 0., 0.], [0., 1., -1.]])

x_scaled = preprocessing.scale(x)

#output :x_scaled = [[ 0. -1.22474487 1.33630621]

[ 1.22474487 0. -0.26726124]

[-1.22474487 1.22474487 -1.06904497]]

#scaled之後的資料零均值,單位方差

x_scaled.mean(axis=0) # column mean: array([ 0., 0., 0.])

x_scaled.std(axis=0) #column standard deviation: array([ 1., 1., 1.])

標準化的方式二: 

使用standardscaler,fit(),transform();或者fit_transform()

from sklearn.preprocessing import standardscaler

import numpy as np

x = np.array([[1., -1., 2.],

[2., 0., 0.],

[0., 1., -1.]])

ss = standardscaler()

ss2 = standardscaler()

print(x)

scaler = ss.fit(x) # # print(ss is scaler) # true

print(scaler)

print(scaler.mean_)

transform = scaler.transform(x)

print(transform)

# ss_transform = ss.transform(x) # 同上,完全一樣

# print(ss_transform)

# fit_transform = ss.fit_transform(x) # 重新學習了一遍,當然結果是一樣的

# print(fit_transform)

# ss2_transform = ss2.transform(x) # 沒有通過fit得到元資料的均值和方差,無法進行0-1標準化。直接使用是錯誤的

# print(ss2_transform)

ML Data Processing資料預處理

資料歸一化 引數 arrays list np.array matrices padas dataframes 需被分割的樣本集 options test size 在0.0和1.0之間,表示要從樣本集拆分到測試集的比例,預設為0.25 train size 在0.0和1.0之間,表示要從樣本集拆分...

StandardScalers資料預處理

我們知道,在訓練模型的時候,要輸入features,即因子,也叫特徵。對於同乙個特徵,不同的樣本中的取值可能會相差非常大,一些異常小或異常大的資料會誤導模型的正確訓練 另外,如果資料的分布很分散也會影響訓練結果。以上兩種方式都體現在方差會非常大。此時,我們可以將特徵中的值進行標準差標準化,即轉換為均...

Python 使用Pandas進行資料預處理

利用pandas庫中的get dummies函式對類別型特徵進行啞變數處理。get dummies語法 pandas.get dummies data,prefix none,prefix sep dummy na false,columns none,sparse false,drop first...