Advertisement
Guest User

Untitled

a guest
Jan 28th, 2015
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.09 KB | None | 0 0
  1. import numpy as np
  2. from sklearn.base import TransformerMixin, BaseEstimator
  3.  
  4.  
  5. class StandardTransformer(BaseEstimator, TransformerMixin):
  6. def __init__(self, variables=[], ignore=[]):
  7. self.variables = variables
  8. self.ignore = ignore
  9. self.transform_idx = np.asarray([True if i not in self.ignore
  10. else False for i in self.variables])
  11.  
  12. def fit(self, X, y=None):
  13. self.mean_ = X[:, self.transform_idx].mean(axis=0)
  14. self.std_ = X[:, self.transform_idx].std(axis=0, ddof=1)
  15. return self
  16.  
  17. def transform(self, X, y=None):
  18. X = X.copy()
  19. X[:, self.transform_idx] -= self.mean_
  20. X[:, self.transform_idx] /= self.std_
  21. return X
  22.  
  23. def inverse_transform(self, X, y=None):
  24. X = X.copy()
  25. X[:, self.transform_idx] *= self.std_
  26. X[:, self.transform_idx] += self.mean_
  27. return X
  28.  
  29. def get_params(self, deep=True):
  30. return dict(variables=self.variables, ignore=self.ignore)
  31.  
  32.  
  33. class MinMaxTransformer(StandardTransformer):
  34. def __init__(self, variables=[], ignore=[], feature_range=(0, 1)):
  35. self.min, self.max = feature_range
  36. super(MinMaxTransformer, self).__init__(variables, ignore)
  37.  
  38. def transform(self, X, y=None):
  39. X = X.copy()
  40. X_min = self.X_min
  41. X_max = self.X_max
  42. X_std = (X[:, self.transform_idx] - X_min)/(X_max - X_min)
  43. X[:, self.transform_idx] = X_std * (self.max - self.min) + self.min
  44. return X
  45.  
  46. def fit(self, X, y=None):
  47. X = X.copy()
  48. self.X_min = X[:, self.transform_idx].min(0)
  49. self.X_max = X[:, self.transform_idx].max(0)
  50. return self
  51.  
  52. def inverse_transform(self, X, y=None):
  53. X = X.copy()
  54. X_std = (X[:, self.transform_idx] - self.min) / (self.max - self.min)
  55. X[:, self.transform_idx] = (X_std *
  56. (self.X_max - self.X_min) + self.X_min)
  57. return X
  58.  
  59. def get_params(self, deep=True):
  60. return dict(variables=self.variables, ignore=self.ignore,
  61. feature_range=(self.min, self.max))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement