nikethanreddy commited on
Commit
9ade373
·
verified ·
1 Parent(s): b3ebc45

Create custom_scalers.py

Browse files
Files changed (1) hide show
  1. custom_scalers.py +38 -0
custom_scalers.py ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class MinMaxScaler:
2
+ def __init__(self, feature_axis=None, minmax_range=(0, 1)):
3
+ self.feature_axis = feature_axis
4
+ self.min_ = None
5
+ self.max_ = None
6
+ self.scale_ = None
7
+ self.minmax_range = minmax_range
8
+
9
+ def fit(self, X):
10
+ if X.ndim == 3 and self.feature_axis is not None:
11
+ axis = tuple(i for i in range(X.ndim) if i != self.feature_axis)
12
+ self.min_ = np.min(X, axis=axis)
13
+ self.max_ = np.max(X, axis=axis)
14
+ elif X.ndim == 2:
15
+ self.min_ = np.min(X, axis=0)
16
+ self.max_ = np.max(X, axis=0)
17
+ elif X.ndim == 1:
18
+ self.min_ = np.min(X)
19
+ self.max_ = np.max(X)
20
+ else:
21
+ raise ValueError("Data must be 1D, 2D, or 3D.")
22
+
23
+ self.scale_ = self.max_ - self.min_
24
+ return self
25
+
26
+ def transform(self, X):
27
+ if self.min_ is None or self.max_ is None or self.scale_ is None:
28
+ raise ValueError("Scaler has not been fitted.")
29
+ X_scaled = (X - self.min_) / self.scale_
30
+ X_scaled = X_scaled * (self.minmax_range[1] - self.minmax_range[0]) + self.minmax_range[0]
31
+ return X_scaled
32
+
33
+ def inverse_transform(self, X_scaled):
34
+ if self.min_ is None or self.max_ is None or self.scale_ is None:
35
+ raise ValueError("Scaler has not been fitted.")
36
+ X = (X_scaled - self.minmax_range[0]) / (self.minmax_range[1] - self.minmax_range[0])
37
+ X = X * self.scale_ + self.min_
38
+ return X