Exemplo n.º 1
0
 def test_gridsearch_can_log_with_context_manager(self,
                                                  feature_union_classifier,
                                                  train_iris_dataset,
                                                  tmp_path):
     classifier = Model(feature_union_classifier)
     classifier.config.RUN_DIR = tmp_path
     with classifier.log("gridsearch_union_test"):
         _, _ = classifier.gridsearch(
             train_iris_dataset,
             param_grid={"estimator__penalty": ["l1", "l2"]})
Exemplo n.º 2
0
    def test_gridsearch_uses_default_metric(self, classifier: Model,
                                            train_iris_dataset):
        model, results = classifier.gridsearch(
            train_iris_dataset, param_grid={"penalty": ["l1", "l2"]})

        assert len(results) == 2
        assert results[0].metrics.score >= results[1].metrics.score
        assert results[0].metrics.name == "accuracy"

        assert isinstance(model, Model)
Exemplo n.º 3
0
    def test_gridsearch_model_does_not_fail_when_run_twice(
            self, pipeline_logistic: Pipeline, train_iris_dataset):
        model = Model(pipeline_logistic)
        best_model, results = model.gridsearch(
            train_iris_dataset,
            param_grid={"estimator__penalty": ["l1", "l2"]})
        assert isinstance(best_model.estimator, Pipeline)
        assert 2 == len(results)

        for result in results:
            assert isinstance(result, Result)

        best_model, results = model.gridsearch(
            train_iris_dataset,
            param_grid={"estimator__penalty": ["l1", "l2"]})
        assert isinstance(best_model.estimator, Pipeline)
        assert 2 == len(results)

        for result in results:
            assert isinstance(result, Result)
Exemplo n.º 4
0
    def test_gridsearch_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.gridsearch(
            train_iris_dataset,
            param_grid={"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)
Exemplo n.º 5
0
    def test_gridsearch_model_returns_as_expected(self,
                                                  pipeline_logistic: Pipeline,
                                                  train_iris_dataset):
        model = Model(pipeline_logistic)
        model, results = model.gridsearch(
            train_iris_dataset,
            param_grid={"estimator__penalty": ["l1", "l2"]})
        assert isinstance(model.estimator, Pipeline)
        assert 2 == len(results)

        for result in results:
            assert isinstance(result, Result)
Exemplo n.º 6
0
    def test_gridsearch_can_take_multiple_metrics(self, classifier: Model,
                                                  train_iris_dataset):
        model, results = classifier.gridsearch(
            train_iris_dataset,
            param_grid={"penalty": ["l1", "l2"]},
            metrics=["accuracy", "roc_auc"],
        )

        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