@@ -900,18 +900,15 @@ def run_traditional_ml(
900900 learning algorithm runs over the time limit.
901901 """
902902 assert self ._logger is not None # for mypy compliancy
903- if STRING_TO_TASK_TYPES [self .task_type ] in REGRESSION_TASKS :
904- self ._logger .warning ("Traditional Pipeline is not enabled for regression. Skipping..." )
905- else :
906- traditional_task_name = 'runTraditional'
907- self ._stopwatch .start_task (traditional_task_name )
908- elapsed_time = self ._stopwatch .wall_elapsed (current_task_name )
909- time_for_traditional = int (runtime_limit - elapsed_time )
910- self ._do_traditional_prediction (
911- func_eval_time_limit_secs = func_eval_time_limit_secs ,
912- time_left = time_for_traditional ,
913- )
914- self ._stopwatch .stop_task (traditional_task_name )
903+ traditional_task_name = 'runTraditional'
904+ self ._stopwatch .start_task (traditional_task_name )
905+ elapsed_time = self ._stopwatch .wall_elapsed (current_task_name )
906+ time_for_traditional = int (runtime_limit - elapsed_time )
907+ self ._do_traditional_prediction (
908+ func_eval_time_limit_secs = func_eval_time_limit_secs ,
909+ time_left = time_for_traditional ,
910+ )
911+ self ._stopwatch .stop_task (traditional_task_name )
915912
916913 def _search (
917914 self ,
@@ -1281,22 +1278,7 @@ def _search(
12811278 self ._logger .info ("Starting Shutdown" )
12821279
12831280 if proc_ensemble is not None :
1284- self ._results_manager .ensemble_performance_history = list (proc_ensemble .history )
1285-
1286- if len (proc_ensemble .futures ) > 0 :
1287- # Also add ensemble runs that did not finish within smac time
1288- # and add them into the ensemble history
1289- self ._logger .info ("Ensemble script still running, waiting for it to finish." )
1290- result = proc_ensemble .futures .pop ().result ()
1291- if result :
1292- ensemble_history , _ , _ , _ = result
1293- self ._results_manager .ensemble_performance_history .extend (ensemble_history )
1294- self ._logger .info ("Ensemble script finished, continue shutdown." )
1295-
1296- # save the ensemble performance history file
1297- if len (self .ensemble_performance_history ) > 0 :
1298- pd .DataFrame (self .ensemble_performance_history ).to_json (
1299- os .path .join (self ._backend .internals_directory , 'ensemble_history.json' ))
1281+ self ._collect_results_ensemble (proc_ensemble )
13001282
13011283 if load_models :
13021284 self ._logger .info ("Loading models..." )
@@ -1564,7 +1546,7 @@ def fit_pipeline(
15641546 exclude = self .exclude_components ,
15651547 search_space_updates = self .search_space_updates )
15661548 dataset_properties = dataset .get_dataset_properties (dataset_requirements )
1567- self ._backend .replace_datamanager (dataset )
1549+ self ._backend .save_datamanager (dataset )
15681550
15691551 if self ._logger is None :
15701552 self ._logger = self ._get_logger (dataset .dataset_name )
@@ -1754,7 +1736,7 @@ def fit_ensemble(
17541736 ensemble_fit_task_name = 'EnsembleFit'
17551737 self ._stopwatch .start_task (ensemble_fit_task_name )
17561738 if enable_traditional_pipeline :
1757- if func_eval_time_limit_secs is None or func_eval_time_limit_secs > time_for_task :
1739+ if func_eval_time_limit_secs > time_for_task :
17581740 self ._logger .warning (
17591741 'Time limit for a single run is higher than total time '
17601742 'limit. Capping the limit for a single run to the total '
@@ -1795,12 +1777,8 @@ def fit_ensemble(
17951777 )
17961778
17971779 manager .build_ensemble (self ._dask_client )
1798- future = manager .futures .pop ()
1799- result = future .result ()
1800- if result is None :
1801- raise ValueError ("Errors occurred while building the ensemble - please"
1802- " check the log file and command line output for error messages." )
1803- self .ensemble_performance_history , _ , _ , _ = result
1780+ if manager is not None :
1781+ self ._collect_results_ensemble (manager )
18041782
18051783 if load_models :
18061784 self ._load_models ()
@@ -1878,6 +1856,31 @@ def _init_ensemble_builder(
18781856
18791857 return proc_ensemble
18801858
1859+ def _collect_results_ensemble (
1860+ self ,
1861+ manager : EnsembleBuilderManager
1862+ ) -> None :
1863+
1864+ if self ._logger is None :
1865+ raise ValueError ("logger should be initialized to fit ensemble" )
1866+
1867+ self ._results_manager .ensemble_performance_history = list (manager .history )
1868+
1869+ if len (manager .futures ) > 0 :
1870+ # Also add ensemble runs that did not finish within smac time
1871+ # and add them into the ensemble history
1872+ self ._logger .info ("Ensemble script still running, waiting for it to finish." )
1873+ result = manager .futures .pop ().result ()
1874+ if result :
1875+ ensemble_history , _ , _ , _ = result
1876+ self ._results_manager .ensemble_performance_history .extend (ensemble_history )
1877+ self ._logger .info ("Ensemble script finished, continue shutdown." )
1878+
1879+ # save the ensemble performance history file
1880+ if len (self .ensemble_performance_history ) > 0 :
1881+ pd .DataFrame (self .ensemble_performance_history ).to_json (
1882+ os .path .join (self ._backend .internals_directory , 'ensemble_history.json' ))
1883+
18811884 def predict (
18821885 self ,
18831886 X_test : np .ndarray ,
0 commit comments