@@ -252,15 +252,36 @@ def data_range(self):
252
252
def data_min (self ):
253
253
return self .data_min_
254
254
255
+ def _reset (self ):
256
+ """Reset internal data-dependant state of the scaler, if necessary.
257
+
258
+ __init__ parameters are not touched.
259
+ """
260
+
261
+ # Checking one attribute is enough, becase they are all set together
262
+ # in partial_fit
263
+ if hasattr (self , 'scale_' ):
264
+ del self .scale_
265
+ del self .min_
266
+ del self .n_samples_seen_
267
+ del self .data_min_
268
+ del self .data_max_
269
+ del self .data_range_
270
+
255
271
def fit (self , X , y = None ):
256
272
"""Compute the minimum and maximum to be used for later scaling.
257
273
274
+ It always
275
+
258
276
Parameters
259
277
----------
260
278
X : array-like, shape [n_samples, n_features]
261
279
The data used to compute the per-feature minimum and maximum
262
280
used for later scaling along the features axis.
263
281
"""
282
+
283
+ # Reset internal state before fitting
284
+ self ._reset ()
264
285
return self .partial_fit (X , y )
265
286
266
287
def partial_fit (self , X , y = None ):
@@ -489,6 +510,20 @@ def __init__(self, copy=True, with_mean=True, with_std=True):
489
510
def std_ (self ):
490
511
return self .scale_
491
512
513
+ def _reset (self ):
514
+ """Reset internal data-dependant state of the scaler, if necessary.
515
+
516
+ __init__ parameters are not touched.
517
+ """
518
+
519
+ # Checking one attribute is enough, becase they are all set together
520
+ # in partial_fit
521
+ if hasattr (self , 'scale_' ):
522
+ del self .scale_
523
+ del self .n_samples_seen_
524
+ del self .mean_
525
+ del self .var_
526
+
492
527
def fit (self , X , y = None ):
493
528
"""Compute the mean and std to be used for later scaling.
494
529
@@ -500,6 +535,9 @@ def fit(self, X, y=None):
500
535
501
536
y: Passthrough for ``Pipeline`` compatibility.
502
537
"""
538
+
539
+ # Reset internal state before fitting
540
+ self ._reset ()
503
541
return self .partial_fit (X , y )
504
542
505
543
def partial_fit (self , X , y = None ):
@@ -671,6 +709,19 @@ class MaxAbsScaler(BaseEstimator, TransformerMixin):
671
709
def __init__ (self , copy = True ):
672
710
self .copy = copy
673
711
712
+ def _reset (self ):
713
+ """Reset internal data-dependant state of the scaler, if necessary.
714
+
715
+ __init__ parameters are not touched.
716
+ """
717
+
718
+ # Checking one attribute is enough, becase they are all set together
719
+ # in partial_fit
720
+ if hasattr (self , 'scale_' ):
721
+ del self .scale_
722
+ del self .n_samples_seen_
723
+ del self .max_abs_
724
+
674
725
def fit (self , X , y = None ):
675
726
"""Compute the maximum absolute value to be used for later scaling.
676
727
@@ -680,6 +731,9 @@ def fit(self, X, y=None):
680
731
The data used to compute the per-feature minimum and maximum
681
732
used for later scaling along the features axis.
682
733
"""
734
+
735
+ # Reset internal state before fitting
736
+ self ._reset ()
683
737
return self .partial_fit (X , y )
684
738
685
739
def partial_fit (self , X , y = None ):
0 commit comments