SuperKart_Sales_Forecast_Backend / custom_transformer.py
Pushpak21's picture
Upload folder using huggingface_hub
f969e9d verified
import numpy as np
from sklearn.base import BaseEstimator, TransformerMixin
class StoreAgeAdder(BaseEstimator, TransformerMixin):
def __init__(self, current_year=2025):
self.current_year = current_year
def fit(self, X, y=None):
return self
def transform(self, X):
X = X.copy()
X['store_age'] = self.current_year - X['Store_Establishment_Year']
return X.drop(columns='Store_Establishment_Year')
class OutlierCapper(BaseEstimator, TransformerMixin):
def __init__(self, factor=1.5):
self.factor = factor
self.bounds = {}
def fit(self, X, y=None):
for col in X.columns:
Q1 = X[col].quantile(0.25)
Q3 = X[col].quantile(0.75)
IQR = Q3 - Q1
lower = Q1 - self.factor * IQR
upper = Q3 + self.factor * IQR
self.bounds[col] = (lower, upper)
return self
def transform(self, X):
X = X.copy()
for col in X.columns:
lower, upper = self.bounds[col]
X[col] = np.clip(X[col], lower, upper)
return X