bayes q2
This commit is contained in:
@ -102,7 +102,27 @@ def joinFactors(factors: List[Factor]):
|
|||||||
|
|
||||||
|
|
||||||
"*** YOUR CODE HERE ***"
|
"*** YOUR CODE HERE ***"
|
||||||
raiseNotDefined()
|
factor_list = [item for item in factors]
|
||||||
|
conditioned_variables = []
|
||||||
|
unconditioned_variables = []
|
||||||
|
variablesDomainDict = factor_list[0].variableDomainsDict()
|
||||||
|
for factor in factor_list:
|
||||||
|
for var in factor.unconditionedVariables():
|
||||||
|
if var not in unconditioned_variables:
|
||||||
|
unconditioned_variables.append(var)
|
||||||
|
if var in conditioned_variables:
|
||||||
|
conditioned_variables.remove(var)
|
||||||
|
for var in factor.conditionedVariables():
|
||||||
|
if var not in conditioned_variables and var not in unconditioned_variables:
|
||||||
|
conditioned_variables.append(var)
|
||||||
|
joint_factor = Factor(unconditioned_variables, conditioned_variables, variablesDomainDict)
|
||||||
|
cases=joint_factor.getAllPossibleAssignmentDicts()
|
||||||
|
for case_ in cases:
|
||||||
|
prob = 1
|
||||||
|
for factor in factor_list:
|
||||||
|
prob *= factor.getProbability(case_)
|
||||||
|
joint_factor.setProbability(case_, prob)
|
||||||
|
return joint_factor
|
||||||
"*** END YOUR CODE HERE ***"
|
"*** END YOUR CODE HERE ***"
|
||||||
|
|
||||||
########### ########### ###########
|
########### ########### ###########
|
||||||
|
Reference in New Issue
Block a user