import numpy as np
class Standardization:
def __init__(self):
self.mean_ = None
self.std_ = None
def fit(self, X):
X = np.asarray(X)
self.mean_ = X.mean(axis=0)
self.std_ = X.std(axis=0)
# ゼロ除算防止
self.std_[self.std_ == 0] = 1.0
def transform(self, X):
X = np.asarray(X)
return (X - self.mean_) / self.std_
def fit_transform(self, X):
self.fit(X)
return self.transform(X)
def inverse_transform(self, Xsd):
Xsd = np.asarray(Xsd)
return (Xsd * self.std_) + self.mean_
X = np.array([[1, 2], [3, 4], [5, 6]])
scaler = Standardization()
X_std = scaler.fit_transform(X)
print(X_std)
X2 = scaler.inverse_transform(X_std)
print(X2)