def test_smbo_metalearning_configurations(backend, context, dask_client): # Get the inputs to the optimizer X_train, Y_train, X_test, Y_test = putil.get_dataset('iris') config_space = AutoML(backend=backend, metric=autosklearn.metrics.accuracy, time_left_for_this_task=20, per_run_time_limit=5).fit( X_train, Y_train, task=BINARY_CLASSIFICATION, only_return_configuration_space=True) watcher = StopWatch() # Create an optimizer smbo = AutoMLSMBO( config_space=config_space, dataset_name='iris', backend=backend, total_walltime_limit=10, func_eval_time_limit=5, memory_limit=4096, metric=autosklearn.metrics.accuracy, watcher=watcher, n_jobs=1, dask_client=dask_client, port=logging.handlers.DEFAULT_TCP_LOGGING_PORT, start_num_run=1, data_memory_limit=None, num_metalearning_cfgs=25, pynisher_context=context, ) assert smbo.pynisher_context == context # Create the inputs to metalearning datamanager = XYDataManager( X_train, Y_train, X_test, Y_test, task=BINARY_CLASSIFICATION, dataset_name='iris', feat_type={i: 'numerical' for i in range(X_train.shape[1])}, ) backend.save_datamanager(datamanager) smbo.task = BINARY_CLASSIFICATION smbo.reset_data_manager() metalearning_configurations = smbo.get_metalearning_suggestions() # We should have 25 metalearning configurations assert len(metalearning_configurations) == 25 assert [ isinstance(config, Configuration) for config in metalearning_configurations ]
def get_meta_learning_configs(X, y, task_type, dataset_name='default', metric='accuracy', num_cfgs=5): if X is None or y is None: X, y, _ = load_data(dataset_name) backend = create(temporary_directory=None, output_directory=None, delete_tmp_folder_after_terminate=False, delete_output_folder_after_terminate=False, shared_mode=True) dm = XYDataManager(X, y, None, None, task_type, None, dataset_name) configuration_space = pipeline.get_configuration_space( dm.info, include_estimators=None, exclude_estimators=None, include_preprocessors=None, exclude_preprocessors=None) watcher = StopWatch() name = os.path.basename(dm.name) watcher.start_task(name) def reset_data_manager(max_mem=None): pass automlsmbo = AutoMLSMBO( config_space=configuration_space, dataset_name=dataset_name, backend=backend, total_walltime_limit=1e5, func_eval_time_limit=1e5, memory_limit=1e5, metric=metric, watcher=watcher, metadata_directory='components/meta_learning/meta_resource', num_metalearning_cfgs=num_cfgs) automlsmbo.reset_data_manager = reset_data_manager automlsmbo.task = task_type automlsmbo.datamanager = dm configs = automlsmbo.get_metalearning_suggestions() return configs