缩放数组(sklearn)-python

时间:2018-07-20 19:15:42

标签: python numpy scikit-learn sklearn-pandas numpy-ndarray

在过去的几个小时里,我一直试图弄清楚这一点,但是我遇到了很多问题。我想使用sklearn的MinMaxScaler。

公式就像

Xnorm = X-Xmin / Xmax-Xmin

我想将该公式应用到某些数组位置,但是在弄清楚如何也应用像这样的逆公式方面遇到困难

Xnorm = Xmax-X / Xmax-Xmin

我的尝试:我想对数组中的第1个和第3个值进行标准化,并且要对数组中的第2个值进行标准化,我想从上述公式中获得反标准化的结果

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 个答案:

答案 0 :(得分:1)

您使用公式:-

为特定列计算Xnorm的任务

Xnorm = Xmax-X / Xmax-Xmin

如果您将特定列中的值的符号取反然后在该列中应用基本标准化,则可以解决。

证明

如果一列的最大值为A,最小值为B,则将所有值乘以-1后,新的min元素的绝对值将变为| A |。

(因此分子将被计算为{-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列的值是所需值,即使用建议的逆标准化公式计算出的值。

希望这会有所帮助。

继续提问,保持成长:)