Source code for libcity.utils.normalization

import numpy as np


[docs]class Scaler: """ 归一化接口 """
[docs] def transform(self, data): """ 数据归一化接口 Args: data(np.ndarray): 归一化前的数据 Returns: np.ndarray: 归一化后的数据 """ raise NotImplementedError("Transform not implemented")
[docs] def inverse_transform(self, data): """ 数据逆归一化接口 Args: data(np.ndarray): 归一化后的数据 Returns: np.ndarray: 归一化前的数据 """ raise NotImplementedError("Inverse_transform not implemented")
[docs]class NoneScaler(Scaler): """ 不归一化 """
[docs] def transform(self, data): return data
[docs] def inverse_transform(self, data): return data
[docs]class NormalScaler(Scaler): """ 除以最大值归一化 x = x / x.max """ def __init__(self, maxx): self.max = maxx
[docs] def transform(self, data): return data / self.max
[docs] def inverse_transform(self, data): return data * self.max
[docs]class StandardScaler(Scaler): """ Z-score归一化 x = (x - x.mean) / x.std """ def __init__(self, mean, std): self.mean = mean self.std = std
[docs] def transform(self, data): return (data - self.mean) / self.std
[docs] def inverse_transform(self, data): return (data * self.std) + self.mean
[docs]class MinMax01Scaler(Scaler): """ MinMax归一化 结果区间[0, 1] x = (x - min) / (max - min) """ def __init__(self, minn, maxx): self.min = minn self.max = maxx
[docs] def transform(self, data): return (data - self.min) / (self.max - self.min)
[docs] def inverse_transform(self, data): return data * (self.max - self.min) + self.min
[docs]class MinMax11Scaler(Scaler): """ MinMax归一化 结果区间[-1, 1] x = (x - min) / (max - min) x = x * 2 - 1 """ def __init__(self, minn, maxx): self.min = minn self.max = maxx
[docs] def transform(self, data): return ((data - self.min) / (self.max - self.min)) * 2. - 1.
[docs] def inverse_transform(self, data): return ((data + 1.) / 2.) * (self.max - self.min) + self.min
[docs]class LogScaler(Scaler): """ Log scaler x = log(x+eps) """ def __init__(self, eps=0.999): self.eps = eps
[docs] def transform(self, data): return np.log(data + self.eps)
[docs] def inverse_transform(self, data): return np.exp(data) - self.eps