@@ -902,18 +902,15 @@ def run_traditional_ml(
902902 learning algorithm runs over the time limit.
903903 """
904904 assert self ._logger is not None # for mypy compliancy
905- if STRING_TO_TASK_TYPES [self .task_type ] in REGRESSION_TASKS :
906- self ._logger .warning ("Traditional Pipeline is not enabled for regression. Skipping..." )
907- else :
908- traditional_task_name = 'runTraditional'
909- self ._stopwatch .start_task (traditional_task_name )
910- elapsed_time = self ._stopwatch .wall_elapsed (current_task_name )
911- time_for_traditional = int (runtime_limit - elapsed_time )
912- self ._do_traditional_prediction (
913- func_eval_time_limit_secs = func_eval_time_limit_secs ,
914- time_left = time_for_traditional ,
915- )
916- self ._stopwatch .stop_task (traditional_task_name )
905+ traditional_task_name = 'runTraditional'
906+ self ._stopwatch .start_task (traditional_task_name )
907+ elapsed_time = self ._stopwatch .wall_elapsed (current_task_name )
908+ time_for_traditional = int (runtime_limit - elapsed_time )
909+ self ._do_traditional_prediction (
910+ func_eval_time_limit_secs = func_eval_time_limit_secs ,
911+ time_left = time_for_traditional ,
912+ )
913+ self ._stopwatch .stop_task (traditional_task_name )
917914
918915 def _search (
919916 self ,
@@ -1283,22 +1280,7 @@ def _search(
12831280 self ._logger .info ("Starting Shutdown" )
12841281
12851282 if proc_ensemble is not None :
1286- self ._results_manager .ensemble_performance_history = list (proc_ensemble .history )
1287-
1288- if len (proc_ensemble .futures ) > 0 :
1289- # Also add ensemble runs that did not finish within smac time
1290- # and add them into the ensemble history
1291- self ._logger .info ("Ensemble script still running, waiting for it to finish." )
1292- result = proc_ensemble .futures .pop ().result ()
1293- if result :
1294- ensemble_history , _ , _ , _ = result
1295- self ._results_manager .ensemble_performance_history .extend (ensemble_history )
1296- self ._logger .info ("Ensemble script finished, continue shutdown." )
1297-
1298- # save the ensemble performance history file
1299- if len (self .ensemble_performance_history ) > 0 :
1300- pd .DataFrame (self .ensemble_performance_history ).to_json (
1301- os .path .join (self ._backend .internals_directory , 'ensemble_history.json' ))
1283+ self ._collect_results_ensemble (proc_ensemble )
13021284
13031285 if load_models :
13041286 self ._logger .info ("Loading models..." )
@@ -1566,7 +1548,7 @@ def fit_pipeline(
15661548 exclude = self .exclude_components ,
15671549 search_space_updates = self .search_space_updates )
15681550 dataset_properties = dataset .get_dataset_properties (dataset_requirements )
1569- self ._backend .replace_datamanager (dataset )
1551+ self ._backend .save_datamanager (dataset )
15701552
15711553 if self ._logger is None :
15721554 self ._logger = self ._get_logger (dataset .dataset_name )
@@ -1757,7 +1739,7 @@ def fit_ensemble(
17571739 ensemble_fit_task_name = 'EnsembleFit'
17581740 self ._stopwatch .start_task (ensemble_fit_task_name )
17591741 if enable_traditional_pipeline :
1760- if func_eval_time_limit_secs is None or func_eval_time_limit_secs > time_for_task :
1742+ if func_eval_time_limit_secs > time_for_task :
17611743 self ._logger .warning (
17621744 'Time limit for a single run is higher than total time '
17631745 'limit. Capping the limit for a single run to the total '
@@ -1798,12 +1780,8 @@ def fit_ensemble(
17981780 )
17991781
18001782 manager .build_ensemble (self ._dask_client )
1801- future = manager .futures .pop ()
1802- result = future .result ()
1803- if result is None :
1804- raise ValueError ("Errors occurred while building the ensemble - please"
1805- " check the log file and command line output for error messages." )
1806- self .ensemble_performance_history , _ , _ , _ = result
1783+ if manager is not None :
1784+ self ._collect_results_ensemble (manager )
18071785
18081786 if load_models :
18091787 self ._load_models ()
@@ -1881,6 +1859,31 @@ def _init_ensemble_builder(
18811859
18821860 return proc_ensemble
18831861
1862+ def _collect_results_ensemble (
1863+ self ,
1864+ manager : EnsembleBuilderManager
1865+ ) -> None :
1866+
1867+ if self ._logger is None :
1868+ raise ValueError ("logger should be initialized to fit ensemble" )
1869+
1870+ self ._results_manager .ensemble_performance_history = list (manager .history )
1871+
1872+ if len (manager .futures ) > 0 :
1873+ # Also add ensemble runs that did not finish within smac time
1874+ # and add them into the ensemble history
1875+ self ._logger .info ("Ensemble script still running, waiting for it to finish." )
1876+ result = manager .futures .pop ().result ()
1877+ if result :
1878+ ensemble_history , _ , _ , _ = result
1879+ self ._results_manager .ensemble_performance_history .extend (ensemble_history )
1880+ self ._logger .info ("Ensemble script finished, continue shutdown." )
1881+
1882+ # save the ensemble performance history file
1883+ if len (self .ensemble_performance_history ) > 0 :
1884+ pd .DataFrame (self .ensemble_performance_history ).to_json (
1885+ os .path .join (self ._backend .internals_directory , 'ensemble_history.json' ))
1886+
18841887 def predict (
18851888 self ,
18861889 X_test : np .ndarray ,
0 commit comments