Source code for fast.sampling.scalings

# Author: Maxwell I. Zimmerman <mizimmer@wustl.edu>
# Contributors:
# Copywright (C) 2017, Washington University in St. Louis
# All rights reserved.
# Unauthorized copying of this file, via any medium, is strictly prohibited
# Proprietary and confidential


#######################################################################
# imports
#######################################################################


import numpy as np
from ..base import base


#######################################################################
# code
#######################################################################


[docs]class feature_scale(base): """Feature scales data: (x - xmin) / (xmax - xmin)""" def __init__(self, maximize=True): self.maximize = maximize @property def class_name(self): return "feature_scale" @property def config(self): return { 'maximize': self.maximize }
[docs] def scale(self, values): value_spread = values.max() - values.min() if value_spread == 0.0: scaled_values = np.zeros(values.shape) else: if self.maximize: scaled_values = (values - values.min()) / value_spread else: scaled_values = (values.max() - values) / value_spread return scaled_values
[docs]class sigmoid_scale: """Scales values with a sigmoid""" def __init__(self, maximize=True, a=3): self.maximize = maximize self.a = a
[docs] def scale(self, values): sigma = np.median(values) sig_scale = (1 + ((values/sigma)**self.a))**-1 if self.maximize: sig_scale = 1 - sig_scale return sig_scale