1919from .externals .joblib import Parallel , delayed
2020from .externals import six
2121from .utils .metaestimators import if_delegate_has_method
22- from .utils import Bunch
22+ from .utils import Bunch , message_with_time
2323from .utils .validation import check_memory
2424
2525from .utils .metaestimators import _BaseComposition
2626
2727__all__ = ['Pipeline' , 'FeatureUnion' ]
2828
2929
30- def _pretty_print (step_info ):
31- """Helper method to print the information about execution of a particular
32- step of Pipeline / FeatureUnion (if verbosity is enabled). It receives a
33- string having information about current step and prints it in such a way
34- that its length is 70 characters.
35-
36- Parameters
37- ----------
38- step_info : str
39- String of form '[ClassName] (step x of y) step_name ... time_elapsed'
40-
41- """
42- name , elapsed = step_info .split ('...' )
43- print ('%s%s%s' % (name , '.' * (70 - len (name + elapsed )), elapsed ))
44-
45-
4630class Pipeline (_BaseComposition ):
4731 """Pipeline of transforms with a final estimator.
4832
@@ -190,11 +174,11 @@ def _validate_steps(self):
190174 % (estimator , type (estimator )))
191175
192176 def _print_final_step (self , final_step_time_elapsed , time_elapsed_so_far ):
193- _pretty_print ( '[Pipeline] (step %d of %d) %s ... %.5fs ' %
194- ( len (self .steps ), len (self .steps ), self .steps [- 1 ][0 ],
195- final_step_time_elapsed ))
196- _pretty_print ( '[Pipeline] Total time elapsed: ... %.5fs' %
197- time_elapsed_so_far )
177+ message = ' (step %d of %d) %s' % (
178+ len (self .steps ), len (self .steps ), self .steps [- 1 ][0 ])
179+ print ( message_with_time ( 'Pipeline' , message , final_step_time_elapsed ))
180+ print ( message_with_time (
181+ 'Pipeline' , 'Total time elapsed:' , time_elapsed_so_far ) )
198182
199183 @property
200184 def _estimator_type (self ):
@@ -250,9 +234,9 @@ def _fit(self, X, y=None, **fit_params):
250234 time_elapsed_so_far += step_time_elapsed
251235 # Logging time elapsed for current step to stdout
252236 if self .verbose :
253- _pretty_print ( '[Pipeline] (step %d of %d) %s ... %.5fs ' %
254- ( step_idx + 1 , len (self .steps ), name ,
255- step_time_elapsed ))
237+ message = ' (step %d of %d) %s' % (
238+ step_idx + 1 , len (self .steps ), name )
239+ print ( message_with_time ( 'Pipeline' , message , step_time_elapsed ))
256240 if self ._final_estimator is None :
257241 return Xt , {}, time_elapsed_so_far
258242 return Xt , fit_params_steps [self .steps [- 1 ][0 ]], time_elapsed_so_far
@@ -326,10 +310,10 @@ def fit_transform(self, X, y=None, **fit_params):
326310 final_step_start_time = time .time ()
327311 if last_step is None :
328312 if self .verbose :
329- _pretty_print ( '[Pipeline] Step %s is NoneType ... ' %
330- self . steps [ - 1 ][ 0 ] )
331- _pretty_print ( '[Pipeline] Total time elapsed: ... %.5fs' %
332- time_elapsed_so_far )
313+ message = ' Step %s is NoneType' % ( self . steps [ - 1 ][ 0 ],)
314+ print ( message_with_time ( 'Pipeline' , message , 0 ) )
315+ print ( message_with_time (
316+ 'Pipeline' , 'Total time elapsed' , time_elapsed_so_far ) )
333317 return Xt
334318 elif hasattr (last_step , 'fit_transform' ):
335319 Xt = last_step .fit_transform (Xt , y , ** fit_params )
@@ -635,8 +619,8 @@ def _fit_one_transformer(transformer, X, y, verbose=False, idx=None,
635619 transformer = transformer .fit (X , y )
636620 step_time_elapsed = time .time () - step_start_time
637621 if verbose :
638- _pretty_print ( '[FeatureUnion] (step %d of %d) %s ... %.5fs ' %
639- ( idx + 1 , total_steps , name , step_time_elapsed ))
622+ message = ' (step %d of %d) %s' % ( idx + 1 , total_steps , name )
623+ print ( message_with_time ( 'FeatureUnion' , message , step_time_elapsed ))
640624 return transformer
641625
642626
@@ -658,8 +642,8 @@ def _fit_transform_one(transformer, weight, X, y, verbose=False, idx=None,
658642 res = transformer .fit (X , y , ** fit_params ).transform (X )
659643 step_time_elapsed = time .time () - step_start_time
660644 if verbose :
661- _pretty_print ( '[FeatureUnion] (step %d of %d) %s ... %.5fs ' %
662- ( idx + 1 , total_steps , name , step_time_elapsed ))
645+ message = ' (step %d of %d) %s' % ( idx + 1 , total_steps , name )
646+ print ( message_with_time ( 'FeatureUnion' , message , step_time_elapsed ))
663647 # if we have a weight for this transformer, multiply output
664648 if weight is None :
665649 return res , transformer
@@ -803,8 +787,9 @@ def fit(self, X, y=None):
803787 for idx , (name , transformer , _ ) in enumerate (all_transformers ))
804788 time_elapsed = time .time () - start_time
805789 if self .verbose :
806- _pretty_print (
807- '[FeatureUnion] Total time elapsed: ... %.5fs' % time_elapsed )
790+ print (message_with_time (
791+ 'FeatureUnion' , 'Total time elapsed:' , time_elapsed ))
792+
808793 self ._update_transformer_list (transformers )
809794 return self
810795
@@ -837,8 +822,8 @@ def fit_transform(self, X, y=None, **fit_params):
837822 for idx , (name , transformer , weight ) in enumerate (all_transformers ))
838823 time_elapsed = time .time () - start_time
839824 if self .verbose :
840- _pretty_print (
841- '[ FeatureUnion] Total time elapsed: ... %.5fs' % time_elapsed )
825+ print ( message_with_time (
826+ 'FeatureUnion' , ' Total time elapsed:' , time_elapsed ) )
842827
843828 if not result :
844829 # All transformers are None
0 commit comments