示例#1
0
    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)
示例#2
0
    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)
示例#3
0
    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)
示例#4
0
    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)
示例#5
0
    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)
示例#6
0
    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