15constexpr double TOL = 1e-10;
38 virtual Eigen::VectorXd
transform(
const Eigen::Ref<const Eigen::VectorXd> &data)
const = 0;
45 virtual Eigen::VectorXd
inverseTransform(
const Eigen::Ref<const Eigen::VectorXd> &data)
const = 0;
63 virtual void fit(
const Eigen::Ref<const Eigen::MatrixXd> &data) = 0;
70 virtual Eigen::MatrixXd
fit_transform(
const Eigen::Ref<const Eigen::MatrixXd> &data) = 0;
115 Eigen::VectorXd
transform(
const Eigen::Ref<const Eigen::VectorXd> &data)
const override;
116 Eigen::VectorXd
inverseTransform(
const Eigen::Ref<const Eigen::VectorXd> &data)
const override;
125 void fit(
const Eigen::Ref<const Eigen::MatrixXd> &data)
override;
126 Eigen::MatrixXd
fit_transform(
const Eigen::Ref<const Eigen::MatrixXd> &data)
override;
187 Eigen::VectorXd
transform(
const Eigen::Ref<const Eigen::VectorXd> &data)
const override;
188 Eigen::VectorXd
inverseTransform(
const Eigen::Ref<const Eigen::VectorXd> &data)
const override;
197 void fit(
const Eigen::Ref<const Eigen::MatrixXd> &data)
override;
198 Eigen::MatrixXd
fit_transform(
const Eigen::Ref<const Eigen::MatrixXd> &data)
override;
204 void resize(
size_t nComponents);
248 Eigen::VectorXd
transform(
const Eigen::Ref<const Eigen::VectorXd> &data)
const override {
251 Eigen::VectorXd
inverseTransform(
const Eigen::Ref<const Eigen::VectorXd> &data)
const override {
256 return Eigen::VectorXd::Zero(
dim_);
259 return Eigen::MatrixXd::Identity(
dim_,
dim_);
262 void fit(
const Eigen::Ref<const Eigen::MatrixXd> &data)
override {
265 Eigen::MatrixXd
fit_transform(
const Eigen::Ref<const Eigen::MatrixXd> &data)
override {
311 EllipticScaler(
const Eigen::Ref<const Eigen::VectorXd> &mean,
const Eigen::Ref<const Eigen::VectorXd> &std) :
mean_(mean),
std_(std) {};
319 Eigen::VectorXd
transform(
const Eigen::Ref<const Eigen::VectorXd> &data)
const override;
320 Eigen::VectorXd
inverseTransform(
const Eigen::Ref<const Eigen::VectorXd> &data)
const override;
326 Eigen::MatrixXd scale = Eigen::MatrixXd::Identity(
mean_.size(),
mean_.size());
327 for(
int i = 0; i <
mean_.size(); i++) {
328 scale(i, i) =
std_[i];
333 void fit(
const Eigen::Ref<const Eigen::MatrixXd> &data)
override;
334 Eigen::MatrixXd
fit_transform(
const Eigen::Ref<const Eigen::MatrixXd> &data)
override;
340 void setMean(
const Eigen::Ref<const Eigen::VectorXd> &mean) {
348 void setStd(
const Eigen::Ref<const Eigen::VectorXd> &std) {
390 MinMaxScaler(
const Eigen::Ref<const Eigen::VectorXd> &min,
const Eigen::Ref<const Eigen::VectorXd> &max) :
min_(min),
max_(max) {};
398 Eigen::VectorXd
transform(
const Eigen::Ref<const Eigen::VectorXd> &data)
const override;
399 Eigen::VectorXd
inverseTransform(
const Eigen::Ref<const Eigen::VectorXd> &data)
const override;
417 void fit(
const Eigen::Ref<const Eigen::MatrixXd> &data)
override;
418 Eigen::MatrixXd
fit_transform(
const Eigen::Ref<const Eigen::MatrixXd> &data)
override;
421 Eigen::MatrixXd
getScale()
const override;
A pass-through scaler that leaves input data unchanged.
Definition scaler.h:233
Eigen::VectorXd transform(const Eigen::Ref< const Eigen::VectorXd > &data) const override
Transforms the input data from physical space to the scaled latent space.
Definition scaler.h:248
void setDim(size_t dim)
Explicitly sets the data dimensionality.
Definition scaler.h:274
Eigen::VectorXd inverseTransform(const Eigen::Ref< const Eigen::VectorXd > &data) const override
Reconstructs the data from the scaled latent space back to physical space.
Definition scaler.h:251
Eigen::VectorXd getIntercept() const override
Retrieves the intercept vector used in the transformation.
Definition scaler.h:255
void fit(const Eigen::Ref< const Eigen::MatrixXd > &data) override
Learns the scaling parameters (e.g., mean, variance) from the training data.
Definition scaler.h:262
DummyScaler & operator=(DummyScaler &&other)=default
Eigen::MatrixXd getScale() const override
Retrieves the scaling matrix used in the transformation.
Definition scaler.h:258
Eigen::MatrixXd fit_transform(const Eigen::Ref< const Eigen::MatrixXd > &data) override
Fits the scaling parameters to the data and subsequently transforms the data.
Definition scaler.h:265
DummyScaler & operator=(const DummyScaler &other)=default
DummyScaler(DummyScaler &&other)=default
size_t dim_
The dimensionality of the data vectors.
Definition scaler.h:236
DummyScaler()=default
Default constructor.
DummyScaler(const DummyScaler &other)=default
Scaler that standardizes features independently using diagonal variance scaling.
Definition scaler.h:294
void fit(const Eigen::Ref< const Eigen::MatrixXd > &data) override
Learns the scaling parameters (e.g., mean, variance) from the training data.
Definition scaler.cpp:139
Eigen::VectorXd inverseTransform(const Eigen::Ref< const Eigen::VectorXd > &data) const override
Reconstructs the data from the scaled latent space back to physical space.
Definition scaler.cpp:131
void setStd(const Eigen::Ref< const Eigen::VectorXd > &std)
Explicitly overrides the standard deviation parameters .
Definition scaler.h:348
EllipticScaler & operator=(const EllipticScaler &other)=default
Eigen::VectorXd getIntercept() const override
Retrieves the intercept vector used in the transformation.
Definition scaler.h:322
EllipticScaler()=default
Default constructor.
Eigen::VectorXd mean_
The empirical mean vector of the training dataset.
Definition scaler.h:297
EllipticScaler(const EllipticScaler &other)=default
Eigen::MatrixXd fit_transform(const Eigen::Ref< const Eigen::MatrixXd > &data) override
Fits the scaling parameters to the data and subsequently transforms the data.
Definition scaler.cpp:152
EllipticScaler(const Eigen::Ref< const Eigen::VectorXd > &mean, const Eigen::Ref< const Eigen::VectorXd > &std)
Constructs an EllipticScaler with specified mean and standard deviations.
Definition scaler.h:311
void setMean(const Eigen::Ref< const Eigen::VectorXd > &mean)
Explicitly overrides the mean parameters .
Definition scaler.h:340
~EllipticScaler()=default
EllipticScaler(EllipticScaler &&other)=default
Eigen::MatrixXd getScale() const override
Retrieves the scaling matrix used in the transformation.
Definition scaler.h:325
Eigen::VectorXd transform(const Eigen::Ref< const Eigen::VectorXd > &data) const override
Transforms the input data from physical space to the scaled latent space.
Definition scaler.cpp:123
EllipticScaler & operator=(EllipticScaler &&other)=default
Eigen::VectorXd std_
The standard deviation vector for each feature.
Definition scaler.h:300
Linearly scales features to a target bounding box range.
Definition scaler.h:367
MinMaxScaler(const MinMaxScaler &other)=default
void fit(const Eigen::Ref< const Eigen::MatrixXd > &data) override
Learns the scaling parameters (e.g., mean, variance) from the training data.
Definition scaler.cpp:189
Eigen::VectorXd inverseTransform(const Eigen::Ref< const Eigen::VectorXd > &data) const override
Reconstructs the data from the scaled latent space back to physical space.
Definition scaler.cpp:175
MinMaxScaler & operator=(MinMaxScaler &&other)=default
MinMaxScaler()=default
Default constructor.
Eigen::VectorXd transform(const Eigen::Ref< const Eigen::VectorXd > &data) const override
Transforms the input data from physical space to the scaled latent space.
Definition scaler.cpp:161
MinMaxScaler & operator=(const MinMaxScaler &other)=default
Eigen::VectorXd getDataMin() const
Retrieves the empirical minimum vector found during fitting.
Definition scaler.h:405
Eigen::VectorXd min_
Target minimum value bounding vector .
Definition scaler.h:370
Eigen::MatrixXd getScale() const override
Retrieves the scaling matrix used in the transformation.
Definition scaler.cpp:227
Eigen::VectorXd data_min_
Empirical minimum value vector observed in the training dataset.
Definition scaler.h:376
MinMaxScaler(const Eigen::Ref< const Eigen::VectorXd > &min, const Eigen::Ref< const Eigen::VectorXd > &max)
Constructs a MinMaxScaler bounded to a specific target range.
Definition scaler.h:390
Eigen::VectorXd max_
Target maximum value bounding vector .
Definition scaler.h:373
Eigen::VectorXd getIntercept() const override
Retrieves the intercept vector used in the transformation.
Definition scaler.cpp:223
Eigen::VectorXd getDataMax() const
Retrieves the empirical maximum vector found during fitting.
Definition scaler.h:413
MinMaxScaler(MinMaxScaler &&other)=default
Eigen::VectorXd data_max_
Empirical maximum value vector observed in the training dataset.
Definition scaler.h:379
Eigen::MatrixXd fit_transform(const Eigen::Ref< const Eigen::MatrixXd > &data) override
Fits the scaling parameters to the data and subsequently transforms the data.
Definition scaler.cpp:211
Principal Component Analysis (PCA) feature scaler and dimension reducer.
Definition scaler.h:152
size_t nComponents_
The number of principal components to retain.
Definition scaler.h:167
PCA(size_t nComponents)
Constructs a PCA scaler targeting a specific latent dimensionality.
Definition scaler.h:179
PCA(const PCA &other)=default
void resize(size_t nComponents)
Resizes the number of retained principal components after fitting.
Definition scaler.cpp:117
Eigen::VectorXd getEigenvalues() const
Returns the eigenvalues of the covariance matrix.
Definition scaler.h:210
Eigen::SelfAdjointEigenSolver< Eigen::MatrixXd > eigenSolver_
Eigen solver storing the eigenvectors and eigenvalues .
Definition scaler.h:158
Eigen::VectorXd inverseTransform(const Eigen::Ref< const Eigen::VectorXd > &data) const override
Reconstructs the data from the scaled latent space back to physical space.
Definition scaler.cpp:80
void fit(const Eigen::Ref< const Eigen::MatrixXd > &data) override
Learns the scaling parameters (e.g., mean, variance) from the training data.
Definition scaler.cpp:84
PCA & operator=(const PCA &other)=default
Eigen::MatrixXd fit_transform(const Eigen::Ref< const Eigen::MatrixXd > &data) override
Fits the scaling parameters to the data and subsequently transforms the data.
Definition scaler.cpp:106
PCA & operator=(PCA &&other)=default
Eigen::MatrixXd sqrtCovInv_
Precomputed inverse square root of the truncated eigenvalues matrix .
Definition scaler.h:164
void eigenDecomposition()
Internal helper to execute the eigendecomposition on the current covariance matrix.
Definition scaler.cpp:45
Eigen::VectorXd getIntercept() const override
Retrieves the intercept vector used in the transformation.
Definition scaler.h:190
Eigen::MatrixXd getEigenvectors() const
Returns the eigenvectors of the covariance matrix.
Definition scaler.h:218
Eigen::VectorXd transform(const Eigen::Ref< const Eigen::VectorXd > &data) const override
Transforms the input data from physical space to the scaled latent space.
Definition scaler.cpp:75
Eigen::MatrixXd sqrtCov_
Precomputed square root of the truncated eigenvalues matrix .
Definition scaler.h:161
Eigen::VectorXd mean_
The empirical mean vector .
Definition scaler.h:155
Eigen::MatrixXd getScale() const override
Retrieves the scaling matrix used in the transformation.
Definition scaler.h:193
Template virtual base class for feature scaling and transformation.
Definition scaler.h:31
virtual void fit(const Eigen::Ref< const Eigen::MatrixXd > &data)=0
Learns the scaling parameters (e.g., mean, variance) from the training data.
virtual Eigen::VectorXd getIntercept() const =0
Retrieves the intercept vector used in the transformation.
virtual Eigen::VectorXd inverseTransform(const Eigen::Ref< const Eigen::VectorXd > &data) const =0
Reconstructs the data from the scaled latent space back to physical space.
virtual Eigen::MatrixXd getScale() const =0
Retrieves the scaling matrix used in the transformation.
virtual Eigen::MatrixXd fit_transform(const Eigen::Ref< const Eigen::MatrixXd > &data)=0
Fits the scaling parameters to the data and subsequently transforms the data.
virtual Eigen::VectorXd transform(const Eigen::Ref< const Eigen::VectorXd > &data) const =0
Transforms the input data from physical space to the scaled latent space.
Standardizes features by removing the mean and scaling to unit variance using Cholesky decomposition.
Definition scaler.h:90
Eigen::MatrixXd getScale() const override
Retrieves the scaling matrix used in the transformation.
Definition scaler.h:121
StandardScaler(StandardScaler &&other)=default
StandardScaler()=default
Default constructor.
Eigen::VectorXd inverseTransform(const Eigen::Ref< const Eigen::VectorXd > &data) const override
Reconstructs the data from the scaled latent space back to physical space.
Definition scaler.cpp:9
void fit(const Eigen::Ref< const Eigen::MatrixXd > &data) override
Learns the scaling parameters (e.g., mean, variance) from the training data.
Definition scaler.cpp:13
Eigen::VectorXd transform(const Eigen::Ref< const Eigen::VectorXd > &data) const override
Transforms the input data from physical space to the scaled latent space.
Definition scaler.cpp:5
~StandardScaler()=default
Eigen::VectorXd mean_
The empirical mean vector of the training dataset.
Definition scaler.h:93
Eigen::LLT< Eigen::MatrixXd > lltDecomposition_
The LLT (Cholesky) decomposition of the covariance matrix .
Definition scaler.h:96
StandardScaler(const StandardScaler &other)=default
StandardScaler(const Eigen::Ref< const Eigen::VectorXd > &mean, const Eigen::Ref< const Eigen::MatrixXd > &scale)
Constructs a StandardScaler with a pre-computed mean and covariance scale.
Definition scaler.h:107
StandardScaler & operator=(const StandardScaler &other)=default
Eigen::VectorXd getIntercept() const override
Retrieves the intercept vector used in the transformation.
Definition scaler.h:118
StandardScaler & operator=(StandardScaler &&other)=default
Eigen::MatrixXd fit_transform(const Eigen::Ref< const Eigen::MatrixXd > &data) override
Fits the scaling parameters to the data and subsequently transforms the data.
Definition scaler.cpp:36
constexpr double TOL
Global tolerance value used for numerical stability and zero-checks.
Definition scaler.h:15