示例#1
0
def discrete_likelihood(node, data=None, dtype=np.float64):
    probs, marg_ids, observations = leaf_marginalized_likelihood(node, data, dtype)
    scipy_obj, params = get_scipy_obj_params(node)
    probs[~marg_ids] = scipy_obj.pmf(observations, **params)
    probs[probs == 1.0] = 0.999999999
    probs[probs == 0.0] = 0.000000001
    return probs
示例#2
0
def categorical_dictionary_likelihood(node, data=None, dtype=np.float64):
    probs, marg_ids, observations = leaf_marginalized_likelihood(
        node, data, dtype)

    dict_probs = [node.p.get(val, 0.0) for val in observations]
    probs[~marg_ids] = dict_probs
    return probs
示例#3
0
def piecewise_log_likelihood(node, data=None, dtype=np.float64, **kwargs):
    probs, marg_ids, observations = leaf_marginalized_likelihood(
        node, data, dtype, log_space=True)
    probs[~marg_ids] = piecewise_complete_cases_log_likelihood(node,
                                                               observations,
                                                               dtype=dtype)
    return probs
示例#4
0
def gamma_likelihood(node, data=None, dtype=np.float64):
    probs, marg_ids, observations = leaf_marginalized_likelihood(node, data, dtype)

    observations[observations == 0] += POS_EPS

    scipy_obj, params = get_scipy_obj_params(node)
    probs[~marg_ids] = scipy_obj.pdf(observations, **params)
    return probs
示例#5
0
def discrete_log_likelihood(node, data=None, dtype=np.float64, **kwargs):
    probs, marg_ids, observations = leaf_marginalized_likelihood(
        node, data, dtype, log_space=True)
    scipy_obj, params = get_scipy_obj_params(node)
    probs[~marg_ids] = scipy_obj.logpmf(observations, **params)
    # probs[probs == 1.0] = 0.999999999
    # probs[np.isinf(probs)] = 0.000000001
    probs[np.isinf(probs)] = MIN_NEG  # 0.000000001
    return probs
示例#6
0
def categorical_likelihood(node, data=None, dtype=np.float64):
    probs, marg_ids, observations = leaf_marginalized_likelihood(node, data, dtype)

    cat_data = observations.astype(np.int64)
    assert np.all(np.equal(np.mod(cat_data, 1), 0))
    out_domain_ids = cat_data >= node.k

    idx_out = ~marg_ids
    idx_out[idx_out] = out_domain_ids
    probs[idx_out] = 0

    idx_in = ~marg_ids
    idx_in[idx_in] = ~out_domain_ids
    probs[idx_in] = np.array(node.p)[cat_data[~out_domain_ids]]
    return probs
示例#7
0
def gaussian_likelihood(node,
                        data=None,
                        dtype=np.float64,
                        bmarg=None,
                        ibm=None):
    probs, marg_ids, observations = leaf_marginalized_likelihood(
        node, data, dtype)
    scipy_obj, params = get_scipy_obj_params(node)
    # probs[~marg_ids] = scipy_obj.pdf(observations, **params)
    if bmarg:
        ibm = ibm[:, node.scope]
        probs_reliable = np.expand_dims(scipy_obj.pdf(observations, **params),
                                        axis=1)
        probs_unreliable = np.expand_dims(scipy.stats.norm.cdf(
            observations, loc=params['loc'], scale=params['scale']),
                                          axis=1)
        probs = np.where(ibm, probs_reliable, probs_unreliable)
    else:
        probs[~marg_ids] = scipy_obj.pdf(observations, **params)
    return probs
示例#8
0
def continuous_likelihood(node, data=None, dtype=np.float64, **kwargs):
    probs, marg_ids, observations = leaf_marginalized_likelihood(
        node, data, dtype)
    scipy_obj, params = get_scipy_obj_params(node)
    probs[~marg_ids] = scipy_obj.pdf(observations, **params)
    return probs
示例#9
0
def uniform_log_likelihood(node, data=None, dtype=np.float64, **kwargs):
    probs, marg_ids, observations = leaf_marginalized_likelihood(
        node, data, dtype, log_space=True)

    probs[~marg_ids] = np.log(node.density)
    return probs
示例#10
0
def uniform_likelihood(node, data=None, dtype=np.float64):
    probs, marg_ids, observations = leaf_marginalized_likelihood(
        node, data, dtype)

    probs[~marg_ids] = node.density
    return probs
示例#11
0
def poisson_likelihood(node, data=None, dtype=np.float64):
    probs, marg_ids, observations = leaf_marginalized_likelihood(
        node, data, dtype)
    scipy_obj, params = get_scipy_obj_params(node)
    probs[~marg_ids] = scipy_obj.pmf(observations, **params)
    return probs