我有一个有4个特性的numpy数组。我想使用sklearn的minMaxScalar来扩展第二个特性。假设特征是A,B,C,D,numpy数组是
[ [1,2,3,4], [5,6,7,8], [9,10,11,12], [13,14,15,16]]
A-1,5,9,13:
B-2,6,10,14:
C-3,7,11,15:
D-4、8、12、16
我要缩放第二个特征B,即
缩放后->B-0.0,0.333,0.667,1.0
我这样做的方法是提取B特性,用一个特性创建一个新的numpy数组,并缩放新的数组。通过使用已经定义的数组,我如何在不创建任何新数组的情况下做到这一点?
发布于 2018-02-11 08:06:25
你可以使用切片和广播。但是你需要注意切片的形状。见下面的代码
In [1]: import numpy as np
In [2]: from sklearn.preprocessing import MinMaxScaler
In [3]: sc = MinMaxScaler()
In [4]: X = [ [1,2,3,4], [5,6,7,8], [9,10,11,12], [13,14,15,16]]
In [5]: X = np.array(X,dtype=float)
In [6]: X
Out[6]:
array([[ 1., 2., 3., 4.],
[ 5., 6., 7., 8.],
[ 9., 10., 11., 12.],
[13., 14., 15., 16.]])
In [7]: X[:,1:2] = sc.fit_transform(X[:,1:2])
In [8]: X
Out[8]:
array([[ 1. , 0. , 3. , 4. ],
[ 5. , 0.33333333, 7. , 8. ],
[ 9. , 0.66666667, 11. , 12. ],
[13. , 1. , 15. , 16. ]])
切分所有行(:)和索引1的列,但不包括2 (1:2),我们选择列并保持其形状,这是必需的,因为minmaxscaler需要一个2D数组输入。广播分配也需要形状一致性。
https://stackoverflow.com/questions/48729365
复制相似问题