Пример #1
0
def test_objective(tmpdir):
    dfs = load_iris(as_frame=True)
    df = dfs["data"]
    df["label"] = dfs["target"]
    df = df[df.label <= 1]

    t = Trial(
        "x",
        params={
            "max_iter": RandInt(2, 4),
            SPACE_MODEL_NAME: "sklearn.linear_model.LogisticRegression",
        },
        dfs={TUNE_DATASET_DF_DEFAULT_NAME: df},
    )
    obj = SKCVObjective(scoring="accuracy")
    runner = HyperoptRunner(5, 0)

    def v(report):
        print(report.jsondict)
        assert report.sort_metric < 0
        assert "cv_scores" in report.metadata
        # assert report.trial.params["max_iter"] >= 2

    validate_noniterative_objective(obj, t, v, runner=runner)

    obj = SKCVObjective(scoring="accuracy", checkpoint_path=str(tmpdir))

    def v2(report):
        print(report.jsondict)
        assert report.sort_metric < 0
        assert "cv_scores" in report.metadata
        assert "checkpoint_path" in report.metadata
        # assert report.trial.params["max_iter"] >= 2

    validate_noniterative_objective(obj, t, v2, runner=runner)
Пример #2
0
def test_hyperopt():
    params = dict(a=Rand(-10.0, 10.0), b=RandInt(-100, 100), c=2.0)
    trial = Trial("a", params, metadata={})
    h = HyperoptRunner(max_iter=200, seed=0)

    @noniterative_objective
    def objective(a, b, c) -> Tuple[float, Dict[str, Any]]:
        return a**2 + b**2 + c, dict(a=1)

    def v(report):
        assert report.metric < 7
        assert report.params["a"]**2 < 2
        assert report.params["b"]**2 < 2
        assert 2.0 == report.params["c"]

    validate_noniterative_objective(objective, trial, v, runner=h)
Пример #3
0
        def test_optimization_dummy(self):
            params = dict(a=1, b=2, c=3)
            trial = Trial("a", params, metadata={})
            o = self.make_optimizer(max_iter=5)

            @noniterative_objective
            def objective(a, b, c) -> Tuple[float, Dict[str, Any]]:
                return a**2 + b**2 + c, dict(a="x")

            def v(report):
                assert 1 == report.params.simple_value["a"]
                assert 2 == report.params.simple_value["b"]
                assert 3 == report.params.simple_value["c"]
                assert report.metric == 8
                assert "x" == report.metadata["a"]

            validate_noniterative_objective(objective, trial, v, optimizer=o)
Пример #4
0
        def test_optimization(self):
            params = dict(a=Rand(-10.0, 10.0), b=RandInt(-100, 100), c=2.0)
            trial = Trial("a", params, metadata={})
            o = self.make_optimizer(max_iter=200)

            @noniterative_objective
            def objective(a, b, c) -> Tuple[float, Dict[str, Any]]:
                return a**2 + b**2 + c, dict(a="x")

            def v(report):
                print(report.metric)
                assert report.metric < 7
                assert report.params.simple_value["a"]**2 < 2
                assert report.params.simple_value["b"]**2 < 2
                assert 2.0 == report.params.simple_value["c"]
                assert "x" == report.metadata["a"]

            validate_noniterative_objective(objective, trial, v, optimizer=o)