Example #1
0
 def __init__(self,
              margin,
              obs_type="probit",
              method="ep",
              max_iter=100,
              lr=1.0):
     ks_model = ks.TernaryModel(margin=margin, obs_type=obs_type)
     fit_params = {"method": method, "max_iter": max_iter, "lr": lr}
     super().__init__(ks_model, fit_params)
Example #2
0
    model = model_class(**data.get("model_args", {}))
    for item in data["items"]:
        kernel_class = getattr(ks.kernel, item["kernel_class"])
        kernel = kernel_class(**item["kernel_args"])
        model.add_item(item["name"], kernel=kernel)
    for obs in data["observations"]:
        model.observe(**obs)
    model.fit(**data.get("fit_args", {}))
    for name, scores in data["scores"].items():
        _, mean, var = model.item[name].scores
        assert np.allclose(scores["mean"], mean, rtol=1e-3)
        assert np.allclose(scores["var"], var, rtol=1e-3)
    assert np.allclose(model.log_likelihood, data["log_likelihood"], rtol=1e-3)


@pytest.mark.parametrize("model", [ks.BinaryModel(), ks.TernaryModel()])
def test_chronological_order(model):
    """Observations can only be added in chronological order."""
    model.add_item("x", kernel=ks.kernel.Constant(1.0))
    model.observe(winners=["x"], losers=[], t=1.0)
    with pytest.raises(ValueError):
        model.observe(winners=["x"], losers=[], t=0.0)


def test_damping():
    """Damping should work on a simple example."""
    kernel = ks.kernel.Constant(1.0)
    model = ks.BinaryModel()
    for x in ["A", "B", "C", "D"]:
        model.add_item(x, kernel=kernel)
    model.observe(winners=["C", "D"], losers=["A", "B"], t=0.0)
Example #3
0
 def __init__(self, *, margin, cvar, wvar):
     ks_model = ks.TernaryModel(margin=margin, obs_type="probit")
     TTTModel.init_items(ks_model, cvar, wvar)
     fit_params = {"method": "ep", "max_iter": 500, "lr": 1.0}
     super().__init__(ks_model, fit_params)
Example #4
0
 def __init__(self, *, margin, ovar, svar, dvar, lscale):
     ks_model = ks.TernaryModel(margin=margin, obs_type="probit")
     AffineDynamicModel.init_items(ks_model, ovar, svar, dvar, lscale)
     fit_params = {"method": "ep", "max_iter": 500, "lr": 1.0}
     super().__init__(ks_model, fit_params)