numpy中的数组函数
我有一个numpy阵列:numpy中的数组函数,numpy,Numpy,我有一个numpy阵列: a = np.arange(500).reshape(100,5) 我可以使用以下函数对其进行规范化: def normalizer(X, mini, maxi): X_std = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0)) X_scaled = X_std * (maxi - mini) + mini return X_scaled normalized = normalize
a = np.arange(500).reshape(100,5)
我可以使用以下函数对其进行规范化:
def normalizer(X, mini, maxi):
X_std = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0))
X_scaled = X_std * (maxi - mini) + mini
return X_scaled
normalized = normalizer(X, -1, +1)
现在,我想去规范化它,我的意思是得到原始数组。
我应该写什么函数
def denormalizer():
denormalized = denormalizer()
在我的回答中,我同意@Matt。 您可以做的一件事是保存归一化的所有参数(X_min、X_max、mini、maxi)并反转所有数学运算,例如:
def normalizer(X, mini, maxi):
X_min = X.min(axis=0)
X_max = X.max(axis=0)
X_std = (X - X_min) / (X_max - X_min)
X_scaled = X_std * (maxi - mini) + mini
return X_scaled, {'x_min': X_min,
'x_max': X_max,
'min': mini,
'max': maxi}
def denormalizer(X_scaled, params):
X_min = params['x_min']
X_max = params['x_max']
mini = params['min']
maxi = params['max']
X_std = (X_scaled - mini) / (maxi - mini)
X = X_std * (X_max - X_min) + X_min
return X
a = np.arange(500).reshape(100,5)
a_scaled, params = normalizer(a, -1, 1)
a_restored = denormalizer(a_scaled, params)
print(a - a_restored)
规范化将某些属性的值设置为1。在您的情况下,似乎使用了“最大行”值。您需要在一行中记录最大值和最小值,并反转您所做的操作。这似乎很奇怪,因为您只是在重新创建您作为输入的内容。是的,我想通过知道如何反转它来重新创建。