利用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. ]]
来源:CSDN
作者:学习不易
链接:https://blog.csdn.net/qq_43656233/article/details/103975175