def test_bayessearch_uses_default_metric(self, classifier: Model, train_iris_dataset): model, results = classifier.bayesiansearch( train_iris_dataset, param_distributions={"penalty": ["l1", "l2"]}, n_iter=2) assert len(results) == 2 assert results[0].metrics.score >= results[1].metrics.score assert results[0].metrics.name == "accuracy" assert isinstance(model, Model)
def test_bayessearch_best_model_is_not_fitted_if_refit_is_not_true( self, pipeline_logistic: Pipeline, train_iris_dataset: Dataset): model = Model(pipeline_logistic) model, results = model.bayesiansearch( train_iris_dataset, param_distributions={"estimator__penalty": ["l1", "l2"]}, refit=False, ) with pytest.raises(MLToolingError, match="You haven't fitted the estimator"): model.make_prediction(data=train_iris_dataset, idx=1)
def test_bayessearch_can_take_dist_objs(self, classifier: Model, train_iris_dataset): param_dist = { "C": Real(1e-4, 1e0), } model, results = classifier.bayesiansearch( train_iris_dataset, param_distributions=param_dist, n_iter=2) assert len(results) == 2 assert results[0].metrics.score >= results[1].metrics.score assert results[0].metrics.name == "accuracy" assert isinstance(model, Model)
def test_bayessearc_model_returns_as_expected(self, pipeline_logistic: Pipeline, train_iris_dataset): model = Model(pipeline_logistic) model, results = model.bayesiansearch( train_iris_dataset, param_distributions={"estimator__penalty": ["l1", "l2"]}, n_iter=2, ) assert isinstance(model.estimator, Pipeline) assert 2 == len(results) for result in results: assert isinstance(result, Result)
def test_bayes_search_model_does_not_fail_when_run_twice( self, pipeline_logistic: Pipeline, train_iris_dataset): model = Model(pipeline_logistic) best_model, results = model.bayesiansearch( train_iris_dataset, param_distributions={"estimator__penalty": ["l1", "l2"]}, n_iter=2, ) assert isinstance(best_model.estimator, Pipeline) assert 2 == len(results) for result in results: assert isinstance(result, Result) best_model, results = model.bayesiansearch( train_iris_dataset, param_distributions={"estimator__penalty": ["l1", "l2"]}, n_iter=2, ) assert isinstance(best_model.estimator, Pipeline) assert 2 == len(results) for result in results: assert isinstance(result, Result)
def test_bayessearch_can_take_multiple_metrics(self, classifier: Model, train_iris_dataset): model, results = classifier.bayesiansearch( train_iris_dataset, param_distributions={"penalty": ["l1", "l2"]}, metrics=["accuracy", "roc_auc"], n_iter=2, ) assert len(results) == 2 assert results[0].metrics.score >= results[1].metrics.score for result in results: assert len(result.metrics) == 2 assert "accuracy" in result.metrics assert "roc_auc" in result.metrics assert result.metrics.name == "accuracy" assert result.metrics.score == result.metrics[0].score