【问题标题】:Scale a particular feature in a NumPy array which have more than one features using minmaxScalar from sklearn使用 sklearn 中的 minmaxScalar 缩放具有多个特征的 NumPy 数组中的特定特征
【发布时间】:2018-07-21 14:42:49
【问题描述】:

我有一个具有 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 即----- 2 , 6 , 10 , 14
缩放后-> B---0.0 , 0.333 , 0.667 , 1.0
我通过提取 B 特征并使用一个特征制作一个新的 numpy 数组并缩放新数组来做到这一点。 只使用已定义的数组,如何在不创建任何新数组的情况下做到这一点?

【问题讨论】:

    标签: python python-2.7 numpy scikit-learn


    【解决方案1】:

    您可以使用切片和广播。但你需要注意切片的形状。看下面的代码

    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 数组输入。并且通过广播分配也需要形状一致性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-30
      • 1970-01-01
      • 1970-01-01
      • 2022-01-19
      • 2020-05-31
      • 1970-01-01
      • 2019-01-10
      • 2019-10-21
      相关资源
      最近更新 更多