scikit-learn中的Invert MinMaxScaler

17
为了喂养我的生成神经网络,我需要将一些数据归一化到-1和1之间。 我使用Sklearn中的MinMaxScaler来完成这个过程,效果非常好。现在,我的生成器将输出在-1和1之间的数据。如何反归一化MinMaxScaler以获取实际数据?
3个回答

34

让我们从定义Pandas数据帧开始:

cols = ['A', 'B']
data = pd.DataFrame(np.array([[2,3],[1.02,1.2],[0.5,0.3]]),columns=cols)

图片描述

我们使用MinMaxScaler来对数据进行缩放。

scaler = preprocessing.MinMaxScaler(feature_range = (0,1))
scaled_data = scaler.fit_transform(data[cols])

在此输入图片描述

现在,要反转变换,您应该调用逆变换:

scaler.inverse_transform(scaled_data)

输入图像描述


但是使用这种方法,您会失去列名。 - Nikolay Frick
10
我可以为您翻译。这句话的意思是“我怎样才能将列B恢复为原始状态?”请注意,我的翻译仅涉及对原文的转换,不包括附加解释或其他内容。 - Henryk Borzymowski
@NikolayFrick 为了保留列名:df[list(df.columns)] = scaler.transform(df)非常有效。 - Pe Dro

14

1
def rev_min_max_func(scaled_val):
    max_val = max(df['target'])
    min_val = min(df['target'])
    og_val = (scaled_val*(max_val - min_val)) + min_val
    return og_val
df['pred_target'] = scaled_labeled_df['pred_scaled_target'].apply(lambda x: rev_min_max_func(x))

即使对我来说这也起作用!

这里有三个不同的列名:targetpred_scaled_targettarget。那么target是指什么?我82%确定我知道前两个是什么。 - SCool

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接