def get_alarm3_prob(bayes_net): """Calculate theprobability of the temperature being hot (T/F) in the power plant system, given that the alarm sounds and neither the gauge nor alarm is faulty.""" # TODO: finish this function MA = bayes_net.get_node_by_name('main alarm') B = bayes_net.get_node_by_name('burglar') A2 = bayes_net.get_node_by_name('alarm 2') A3 = bayes_net.get_node_by_name('alarm 3') engine = JunctionTreeEngine(bayes_net) engine.evidence[A2] = False engine.evidence[MA] = False engine.evidence[B] = True Q = engine.marginal(A3)[0] index = Q.generate_index([True],range(Q.nDims)) temp_prob = Q[index] engine2 = EnumerationEngine(bayes_net) engine2.evidence[A2] = False # A won against B engine2.evidence[MA] = False # A won against B engine2.evidence[B] = True # A won against B Q = engine.marginal(A3)[0] posterior = Q.table print "Or:" , posterior.tolist() return temp_prob
def get_gauge_prob(bayes_net, gauge_hot): """Calculate the marginal probability of the gauge showing hot (T/F) in the power plant system.""" # TODO: finish this function G_node = bayes_net.get_node_by_name('gauge') engine = JunctionTreeEngine(bayes_net) Q = engine.marginal(G_node)[0] index = Q.generate_index([gauge_hot],range(Q.nDims)) prob = Q[index] return prob
def get_alarm_prob(bayes_net, alarm_rings): """Calculate the marginal probability of the alarm ringing (T/F) in the power plant system.""" # TODO: finish this function A_node = bayes_net.get_node_by_name('alarm') engine = JunctionTreeEngine(bayes_net) Q = engine.marginal(A_node)[0] index = Q.generate_index([alarm_rings],range(Q.nDims)) prob = Q[index] return prob
def get_A_given_E(bayes_net): E_node = bayes_net.get_node_by_name('exercise') A_node = bayes_net.get_node_by_name('assignment') engine = JunctionTreeEngine(bayes_net) engine.evidence[E_node] = True Q = engine.marginal(A_node)[0] index = Q.generate_index([True], range(Q.nDims)) assignment_prob = Q[index] return (assignment_prob)
def get_not_G_given_not_N(bayes_net): N_node = bayes_net.get_node_by_name('netflix') G_node = bayes_net.get_node_by_name('graduate') engine = JunctionTreeEngine(bayes_net) engine.evidence[N_node] = False Q = engine.marginal(G_node)[0] index = Q.generate_index([False], range(Q.nDims)) graduate_prob = Q[index] return (graduate_prob)
def get_gauge_prob(bayes_net, gauge_hot): """Calculate the marginal probability of the gauge showing hot (T/F) in the power plant system.""" # TOOD: finish this function G_node = bayes_net.get_node_by_name('gauge') engine = JunctionTreeEngine(bayes_net) Q = engine.marginal(G_node)[0] index = Q.generate_index([True],range(Q.nDims)) gauge_prob = Q[index] return gauge_prob
def get_alarm_prob(bayes_net, alarm_rings): """Calculate the marginal probability of the alarm ringing (T/F) in the power plant system.""" # TODO: finish this function A_node = bayes_net.get_node_by_name('alarm') engine = JunctionTreeEngine(bayes_net) Q = engine.marginal(A_node)[0] index = Q.generate_index([True],range(Q.nDims)) alarm_prob = Q[index] return alarm_prob
def get_C_given_G_E(bayes_net): C_node = bayes_net.get_node_by_name('club') G_node = bayes_net.get_node_by_name('graduate') E_node = bayes_net.get_node_by_name('exercise') engine = JunctionTreeEngine(bayes_net) engine.evidence[G_node] = True engine.evidence[E_node] = True #engine.evidence[N_node] = False Q = engine.marginal(C_node)[0] index = Q.generate_index([True], range(Q.nDims)) club_prob = Q[index] return (club_prob)
def get_alarm_prob(bayes_net, alarm_rings): """Calculate the marginal probability of the alarm ringing (T/F) in the power plant system.""" A_node = bayes_net.get_node_by_name("alarm") engine = JunctionTreeEngine(bayes_net) Q = engine.marginal(A_node)[0] index = Q.generate_index([alarm_rings], range(Q.nDims)) alarm_prob = Q[index] return alarm_prob raise NotImplementedError
def get_gauge_prob(bayes_net, gauge_hot): """Calculate the marginal probability of the gauge showing hot (T/F) in the power plant system.""" G_node = bayes_net.get_node_by_name("gauge") engine = JunctionTreeEngine(bayes_net) Q = engine.marginal(G_node)[0] index = Q.generate_index([gauge_hot], range(Q.nDims)) gauge_prob = Q[index] return gauge_prob raise NotImplementedError
def get_E_given_G_N(bayes_net): E_node = bayes_net.get_node_by_name('exercise') G_node = bayes_net.get_node_by_name('graduate') N_node = bayes_net.get_node_by_name('netflix') engine = JunctionTreeEngine(bayes_net) engine.evidence[G_node] = True engine.evidence[N_node] = True #engine.evidence[N_node] = False Q = engine.marginal(E_node)[0] index = Q.generate_index([True], range(Q.nDims)) exercise_prob = Q[index] return (exercise_prob)
def get_alarm_prob(bayes_net): """Calculate the marginal probability of the alarm ringing in the power plant system.""" # TODO: finish this function #raise NotImplementedError A_node = bayes_net.get_node_by_name('alarm') #T_node = bayes_net.get_node_by_name('temperature') engine = JunctionTreeEngine(bayes_net) Q = engine.marginal(A_node)[0] index = Q.generate_index([True], range(Q.nDims)) alarm_prob = Q[index] return alarm_prob
def get_mission_prob_goodbooster(bayes_net): """Calculate the marginal probability of the alarm ringing in the power plant system.""" # TODO: finish this function #raise NotImplementedError mission_node = bayes_net.get_node_by_name('mission') #T_node = bayes_net.get_node_by_name('temperature') engine = JunctionTreeEngine(bayes_net) Q = engine.marginal(mission_node)[0] index = Q.generate_index([False], range(Q.nDims)) mission_prob = Q[index] print(mission_prob)
def get_mission_prob_badbooster(bayes_net): """Calculate the conditional probability of the temperature being hot in the power plant system, given that the alarm sounds and neither the gauge nor alarm is faulty.""" # TODO: finish this function #raise NotImplementedError weather_node = bayes_net.get_node_by_name('weather') mission_node = bayes_net.get_node_by_name('mission') engine = JunctionTreeEngine(bayes_net) engine.evidence[weather_node] = False Q = engine.marginal(mission_node)[0] index = Q.generate_index([False], range(Q.nDims)) mission_prob = Q[index] print(mission_prob)
def get_temperature_prob(bayes_net,temp_hot): """Calculate the probability of the temperature being hot (T/F) in the power plant system, given that the alarm sounds and neither the gauge nor alarm is faulty.""" # TODO: finish this function T_node = bayes_net.get_node_by_name('temperature') F_A_node = bayes_net.get_node_by_name('faulty alarm') F_G_node = bayes_net.get_node_by_name('faulty gauge') A_node = bayes_net.get_node_by_name('alarm') engine = JunctionTreeEngine(bayes_net) engine.evidence[A_node] = True # alarm sounds engine.evidence[F_A_node] = False # alarm is NOT faulty engine.evidence[F_G_node] = False # gauge is NOT faulty Q = engine.marginal(T_node)[0] index = Q.generate_index([temp_hot],range(Q.nDims)) prob = Q[index] return prob
def get_gauge_prob(bayes_net): """Calculate the marginal probability of the gauge showing hot in the power plant system.""" # TODO: finish this function #raise NotImplementedError G_node = bayes_net.get_node_by_name('gauge') #T_node = bayes_net.get_node_by_name('temperature') #F_G_node = bayes_net.get_node_by_name('faulty gauge') engine = JunctionTreeEngine(bayes_net) #engine.evidence[T_node] = True #engine.evidence[F_G_node] = True Q = engine.marginal(G_node)[0] index = Q.generate_index([True], range(Q.nDims)) gauge_prob = Q[index] return gauge_prob
def get_temperature_prob(bayes_net,temp_hot): """Calculate theprobability of the temperature being hot (T/F) in the power plant system, given that the alarm sounds and neither the gauge nor alarm is faulty.""" # TODO: finish this function A_node = bayes_net.get_node_by_name('alarm') F_A_node = bayes_net.get_node_by_name('faulty alarm') F_G_node = bayes_net.get_node_by_name('faulty gauge') T_node = bayes_net.get_node_by_name('temperature') engine = JunctionTreeEngine(bayes_net) engine.evidence[A_node] = True engine.evidence[F_A_node] = False engine.evidence[F_G_node] = False Q = engine.marginal(T_node)[0] index = Q.generate_index([True],range(Q.nDims)) temp_prob = Q[index] return temp_prob
def get_ghost_prob2(bayes_net): """Calculate theprobability of the temperature being hot (T/F) in the power plant system, given that the alarm sounds and neither the gauge nor alarm is faulty.""" # TODO: finish this function A3 = bayes_net.get_node_by_name('alarm 3') A2 = bayes_net.get_node_by_name('alarm 2') G = bayes_net.get_node_by_name('ghost') engine = JunctionTreeEngine(bayes_net) engine.evidence[A2] = False engine.evidence[A3] = True Q = engine.marginal(G)[0] index = Q.generate_index([False],range(Q.nDims)) temp_prob = Q[index] return temp_prob
def get_temperature_prob(bayes_net, temp_hot): """Calculate the conditional probability of the temperature being hot (T/F) in the power plant system, given that the alarm sounds and neither the gauge nor alarm is faulty.""" # TODO: finish this function # raise NotImplementedError A_node = bayes_net.get_node_by_name("alarm") F_A_node = bayes_net.get_node_by_name("faulty alarm") F_G_node = bayes_net.get_node_by_name("faulty gauge") T_node = bayes_net.get_node_by_name("temperature") engine = JunctionTreeEngine(bayes_net) engine.evidence[A_node] = True engine.evidence[F_G_node] = False engine.evidence[F_A_node] = False Q = engine.marginal(T_node)[0] index = Q.generate_index([temp_hot], range(Q.nDims)) temp_prob = Q[index] return temp_prob
def get_alarm_prob(bayes_net, alarm_rings): """Calculate the marginal probability of the alarm ringing (T/F) in the power plant system.""" # True or False alarm_rings = alarm_rings # set up engine engine = JunctionTreeEngine(bayes_net) # get nodes F_A_node = bayes_net.get_node_by_name('faulty alarm') G_node = bayes_net.get_node_by_name('gauge') A_node = bayes_net.get_node_by_name('alarm') # Compute the marginal probability of alarm given no evidence Q = engine.marginal(A_node)[0] #Q is a DiscreteDistribution, and so to index into it, we have to use the class' method to create an index index = Q.generate_index([False], range(Q.nDims)) alarm_prob_false = Q[index] alarm_prob_true = float(1 - Q[index]) alarm_prob = alarm_prob_true print "The marginal probability of alarm=true:", alarm_prob_true # marginal probablility of alarm ringing return alarm_prob
def get_gauge_prob(bayes_net, gauge_hot): """Calculate the marginal probability of the gauge showing hot (T/F) in the power plant system.""" # True or False gauge_hot = gauge_hot # Set up engine engine = JunctionTreeEngine(bayes_net) # Get nodes G_node = bayes_net.get_node_by_name('gauge') F_G_node = bayes_net.get_node_by_name('faulty gauge') T_node = bayes_net.get_node_by_name('temperature') # Compute the marginal probability of gauge given no evidence Q = engine.marginal(G_node)[0] #Q is a DiscreteDistribution, and so to index into it, we have to use the class' method to create an index index = Q.generate_index([False], range(Q.nDims)) gauge_prob_false = Q[index] gauge_prob_true = float(1 - Q[index]) gauge_prob = gauge_prob_true print "The marginal probability of gauge=true:", gauge_prob # marginal probablility of gauge showing hot return gauge_prob
def get_temperature_prob(bayes_net, temp_hot): """Calculate theprobability of the temperature being hot (T/F) in the power plant system, given that the alarm sounds and neither the gauge nor alarm is faulty.""" engine = JunctionTreeEngine(bayes_net) G_node = bayes_net.get_node_by_name('gauge') F_G_node = bayes_net.get_node_by_name('faulty gauge') T_node = bayes_net.get_node_by_name('temperature') A_node = bayes_net.get_node_by_name('alarm') F_A_node = bayes_net.get_node_by_name('faulty alarm') # True of False temp_hot = temp_hot engine.evidence[F_A_node] = False engine.evidence[F_G_node] = False engine.evidence[A_node] = True Q = engine.marginal(T_node)[0] index = Q.generate_index([False], range(Q.nDims)) temp_prob_false = Q[index] temp_prob_true = float(1 - Q[index]) temp_prob = temp_prob_true print "The probability of temperature=true (hot) given," print "F_A = false, F_G = false, and alarm sounds" print "temp_prob: ", temp_prob # the probability that the temperature is actually hot, given that the alarm sounds and the alarm and gauge are both working return temp_prob