在过去的几个小时里,我一直在努力解决这个问题,但我遇到了太多的问题。我想使用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])
发布于 2018-07-21 04:27:29
使用公式计算特定列的Xnorm的任务:-
Xnorm = Xmax-X / Xmax-Xmin
如果您将该特定列中的值的符号反转,然后在该列中应用基本标准化,则可以解决此问题。
证明
如果某列的最大值为A,最小值为B,则将所有值乘以-1后,新的最小元素的绝对值将变为|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的值是所需的值,即使用所提出的反向标准化公式计算的值。
希望这能有所帮助。
不断询问,不断成长:)
https://stackoverflow.com/questions/51449039
复制相似问题