from RADAR.base_preprocessing_module import BasePreprocessing
from sklearn.preprocessing import (
StandardScaler,
MinMaxScaler,
RobustScaler,
Normalizer,
OneHotEncoder,
)
import pandas as pd
[docs]
class StandardScalerPreprocessing(BasePreprocessing):
def __init__(self, **kwargs):
super().__init__()
self.scaler = StandardScaler(**kwargs)
[docs]
def fit(self, X):
self.scaler.fit(X)
return self
[docs]
class MinMaxScalerPreprocessing(BasePreprocessing):
def __init__(self, **kwargs):
super().__init__()
self.scaler = MinMaxScaler(**kwargs)
[docs]
def fit(self, X):
self.scaler.fit(X)
return self
[docs]
class RobustScalerPreprocessing(BasePreprocessing):
def __init__(self, **kwargs):
super().__init__()
self.scaler = RobustScaler(**kwargs)
[docs]
def fit(self, X):
self.scaler.fit(X)
return self
[docs]
class NormalizerPreprocessing(BasePreprocessing):
def __init__(self, **kwargs):
super().__init__()
self.scaler = Normalizer(**kwargs)
[docs]
def fit(self, X):
self.scaler.fit(X)
return self
[docs]
class OneHotEncoderPreprocessing(BasePreprocessing):
def __init__(self, columns=None, **kwargs):
"""
Parameters
----------
columns : list, optional
List of column names to apply one-hot encoding.
"""
super().__init__()
self.columns = columns
self.encoder = OneHotEncoder(sparse_output=False, handle_unknown="ignore", **kwargs)
self.feature_names = None
[docs]
def fit(self, X):
X_selected = X[self.columns] if self.columns else X
self.encoder.fit(X_selected)
self.feature_names = self.encoder.get_feature_names_out(self.columns)
return self
preprocessing_static_algorithms = {
"StandardScaler": StandardScalerPreprocessing,
"MinMaxScaler": MinMaxScalerPreprocessing,
"RobustScaler": RobustScalerPreprocessing,
"Normalizer": NormalizerPreprocessing,
"OneHotEncoder": OneHotEncoderPreprocessing
}