Пример #1
0
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)
Пример #2
0
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)
Пример #3
0
    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
Пример #4
0
    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)
Пример #5
0
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()
Пример #6
0
    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
Пример #7
0
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)
Пример #8
0
#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)
    #            }
)