Массив функций в NumPy - PullRequest
0 голосов
/ 01 мая 2018

У меня есть массив 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 = normalizer(X, -1, +1)

Теперь я хочу денормализовать это, я имею в виду получить оригинальный массив. Какую функцию я должен написать?

 def denormalizer():

denormalized = denormalizer()

1 Ответ

0 голосов
/ 01 мая 2018

Я бы согласился в своем ответе с @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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...