python实现反归一化inverse_scaling

lhsmdu是拉丁超立方抽样的一个包,从github中下载的。利用这个抽样获得的是已经归一化的值,也就是0~1之间的多维数组。 现在把这些数组还原到原取值范围内的真值。代码如下:

import lhsmdu
import numpy 
import matplotlib.pyplot as plt
import random

# inverse_transform func
def transition_sample(sample, max_min):
#     scalar is:   the fist array is max , the second array is min
    sample = np.array(sample)
    num_dimensions = sample.shape[0]
    num_samples = sample.shape[1]
#     print("sample:", sample,"\n","maxmin", max_min,"\n")
    scal = max_min[0]-max_min[1]
    print("1scal:", scal, "\n")
    scal = scal.reshape(num_dimensions,1)
    print("max_min_scalar:\n", scal)
    each_dimension_min = max_min[1].reshape(num_dimensions, 1)
    print("each_dimension_min: \n", each_dimension_min)
    scal_sample = sample * scal + each_dimension_min
    return scal_sample

test_sample1 = lhsmdu.sample(3, 5)
#max_min has two sub-array = [[max-array], [min-array]]
max_min = np.array([[10, 100, 1000], [0, 0, 1]])
sca_sample1 = transition_sample(test_sample1, max_min)
print(test_sample1, sca_sample1)

result:

1scal: [ 10 100 999] 

max_min_scalar:
 [[ 10]
 [100]
 [999]]
each_dimension_min: 
 [[0]
 [0]
 [1]]

(matrix([[0.3731836 , 0.6263687 , 0.49052078, 0.09095371, 0.89126674],
         [0.58614079, 0.86543857, 0.72285461, 0.17926269, 0.21010773],
         [0.37571079, 0.1529918 , 0.64157448, 0.46510226, 0.86211735]]),
 array([[  3.73183596,   6.26368704,   4.90520776,   0.90953712,
           8.91266742],
        [ 58.61407898,  86.54385727,  72.28546074,  17.92626893,
          21.01077306],
        [376.33508376, 153.83880783, 641.93290392, 465.63715667,
         862.25523207]]))
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: inverse_transform是指将经过归一化处理的数据还原回原始数据的操作。在机器学习,常常需要对数据进行归一化处理,以便更好地训练模型。但是,在使用模型进行预测时,需要将预测结果还原回原始数据的范围,这就需要使用inverse_transform函数。 ### 回答2: 在深度学习领域,将数据进行归一化处理是一个很常见的操作。归一化可以把数据范围缩放到特定的区间内,有助于提高模型的稳定性和收敛速度。在训练模型过程,我们常常需要将归一化的数据转化为原来的数据范围。此时,就可以用到归一化的方法,也就是inverse_transform。 inverse_transform是对原来的归一化操作进行逆运算的方法,可以将归一化后的数据还原为原始数据。比如,在使用MinMaxScaler对数据进行归一化后,需要将模型预测的结果的值通过inverse_transform方法逆归一化为原来的范围。同样的,在使用StandardScaler对数据进行归一化时,inverse_transform的方法可以将数据还原为原来的均值和方差。 在使用inverse_transform方法进行归一化时,需要注意的是要使用和归一化时相同的方法和参数,以确保数据的还原正确无误。此外,在实际使用还需要注意数据的边界情况,以避免出现异常情况。 总的来说,inverse_transform是深度学习领域常用的方法之一,可以帮助我们将归一化后的数据还原为原始数据范围,有助于提高模型的可解释性和效果。 ### 回答3: 在机器学习模型,通常我们对数据进行归一化或标准化的操作,以使得不同特征具有统一的数据分布,进而更好地训练和预测模型。但是,在实际应用,我们需要把这些标准化的数据还原成原始数据,这时候就需要用到归一化操作,也称为inverse_transform。 inverse_transform通常用于对模型的输出进行还原。以一个标准化的特征为例,如果对某个特征进行min-max归一化,我们需要对其进行如下操作:(x-x_min)/(x_max-x_min)。这个操作将把原始特征的值压缩到[0,1]之间。而如果要还原特征的值,我们需要通过如下公式还原: x = x_std * (x_max - x_min) + x_min 其x_std为标准化后的值,x_min和x_max则为该特征的最小值和最大值。 在sklearninverse_transform函数已经在很多Scaler类实现。例如,在StandardScaler,可以通过先拟合模型,然后调用inverse_transform函数将数据还原成原始值。同样,其他Scaler类也有类似的实现。 需要注意的是,归一化操作的实现需要一个前提条件,那就是我们需要保存原始数据的均值和方差等统计量,以便在后续对模型的预测或输出进行还原时,能够正确地归一化回原始数据。 总之,inverse_transform操作是一个非常有用的操作,它可以让我们在需要对标准化数据进行还原的时候,更加方便地恢复数据的原始值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值