代码之家  ›  专栏  ›  技术社区  ›  OptimusPrime

扩展数组(sklearn)-python

  •  1
  • OptimusPrime  · 技术社区  · 6 年前

    在过去的几个小时里,我一直在努力解决这个问题,但我遇到了很多问题。我想用sklearn的minmaxscaler。

    公式如下

    Xnorm = X-Xmin / Xmax-Xmin
    

    我想把这个公式应用到数组的一些位置,但是我很难找出如何也应用一个逆公式,比如

    Xnorm = Xmax-X / Xmax-Xmin
    

    我的尝试:我想对数组中的第一个和第三个值进行标准化,对数组中的第二个值进行标准化,我想从上面的公式中得到逆标准化

    X = np.array([[-0.23685953,  0.04296864,  0.94160742],  
                  [-0.23685953,  1.05043547,  0.67673782],
                  [0.12831355,  0.16017461,  0.27031023]])
    
    
    from sklearn import preprocessing
    minmax_scale = preprocessing.MinMaxScaler().fit(X)
    X_std = minmax_scale.transform(X.iloc[:,np.r_[1,3])
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Akshat    6 年前

    使用公式计算特定列的Xnorm的任务:-

    xnorm=xmax-x/xmax-xmin

    如果反转该列中值的符号,然后在该列中应用基本标准化,则可以求解。

    证明

    如果一列的max value为a,min value为b,则将所有值乘以-1后,新min元素的绝对值将变为|

    (所以分子将被计算为{-1*X--1*A}={A-X}),

    分母的相对差异将保持不变。


    在测试用例上实现逻辑:

    import numpy as np
    X = np.array([[-0.23685953,  0.04296864,  0.94160742],  
                  [-0.23685953,  1.05043547,  0.67673782],
                  [0.12831355,  0.16017461,  0.27031023]])
    
    
    from sklearn import preprocessing
    X[:, 1] =  -1*X[:, 1]
    minmax_scale = preprocessing.MinMaxScaler().fit(X)
    X_std = minmax_scale.transform(X)
    

    在打印x_std时,我们得到:

    array([[0.        , 1.        , 1.        ],
           [0.        , 0.        , 0.60543616],
           [1.        , 0.8836627 , 0.        ]])
    

    这表明第2列的值是期望值,即使用所提出的逆标准化公式计算的值。

    希望这会有所帮助。

    继续问,继续成长:)