Sklearn 数据归一化处理

利用preprocessing.MinMaxScaler实现数据归一化

中心化的本质是让所有记录减去一个固定值,即让数据样本数据平移到 某个位置。缩放的本质是通过除以一个固定值,将数据固定在某个范围之中,取对数也算是一种缩放处理。

MinMaxScaler有一个重要参数,feature_range,控制我们希望把数据压缩到的范围,默认是[0,1]。
pd.DataFrame(data):将numpy数组展示为表格形式

from sklearn.preprocessing import MinMaxScaler

data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]]

import pandas as pd

print(pd.DataFrame(data))
print()

# 分布归一化
scaler = MinMaxScaler()
scaler = scaler.fit(data)  # 本质生成 max(x) 和 min(x)
result = scaler.transform(data)
print(pd.DataFrame(result))
print()

# 一步归一化
result2 = scaler.fit_transform(data)
print(pd.DataFrame(result2))
print()

# 归一化到 5-10 之间
data2 = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]]
scaler2 = MinMaxScaler(feature_range=[5, 10])
result3 = scaler2.fit_transform(data2)
print(pd.DataFrame(result3))
print()

运行结果:

     0   1
0 -1.0   2
1 -0.5   6
2  0.0  10
3  1.0  18

      0     1
0  0.00  0.00
1  0.25  0.25
2  0.50  0.50
3  1.00  1.00

      0     1
0  0.00  0.00
1  0.25  0.25
2  0.50  0.50
3  1.00  1.00

       0      1
0   5.00   5.00
1   6.25   6.25
2   7.50   7.50
3  10.00  10.00

利用数据归一化公式numpy实现

import numpy as np

X = np.array([[-1, 2], [-0.5, 6], [0, 10], [1, 18]])

# 数据归一化的标准公式
X_nor = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=-0))
print(X_nor)
print()

#逆转归一化
X_returned = X_nor * (X.max(axis=0) - X.min(axis=0)) + X.min(axis=0)
print(X_returned)

运行结果:

[[0.   0.  ]
 [0.25 0.25]
 [0.5  0.5 ]
 [1.   1.  ]]

[[-1.   2. ]
 [-0.5  6. ]
 [ 0.  10. ]
 [ 1.  18. ]]

你可能感兴趣的:(Sklearn)