科研钥匙

数据处理III:无量纲化

2019-02-19  本文已影响107人  Franchen

下列data数据来源Kaggle的Titanic题目

# 测试数据:
na = np.asarray([
  [1., 10., -100.],
  [2., 20., -200.],
  [3., 30., -300.]
])

标准化:StandardScaler

前提:特征值服从正态分布。

from sklearn.preprocessing import StandardScaler
print StandardScaler().fit_transform(na)

[[-1.22474487 -1.22474487  1.22474487]
 [ 0.          0.          0.        ]
 [ 1.22474487  1.22474487 -1.22474487]]
data[['Age', 'Fare']] = StandardScaler().fit_transform(data[['Age', 'Fare']])

# 或者
data['Age_scaled'] = scaler.fit_transform(data['Age']) # 年龄
data['Fare_scaled'] = scaler.fit_transform(data['Fare']) # 票价

由于版本不同,有时传入1维数组时会报错:Expected 2D array, got 1D array instead,我们可以暂用data.Age.values.reshape(-1,1)进行处理。

data['Age_scaled'] = scaler.fit_transform(data['Age'].values.reshape(-1,1))
data['Fare_scaled'] = scaler.fit_transform(data['Fare'].values.reshape(-1,1))

numpy.reshape

Expected 2D array, got 1D array instead


区间放缩

# MinMaxScaler = (x - X.min) / (X.max - X.min)

from sklearn.preprocessing import MinMaxScaler
print MinMaxScaler().fit_transform(na)

[[ 0.   0.   1. ]
 [ 0.5  0.5  0.5]
 [ 1.   1.   0. ]]
# MaxAbsScaler = x / np.absolute(X).max

from sklearn.preprocessing import MaxAbsScaler
print MaxAbsScaler().fit_transform(na)

[[ 0.33333333  0.33333333 -0.33333333]
 [ 0.66666667  0.66666667 -0.66666667]
 [ 1.          1.         -1.        ]]

归一化:Normalizer

归一化与上两者的区别

from sklearn.preprocessing import Normalizer
print Normalizer().fit_transform(na)

[[ 0.00994988  0.09949879 -0.99498793]
 [ 0.00994988  0.09949879 -0.99498793]
 [ 0.00994988  0.09949879 -0.99498793]]
上一篇下一篇

猜你喜欢

热点阅读