@@ -941,18 +941,15 @@ def run_traditional_ml(
941941 learning algorithm runs over the time limit.
942942 """
943943 assert self ._logger is not None # for mypy compliancy
944- if STRING_TO_TASK_TYPES [self .task_type ] in REGRESSION_TASKS :
945- self ._logger .warning ("Traditional Pipeline is not enabled for regression. Skipping..." )
946- else :
947- traditional_task_name = 'runTraditional'
948- self ._stopwatch .start_task (traditional_task_name )
949- elapsed_time = self ._stopwatch .wall_elapsed (current_task_name )
950- time_for_traditional = int (runtime_limit - elapsed_time )
951- self ._do_traditional_prediction (
952- func_eval_time_limit_secs = func_eval_time_limit_secs ,
953- time_left = time_for_traditional ,
954- )
955- self ._stopwatch .stop_task (traditional_task_name )
944+ traditional_task_name = 'runTraditional'
945+ self ._stopwatch .start_task (traditional_task_name )
946+ elapsed_time = self ._stopwatch .wall_elapsed (current_task_name )
947+ time_for_traditional = int (runtime_limit - elapsed_time )
948+ self ._do_traditional_prediction (
949+ func_eval_time_limit_secs = func_eval_time_limit_secs ,
950+ time_left = time_for_traditional ,
951+ )
952+ self ._stopwatch .stop_task (traditional_task_name )
956953
957954 def _search (
958955 self ,
@@ -1322,22 +1319,7 @@ def _search(
13221319 self ._logger .info ("Starting Shutdown" )
13231320
13241321 if proc_ensemble is not None :
1325- self ._results_manager .ensemble_performance_history = list (proc_ensemble .history )
1326-
1327- if len (proc_ensemble .futures ) > 0 :
1328- # Also add ensemble runs that did not finish within smac time
1329- # and add them into the ensemble history
1330- self ._logger .info ("Ensemble script still running, waiting for it to finish." )
1331- result = proc_ensemble .futures .pop ().result ()
1332- if result :
1333- ensemble_history , _ , _ , _ = result
1334- self ._results_manager .ensemble_performance_history .extend (ensemble_history )
1335- self ._logger .info ("Ensemble script finished, continue shutdown." )
1336-
1337- # save the ensemble performance history file
1338- if len (self .ensemble_performance_history ) > 0 :
1339- pd .DataFrame (self .ensemble_performance_history ).to_json (
1340- os .path .join (self ._backend .internals_directory , 'ensemble_history.json' ))
1322+ self ._collect_results_ensemble (proc_ensemble )
13411323
13421324 if load_models :
13431325 self ._logger .info ("Loading models..." )
@@ -1605,7 +1587,7 @@ def fit_pipeline(
16051587 exclude = self .exclude_components ,
16061588 search_space_updates = self .search_space_updates )
16071589 dataset_properties = dataset .get_dataset_properties (dataset_requirements )
1608- self ._backend .replace_datamanager (dataset )
1590+ self ._backend .save_datamanager (dataset )
16091591
16101592 if self ._logger is None :
16111593 self ._logger = self ._get_logger (dataset .dataset_name )
@@ -1796,7 +1778,7 @@ def fit_ensemble(
17961778 ensemble_fit_task_name = 'EnsembleFit'
17971779 self ._stopwatch .start_task (ensemble_fit_task_name )
17981780 if enable_traditional_pipeline :
1799- if func_eval_time_limit_secs is None or func_eval_time_limit_secs > time_for_task :
1781+ if func_eval_time_limit_secs > time_for_task :
18001782 self ._logger .warning (
18011783 'Time limit for a single run is higher than total time '
18021784 'limit. Capping the limit for a single run to the total '
@@ -1837,12 +1819,8 @@ def fit_ensemble(
18371819 )
18381820
18391821 manager .build_ensemble (self ._dask_client )
1840- future = manager .futures .pop ()
1841- result = future .result ()
1842- if result is None :
1843- raise ValueError ("Errors occurred while building the ensemble - please"
1844- " check the log file and command line output for error messages." )
1845- self .ensemble_performance_history , _ , _ , _ = result
1822+ if manager is not None :
1823+ self ._collect_results_ensemble (manager )
18461824
18471825 if load_models :
18481826 self ._load_models ()
@@ -1920,6 +1898,31 @@ def _init_ensemble_builder(
19201898
19211899 return proc_ensemble
19221900
1901+ def _collect_results_ensemble (
1902+ self ,
1903+ manager : EnsembleBuilderManager
1904+ ) -> None :
1905+
1906+ if self ._logger is None :
1907+ raise ValueError ("logger should be initialized to fit ensemble" )
1908+
1909+ self ._results_manager .ensemble_performance_history = list (manager .history )
1910+
1911+ if len (manager .futures ) > 0 :
1912+ # Also add ensemble runs that did not finish within smac time
1913+ # and add them into the ensemble history
1914+ self ._logger .info ("Ensemble script still running, waiting for it to finish." )
1915+ result = manager .futures .pop ().result ()
1916+ if result :
1917+ ensemble_history , _ , _ , _ = result
1918+ self ._results_manager .ensemble_performance_history .extend (ensemble_history )
1919+ self ._logger .info ("Ensemble script finished, continue shutdown." )
1920+
1921+ # save the ensemble performance history file
1922+ if len (self .ensemble_performance_history ) > 0 :
1923+ pd .DataFrame (self .ensemble_performance_history ).to_json (
1924+ os .path .join (self ._backend .internals_directory , 'ensemble_history.json' ))
1925+
19231926 def predict (
19241927 self ,
19251928 X_test : np .ndarray ,
0 commit comments