コード例 #1
0
def __generate_new_cpt(factor, evidence_var):
    new_cpt = {}
    evidence_var_position = factor.factors.index(evidence_var.observed_variable)

    for key in factor.cpt.keys():

        if key[evidence_var_position] == evidence_var.observed_value:
            new_key = list(key)
            new_key.pop(evidence_var_position)
            new_key = utils.proper_key(new_key)
            new_cpt[new_key] = factor.cpt.get(key)

    return new_cpt
コード例 #2
0
def __set_cpt(node, parent_nodes, raw_cpt):
    splitted_cpt = raw_cpt.split()
    nodes = []
    if parent_nodes:
        nodes = [n for n in parent_nodes]
    nodes.append(node)

    domains = [n.domain for n in nodes]
    cpt = {}
    index = 0
    for k in itertools.product(*domains):
        key = utils.proper_key(k)
        cpt[key] = float(splitted_cpt[index])
        index += 1

    node.cpt = cpt