Machine learning 有没有像「;scaler.逆变换()」;要获取部分定标器参数以反规范化答案?;

Machine learning 有没有像「;scaler.逆变换()」;要获取部分定标器参数以反规范化答案?;,machine-learning,scikit-learn,deep-learning,data-science,Machine Learning,Scikit Learn,Deep Learning,Data Science,我正在尝试规范化我的数据(使用shape(23687,7)),然后将原始数据集的平均值和标准值保存到“normalized_param.pkl” 将归一化数据拟合到我的LSTM模型后,我将得到一个答案数组(形状(23687,1)) 现在我要做的是: test_sc_path = os.path.join('normalized_standard', 'normalized_param.pkl') test_scaler = load(test_sc_path) test_denorm_value

我正在尝试规范化我的数据(使用shape(23687,7)),然后将原始数据集的平均值和标准值保存到“normalized_param.pkl”

将归一化数据拟合到我的LSTM模型后,我将得到一个答案数组(形状(23687,1)

现在我要做的是:

test_sc_path = os.path.join('normalized_standard', 'normalized_param.pkl')
test_scaler = load(test_sc_path)
test_denorm_value = test_scaler.inverse_transform(test_normalized_data)
ValueError:具有形状(23687,1)的不可广播输出操作数与广播形状(23687,7)不匹配


我想这是因为test\u scaler对象内部有7个dim参数,所以如果我只想对1个dim数据进行反规范化,我应该使用
test\u scaler.mean\u[-1]
“test\u scaler.scale\u[-1]
以获取我要计算的最后一个参数。

然而,我认为它相当复杂,有没有像scaler.inverse_transform()那样的sklearn方法可以很容易地用来解决这个问题


谢谢

是的,这里有一个方法。请参阅文档


谢谢,但我想这并不是我想问的。我知道你提到的方法。在我的例子中,我的输入数据有7个属性,但我的预测数据(输出)只有1个属性。所以当我规范化训练数据并保存
StandardScaler()时
,它实际上保存了7个属性。在另一个过程中,我加载
StandardScaler()
并规范化测试数据。将其拟合到模型后,我将得到只有1个属性的预测。现在,我想反规范化预测,我不能使用
scaler.fit\u转换(数据)
直接,因为该方法应该适合7个属性。我明白了,让我们分离X(预测值)和y(目标值),现在用
StandardScaler()分别缩放X和y
然后如果你用“y的缩放器”应用
逆变换,它应该这样做。基本上,如果目标变量y在7个属性中,则将其拆分。
from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()

scaler.fit(data) # Basically fits the data, store means & standard deviations.
scaler.transform(data) # Standardize (Normalize) the data with the scaler parameters
scaler.fit_transform(data) # Fits & Transform 
scaler.inverse_transform(data) # Apply inverse transformation for the input data.