21#include <unordered_map>
57 std::unordered_map<SCALER_PARAMETER, std::vector<double>>
parameters;
74 virtual std::vector<T>
scale(
const std::vector<T>& input)
const = 0;
83 virtual std::vector<T>
descale(
const std::vector<T>& input)
const = 0;
107 static std::unique_ptr<Scaler<T>>
create_scaler(
const std::shared_ptr<const ScalerData> scalerData);
127 std::vector<T>
scale(
const std::vector<T>& input)
const override {
return input; };
136 std::vector<T>
descale(
const std::vector<T>& input)
const override {
return input; };
162 std::vector<T>
scale(
const std::vector<T>& input)
const override;
171 std::vector<T>
descale(
const std::vector<T>& input)
const override;
193 std::vector<T>
scale(
const std::vector<T>& input)
const override;
202 std::vector<T>
descale(
const std::vector<T>& input)
const override;
210 switch (scalerData->type) {
212 return std::make_unique<IdentityScaler<T>>();
218 throw MelonException(
" Error while creating sclaler: Invalid scaler type.");
221 catch (
const std::out_of_range& e) {
222 throw MelonException(
" Error while creating scaler: Scaler data object is missing a parameter.", e);
231 std::vector<T> output(input.size());
232 for (
size_t i = 0; i < input.size(); ++i) {
233 output.at(i) = _scaledLowerBounds.at(i) + (input.at(i) - _lowerBounds.at(i)) / (_upperBounds.at(i) - _lowerBounds.at(i)) * (_scaledUpperBounds.at(i) - _scaledLowerBounds.at(i));
244 std::vector<T> output(input.size());
245 for (
size_t i = 0; i < input.size(); ++i) {
246 output.at(i) = _lowerBounds.at(i) + (input.at(i) - _scaledLowerBounds.at(i)) / (_scaledUpperBounds.at(i) - _scaledLowerBounds.at(i)) * (_upperBounds.at(i) - _lowerBounds.at(i));
257 std::vector<T> output(input.size());
258 for (
size_t i = 0; i < input.size(); ++i) {
259 output.at(i) = (input.at(i) - _mean.at(i)) / _stdDev.at(i);
272 std::vector<T> output(input.size());
273 for (
size_t i = 0; i < input.size(); ++i) {
274 output.at(i) = _stdDev.at(i)*input.at(i) + _mean.at(i);
This class defines the exceptions thrown by FeedForwardNet.
Definition exceptions.h:32
Class implementing an identity scaling algorithm.
Definition scaler.h:115
std::vector< T > descale(const std::vector< T > &input) const override
Scales input values (= no scaling).
Definition scaler.h:136
std::vector< T > scale(const std::vector< T > &input) const override
Scales input value using the identity (= no scaling).
Definition scaler.h:127
~IdentityScaler()=default
Class implementing a MinMax-Scaling algorithm.
Definition scaler.h:144
MinMaxScaler(const std::vector< double > &lowerBounds, const std::vector< double > &upperBounds, const std::vector< double > &scaledLowerBounds, const std::vector< double > &scaledUpperBounds)
Definition scaler.h:153
std::vector< double > _scaledLowerBounds
Definition scaler.h:149
std::vector< double > _lowerBounds
Definition scaler.h:146
std::vector< T > scale(const std::vector< T > &input) const override
Scales input values using MinMax-Scaling.
Definition scaler.h:230
std::vector< double > _scaledUpperBounds
Definition scaler.h:150
std::vector< double > _upperBounds
Definition scaler.h:147
std::vector< T > descale(const std::vector< T > &input) const override
Descales input values using MinMax-Scaling.
Definition scaler.h:243
This class is a factory class for creating child instances of Scaler.
Definition scaler.h:97
static std::unique_ptr< Scaler< T > > create_scaler(const std::shared_ptr< const ScalerData > scalerData)
Factory function for creating a instance of a scaler object.
Definition scaler.h:208
Abstract class defining scaling algorithm.
Definition scaler.h:65
virtual ~Scaler()=default
Virtual desctructor to enable inheritance.
virtual std::vector< T > scale(const std::vector< T > &input) const =0
Scales input values.
virtual std::vector< T > descale(const std::vector< T > &input) const =0
Descales input values.
Class implementing a Standard-Scaling algorithm.
Definition scaler.h:179
std::vector< double > _mean
Definition scaler.h:181
std::vector< T > descale(const std::vector< T > &input) const override
Descales input values using Standard-Scaling.
Definition scaler.h:271
StandardScaler(const std::vector< double > &mean, const std::vector< double > &stdDev)
Definition scaler.h:184
std::vector< double > _stdDev
Definition scaler.h:182
std::vector< T > scale(const std::vector< T > &input) const override
Scales input values using Standard-Scaling.
Definition scaler.h:256
SCALER_PARAMETER
Definition scaler.h:41
@ MEAN
Definition scaler.h:45
@ SCALED_LOWER_BOUNDS
Definition scaler.h:46
@ SCALED_UPPER_BOUNDS
Definition scaler.h:47
@ STD_DEV
Definition scaler.h:44
@ UPPER_BOUNDS
Definition scaler.h:43
@ LOWER_BOUNDS
Definition scaler.h:42
SCALER_TYPE
Enum for representing the available types of scalers.
Definition scaler.h:31
@ MINMAX
Definition scaler.h:33
@ STANDARD
Definition scaler.h:34
@ IDENTITY
Definition scaler.h:32
Base struct from which data structs of different scalers can be derived.
Definition scaler.h:54
std::unordered_map< SCALER_PARAMETER, std::vector< double > > parameters
Definition scaler.h:57
ScalerData()
Definition scaler.h:55
SCALER_TYPE type
Definition scaler.h:56