def test_hyperopt_parameters(use_hyperband: bool) -> None: sampler = TPESampler(**TPESampler.hyperopt_parameters()) study = optuna.create_study( sampler=sampler, pruner=optuna.pruners.HyperbandPruner() if use_hyperband else None) study.optimize(lambda t: t.suggest_uniform("x", 10, 20), n_trials=50)
def test_hyperparam_optim_tpe(): # Define trainenv train_env = GridWorld() # Parameters params = {"n_episodes": 500} # Run AgentStats stats_agent = AgentStats(DummyAgent, train_env, init_kwargs=params, n_fit=4, eval_horizon=10, n_jobs=1) # test hyperparameter optimization with TPE sampler # using hyperopt default values sampler_kwargs = TPESampler.hyperopt_parameters() stats_agent.optimize_hyperparams(sampler_kwargs=sampler_kwargs)
def __init__(self, frameworks, model_types, pre_proc=None, proc_dict=None, post_proc=None, scoring=None, cv=3, agg_func=np.mean, tol=1e-7, max_iter=50, max_fails=0, time_limit=None, study_name=None, save_cv_preds=False, pruner=LinearExtrapolationPruner(n_steps_back=2, n_steps_forward=15, percentage_from_best=90), sampler=TPESampler(**TPESampler.hyperopt_parameters()), storage=None, refit=True, n_jobs=1, verbose=1, random_state=None): self.frameworks = frameworks if isinstance(frameworks, list) else [frameworks] self.model_types = model_types if isinstance(model_types, list) else [model_types] self.pre_proc = pre_proc, self.proc_dict = proc_dict, self.post_proc = post_proc, self.scoring = scoring self.cv = cv self.agg_func = agg_func self.refit_ = refit self.tol = tol self.max_iter = max_iter self.time_limit = time_limit self.max_fails = max_fails self.study_name = study_name self.save_cv_preds = save_cv_preds self.pruner = pruner self.sampler = sampler # TODO: add CMA Sampler self.storage = storage self.n_jobs = n_jobs self.verbose = verbose self.random_state = random_state self.best_pipeline_ = None
def __init__(self, argument, grid_search_space=None): self.name = '' self.argument = argument self.grid_search_space = grid_search_space if self.argument.sampler == "grid": assert self.grid_search_space is not None, "grid search spaceを指定してください" self.sampler = GridSampler(self.grid_search_space) self.n_trials = 1 for value in self.grid_search_space.values(): self.n_trials *= len(value) # トライアル回数制限 # if self.n_trials > self.argument.n_trials: # self.n_trials = self.argument.n_trials self.obj_func_name = self.objective_grid elif self.argument.sampler == "random": self.sampler = RandomSampler(seed=self.argument.seed) self.n_trials = self.argument.n_trials self.obj_func_name = self.objective_no_grid else: self.sampler = TPESampler(**TPESampler.hyperopt_parameters(), seed=self.argument.seed) self.n_trials = self.argument.n_trials self.obj_func_name = self.objective_no_grid if self.n_trials == 1: try: mlflow.set_experiment(self.argument.experiment) except Exception as e: print(e) else: try: mlflow.set_experiment( self.argument.experiment + "_" + datetime.now().strftime('%Y%m%d_%H:%M:%S')) except Exception as e: print(e) self.study = optuna.create_study(sampler=self.sampler)
def test_hyperparam_optim_tpe(): # Define trainenv train_env = (GridWorld, {}) # Run AgentManager stats_agent = AgentManager( DummyAgent, train_env, fit_budget=1, init_kwargs={}, eval_kwargs={"eval_horizon": 5}, n_fit=4, ) # test hyperparameter optimization with TPE sampler # using hyperopt default values sampler_kwargs = TPESampler.hyperopt_parameters() stats_agent.optimize_hyperparams(sampler_kwargs=sampler_kwargs, n_trials=5) stats_agent.clear_output_dir()
def __init__(self, estimators, pipeline=None, pipe_params=None, scoring=None, cv=3, agg_func=np.mean, refit=True, tol=1e-5, max_iter=50, time_limit=None, max_fails=3, study_name=None, save_cv_preds=False, pruner=SuccessiveHalvingPruner(min_resource=3, reduction_factor=3), sampler=TPESampler(**TPESampler.hyperopt_parameters()), storage=None, n_jobs=1, verbose=1, random_state=None): self.estimators = estimators self.pipeline = pipeline self.pipe_params = pipe_params self.scoring = scoring self.cv = cv self.agg_func = agg_func self.refit_ = refit self.tol = tol self.max_iter = max_iter self.time_limit = time_limit self.max_fails = max_fails self.study_name = study_name self.save_cv_preds = save_cv_preds self.pruner = pruner self.sampler = sampler self.storage = storage self.n_jobs = n_jobs self.verbose = verbose self.random_state = random_state self.best_estimator_ = None
def test_hyperopt_parameters(): # type: () -> None sampler = TPESampler(**TPESampler.hyperopt_parameters()) study = optuna.create_study(sampler=sampler) study.optimize(lambda t: t.suggest_uniform('x', 10, 20), n_trials=50)
#y_train = y_train.iloc[X_train.index].reset_index(drop=True) #X_train.reset_index(inplace=True, drop=True) #pipeline - pipeline_objective OR regular pipeline #consider making pre-made steps with best practices (FS, scaling, etc...) then add option to concat to make one pipeline #pipeline = Pipeline([("sel", SelectPercentile(chi2))]) #pipe_params = {"sel__percentile" : optuna.distributions.IntUniformDistribution(1,100)} pipeline = None pipe_params = None from optuna.samplers import TPESampler sampler = TPESampler(**TPESampler.hyperopt_parameters(), seed=SEED) # sampler = optuna.integration.CmaEsSampler(n_startup_trials=40, # independent_sampler=TPESampler(**TPESampler.hyperopt_parameters()), # warn_independent_sampling=False, seed=SEED) #TODO: make sure uninstalled estimators don't show up xgb_linear = XGBClassifierHypster( booster_list=['gblinear'], lr_decay=0.1, n_iter_per_round=2 #,param_dict={#'subsample' : 0.9, #'eta' : optuna.distributions.LogUniformDistribution(0.8, 1.0) # } )