def test_fit_with_constraints(): p = Normal() X = st.norm(loc=0.05, scale=1.0).rvs(5000, random_state=0).reshape(-1, 1) p.fit(X, constraints=[{ "param": p.mu, "type": "ineq", "fun": lambda mu: mu }, { "param": p.mu, "type": "ineq", "fun": lambda mu: 0.1 - mu }, { "param": p.sigma, "type": "ineq", "fun": lambda sigma: sigma }, { "param": (p.mu, p.sigma), "type": "ineq", "fun": lambda mu, sigma: mu * sigma }]) assert p.mu.get_value() >= 0.0 assert p.mu.get_value() <= 0.1 assert p.sigma.get_value() >= 0.0 assert p.mu.get_value() * p.sigma.get_value() >= 0.0
def check_fit(mu, sigma): p = Normal() X = st.norm(loc=mu, scale=sigma).rvs(5000, random_state=0).reshape(-1, 1) s0 = p.score(X) p.fit(X) assert np.abs(p.mu.get_value() - mu) <= 0.1 assert np.abs(p.sigma.get_value() - sigma) <= 0.1 assert p.score(X) >= s0
def test_fit_with_bounds(): p = Normal() X = st.norm(loc=0.05, scale=1.0).rvs(5000, random_state=0).reshape(-1, 1) p.fit(X, bounds=[{"param": p.sigma, "bounds": (0, None)}]) assert p.sigma.get_value() >= 0.0