缩放数组 (sklearn) - python
Scaling an array (sklearn) - python
过去几个小时我一直在努力解决这个问题,但我遇到了很多问题。我想使用 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])
您使用以下公式计算特定列的 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 列的值是所需值,即使用建议的逆标准化公式计算的值。
希望这会有所帮助。
不断提问,不断成长:)
过去几个小时我一直在努力解决这个问题,但我遇到了很多问题。我想使用 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])
您使用以下公式计算特定列的 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 列的值是所需值,即使用建议的逆标准化公式计算的值。
希望这会有所帮助。
不断提问,不断成长:)