def test_conversion(): model = to_sk_model("sklearn.linear_model.LinearRegression") expr = to_sk_model_expr(model) assert "sklearn.linear_model._base.LinearRegression" == expr expr = to_sk_model_expr("sklearn.linear_model.LinearRegression") assert "sklearn.linear_model._base.LinearRegression" == expr raises(TypeError, lambda: to_sk_model("int"))
def run(self, trial: Trial) -> TrialReport: params = dict(trial.params) if trial.trial_id != self._last_id: self._model_type = to_sk_model(params.pop(SPACE_MODEL_NAME)) self._model_expr = to_sk_model_expr(self._model_type) self._train_x, self._train_y = self._reset_xy( trial.dfs[TUNE_DATASET_DF_DEFAULT_NAME] ) self._test_x, self._test_y = self._reset_xy( trial.dfs[TUNE_DATASET_VALIDATION_DF_DEFAULT_NAME] ) self._last_id = trial.trial_id else: params.pop(SPACE_MODEL_NAME) model = self._model_type(**params).fit(self._train_x, self._train_y) metric = get_scorer(self._scoring)(model, self._test_x, self._test_y) metadata = dict(model=self._model_expr) if self._checkpoint_path is not None: fp = os.path.join(self._checkpoint_path, str(uuid4()) + ".pkl") with FileSystem().openbin(fp, mode="wb") as f: pickle.dump(model, f) metadata["checkpoint_path"] = fp return TrialReport( trial, metric=metric, metadata=metadata, sort_metric=self.generate_sort_metric(metric), )
def run(self, trial: Trial) -> TrialReport: params = dict(trial.params) if trial.trial_id != self._last_id: self._model_type = to_sk_model(params.pop(SPACE_MODEL_NAME)) self._model_expr = to_sk_model_expr(self._model_type) self._train_x, self._train_y = self._reset_xy( trial.dfs[TUNE_DATASET_DF_DEFAULT_NAME] ) self._last_id = trial.trial_id else: params.pop(SPACE_MODEL_NAME) model = self._model_type(**params) s = cross_val_score( model, self._train_x, self._train_y, cv=self._cv, scoring=self._scoring ) metadata = dict(model=self._model_expr, cv_scores=[float(x) for x in s]) if self._checkpoint_path is not None: model.fit(self._train_x, self._train_y) fp = os.path.join(self._checkpoint_path, str(uuid4()) + ".pkl") with FileSystem().openbin(fp, mode="wb") as f: pickle.dump(model, f) metadata["checkpoint_path"] = fp metric = float(np.mean(s)) return TrialReport( trial, metric=metric, metadata=metadata, sort_metric=self.generate_sort_metric(metric), )