|
|
import pandas as pd |
|
|
import numpy as np |
|
|
from sklearn.base import BaseEstimator, TransformerMixin |
|
|
from sklearn.preprocessing import StandardScaler, MinMaxScaler |
|
|
from _config import config |
|
|
|
|
|
class ScaleXYZData(BaseEstimator, TransformerMixin): |
|
|
def __init__(self, scaler_type='standard'): |
|
|
self.scaler_type = scaler_type |
|
|
|
|
|
def fit(self, X, y=None): |
|
|
return self |
|
|
|
|
|
def transform(self, X): |
|
|
columns_to_scale = ['x', 'y', 'z'] |
|
|
if self.scaler_type == 'standard': |
|
|
scaler = StandardScaler() |
|
|
elif self.scaler_type == 'minmax': |
|
|
scaler = MinMaxScaler() |
|
|
elif self.scaler_type == 'none': |
|
|
return X |
|
|
else: |
|
|
raise ValueError("Invalid scaler_type. Expected 'standard' or 'minmax'.") |
|
|
scaled_columns = scaler.fit_transform(X[columns_to_scale]) |
|
|
scaled_df = pd.DataFrame(scaled_columns, columns=columns_to_scale, index=X.index) |
|
|
X[columns_to_scale] = scaled_df |
|
|
print("Data scaled successfully.") |
|
|
return X |