给定2D数组,我想将其规格化为0-1。
我知道这可以实现如下
import numpy as np
from sklearn.preprocessing import normalize,MinMaxScaler
np.random.seed(0)
t_feat=4
t_epoch=3
t_wind=2
result = [np.random.rand(t_epoch, t_feat) for _ in range(t_wind)]
wdw_epoch_feat=np.array(result)
matrix=wdw_epoch_feat[:,:,0]
xmax, xmin = matrix.max(), matrix.min()
x_norm = (matrix - xmin)/(xmax - xmin)
产生
[[0.55153917 0.42094786 0.98439526], [0.57160496 0. 1. ]]
不过,我可以使用没有得到同样的结果MinMaxScaler
的sklearn
scaler = MinMaxScaler()
x_norm = scaler.fit_transform(matrix)
产生
[[0. 1. 0.], [1. 0. 1.]]
感谢任何想法
您正在标准化整个矩阵。MinMaxScaler专为机器学习而设计,因此可根据定义方式对每行或每列进行标准化。为了获得与您相同的结果,您需要将2D阵列转换为1D阵列。我在下面显示此内容,并在第一列中获得相同的结果:
import numpy as np
from sklearn.preprocessing import normalize, MinMaxScaler
np.random.seed(0)
t_feat=4
t_epoch=3
t_wind=2
result = [np.random.rand(t_epoch, t_feat) for _ in range(t_wind)]
wdw_epoch_feat=np.array(result)
matrix=wdw_epoch_feat[:,:,0]
xmax, xmin = matrix.max(), matrix.min()
x_norm = (matrix - xmin)/(xmax - xmin)
matrix = np.array([matrix.flatten(), np.random.rand(len(matrix.flatten()))]).T
scaler = MinMaxScaler()
test = scaler.fit_transform(matrix)
print(test)
-------------------------------------------
[[0.55153917 0. ]
[0.42094786 0.63123194]
[0.98439526 0.03034732]
[0.57160496 1. ]
[0. 0.48835502]
[1. 0.35865137]]
当使用MinMaxScaler进行机器学习时,通常需要标准化每列。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句