示例#1
0
    def _makeFactor(self, node, observed, log):
        nodes = np.array([node] + self.network.parents[node])
        probs = self.network.probabilities[node].values

        nodes_in_observed = nodes[np.in1d(nodes, observed.keys())]
        if nodes_in_observed.size > 0:
            if nodes.size > nodes_in_observed.size:
                factor = Factor(nodes, probs, self.network)

                log.write("\nReduce\n")
                log.write(str(factor))
                log.write("Evidence: " + str(observed) + "\n\n")

                return factor.reduce(nodes_in_observed, observed)
            else:
                return Factor()
        else:
            return Factor(nodes, probs, self.network)