MinMaxScaler
#include <Skigen/Preprocessing>
template <typename Scalar = double>
class Skigen::MinMaxScaler(feature_range={0, 1}, clip=false)
Transform features by scaling each feature to a given range.
This estimator scales and translates each feature individually such that it is in the given range on the training set, e.g. between zero and one (the default).
The transformation is:
X_\text{scaled} = \frac{X - X_\min}{X_\max - X_\min} \cdot (\text{max} - \text{min}) + \text{min}Mirrors sklearn.preprocessing.MinMaxScaler.
Parameters:
-
feature_range : std::pair< Scalar, Scalar >, default={0, 1} Desired range of transformed data (
std::pair<Scalar,Scalar>, default{0, 1}). -
clip : bool, default=false Whether to clip transformed values to
feature_range(bool, defaultfalse).
Attributes:
-
feature_range : const std::pair< Scalar, Scalar > & Desired feature range.
-
clip : bool Whether clipping is enabled.
-
data_min : RowVectorType Per-feature minimum seen in the data.
-
data_max : RowVectorType Per-feature maximum seen in the data.
-
data_range : RowVectorType Per-feature range (
data_max_ - data_min_). -
scale : RowVectorType Per-feature relative scaling factor.
-
min : RowVectorType Per-feature adjustment for minimum.
-
n_samples_seen : IndexType Number of samples processed during
fit().
Methods
fit(X)
Compute per-feature min and max to be used for later scaling.
Parameters:
- X : MatrixType Training data of shape (n_samples, n_features).
Returns:
- result : MinMaxScaler
Reference to the fitted transformer (
*this).
transform(X)
Scale features of X according to feature_range.
Parameters:
- X : MatrixType Data matrix of shape (n_samples, n_features).
Returns:
- result : MatrixType Transformed data of same shape.
Throws:
std::runtime_error— if the model has not been fitted.
inverse_transform(X)
Undo the scaling of X according to feature_range.
Parameters:
- X : MatrixType Transformed data of shape (n_samples, n_features).
Returns:
- result : MatrixType Un-transformed data of same shape.
Throws:
std::runtime_error— if the model has not been fitted.
transform_inplace(X)
Transform features in-place to the target range.
Parameters:
- X : Eigen::Ref< MatrixType > Data matrix of shape (n_samples, n_features), modified in place.
Throws:
std::runtime_error— if the model has not been fitted.
inverse_transform_inplace(X)
Inverse-transform features in-place to original scale.
Parameters:
- X : Eigen::Ref< MatrixType > Scaled data matrix, modified in place.
Throws:
std::runtime_error— if the model has not been fitted.
Example
// Default range [0, 1]
Skigen::MinMaxScaler<double> scaler;
Eigen::MatrixXd Z = scaler.fit_transform(X);
std::cout << "Scaled to [0, 1]:\n" << Z << "\n\n";
std::cout << "Data min: " << scaler.data_min() << "\n";
std::cout << "Data max: " << scaler.data_max() << "\n";
std::cout << "Data range: " << scaler.data_range() << "\n\n";
// Custom range [-1, 1]
Skigen::MinMaxScaler<double> scaler2({-1.0, 1.0});
Eigen::MatrixXd Z2 = scaler2.fit_transform(X);
std::cout << "Scaled to [-1, 1]:\n" << Z2 << "\n\n";
// Round-trip
Eigen::MatrixXd X_back = scaler.inverse_transform(Z);
std::cout << "Recovered:\n" << X_back << "\n";