在过去的几个小时里,我一直试图弄清楚这一点,但是我遇到了很多问题。我想使用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])
答案 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列的值是所需值,即使用建议的逆标准化公式计算出的值。
希望这会有所帮助。
继续提问,保持成长:)