def main(): f1 = Factor(['Trav'], [['t', 'f']], [0.05, 0.95]) f2 = Factor(['Fraud', 'Trav'], [['t', 't', 'f', 'f'], ['t', 'f', 't', 'f']], [0.01, 0.004, 0.99, 0.996]) f3 = Factor(['FP', 'Fraud', 'Trav'], [['t', 't', 't', 't', 'f', 'f', 'f', 'f'], ['t', 't', 'f', 'f', 't', 't', 'f', 'f'], ['t', 'f', 't', 'f', 't', 'f', 't', 'f']], [0.9, 0.1, 0.9, 0.01, 0.1, 0.9, 0.1, 0.99]) f4 = Factor(['IP', 'Fraud', 'OC'], [['t', 't', 't', 't', 'f', 'f', 'f', 'f'], ['t', 't', 'f', 'f', 't', 't', 'f', 'f'], ['t', 'f', 't', 'f', 't', 'f', 't', 'f']], [0.02, 0.011, 0.01, 0.001, 0.98, 0.989, 0.99, 0.999]) f5 = Factor(['CRP', 'OC'], [['t', 't', 'f', 'f'], ['t', 'f', 't', 'f']], [0.1, 0.001, 0.9, 0.999]) f6 = Factor(['OC'], [['t', 'f']], [0.6, 0.4]) factorList = [f1, f2, f3, f4, f5, f6] quaryList = ['Fraud'] hiddenVariables = ['Trav', 'FP', 'Fraud', 'IP', 'OC', 'CRP'] evidenceList1 = dict(IP='t') evidenceList2 = dict(IP='t', CRP='t') Factor.inference(factorList, quaryList, hiddenVariables, evidenceList1) Factor.inference(factorList, quaryList, hiddenVariables, evidenceList2)
def main(): hiddenVariables = ['Trav','FP','Fraud','IP','OC','CRP'] factorTrav = Factor(['Trav'], [['t','f']], [0.05,0.95]) factorFraudTrav = Factor(['Fraud','Trav'],[['t','t','f','f'],['t','f','t','f']],[0.01,0.004,0.99,0.996]) factorFPFraudTrav = Factor(['FP','Fraud','Trav'],[['t','t','t','t','f','f','f','f'], ['t','t','f','f','t','t','f','f'], ['t','f','t','f','t','f','t','f']], [0.9,0.1,0.9,0.01,0.1,0.9,0.1,0.99]) factorIPFraudOC = Factor(['IP','Fraud','OC'],[['t','t','t','t','f','f','f','f'], ['t','t','f','f','t','t','f','f'], ['t','f','t','f','t','f','t','f']], [0.02,0.011,0.01,0.001,0.98,0.989,0.99,0.999]) factorCRPOC = Factor(['CRP','OC'],[['t','t','f','f'],['t','f','t','f']],[0.1,0.001,0.9,0.999]) factorOC = Factor(['OC'],[['t','f']],[0.6,0.4]) copyfactorTrav = factorTrav.copy() copyfactorFraudTrav = factorFraudTrav.copy() copyfactorFPFraudTrav = factorFPFraudTrav.copy() copyfactorIPFraudOC = factorIPFraudOC.copy() copyfactorCRPOC = factorCRPOC.copy() copyfactorOC = factorOC.copy() Factor.inference([copyfactorTrav,copyfactorFraudTrav,copyfactorFPFraudTrav,copyfactorIPFraudOC,copyfactorOC,copyfactorCRPOC], ['Fraud'],hiddenVariables,[['IP','t']]) Factor.inference([factorTrav,factorFraudTrav,factorFPFraudTrav,factorIPFraudOC,factorOC,factorCRPOC], ['Fraud'],hiddenVariables,[['IP','t'],['CRP','t']])
def main(): f1 = Factor(['Trav'], \ [0.05, 0.95]) f2 = Factor(['Fraud', 'Trav'], \ [[0.01, 0.004], \ [0.99, 0.996]]) f3 = Factor(['OC'], \ [0.6, 0.4]) f4 = Factor(['FP', 'Fraud', 'Trav'], \ [[[0.9, 0.1], \ [0.9, 0.01]], \ [[0.1, 0.9], \ [0.1, 0.99]]]) f5 = Factor(['IP', 'Fraud', 'OC'], \ [[[0.02, 0.011], \ [0.01, 0.001]], \ [[0.98, 0.989], \ [0.99, 0.999]]]) f6 = Factor(['CRP', 'OC'], \ [[0.1, 0.001], \ [0.9, 0.999]]) # Question b Factor.inference([f1, f2], ['Fraud'], ['Trav'], dict()) Factor.inference([f1, f2, f3, f4, f5, f6], ['Fraud'], ['Trav', 'OC'], dict(FP='t', IP='f', CRP='t')) # Question c Factor.inference([f1, f2, f3, f4, f5, f6], ['Fraud'], ['OC'], dict(FP='t', IP='f', CRP='t', Trav='t')) # Question d Factor.inference([f1, f2, f3, f4, f5, f6], ['Fraud'], ['Trav', 'FP', 'OC', 'CRP'], dict(IP='t')) Factor.inference([f1, f2, f3, f4, f5, f6], ['Fraud'], ['Trav', 'FP', 'OC'], dict(IP='t', CRP='t'))
def main(): factorC = Factor(['C'],[['t','f']],[0.32,0.68]) factorM = Factor(['M'],[['t','f']],[0.08,0.92]) factorBMC = Factor(['TB','M','C'], \ [['t','f','t','f','t','f','t','f'], \ ['t','t','t','t','f','f','f','f'], \ ['t','t','f','f','t','t','f','f']], \ [0.61,0.39,0.52,0.48,0.78,0.22,0.044,0.956]) factorRB = Factor(['TB','R'],[['t','t','f','f'],['t','f','t','f']],[0.98,0.02,0.01,0.99]) factorDR = Factor(['R','D'],[['t','t','f','f'],['t','f','t','f']],[0.96,0.04,0.001,0.999]) print "Factor f0(C)" print factorC print "Factor f1(M)" print factorM print "Factor f2(TB,M,C)" print factorBMC print "Factor f3(R,TB)" print factorRB print "Factor f4(D,R)" print factorDR print Factor.inference([factorC, factorM, factorBMC, factorRB, factorDR],['C'],['R','TB','M','C'],[['D','t']])
def main(): values = [['t', 't', 't', 't', 'f', 'f', 'f', 'f'], ['t', 't', 'f', 'f', 't', 't', 'f', 'f'], ['t', 'f', 't', 'f', 't', 'f', 't', 'f']] variables = ['X', 'Y', 'Z'] mappedValues = [0.1, 0.9, 0.2, 0.8, 0.4, 0.6, 0.3, 0.7] aFactor = Factor(variables, values, mappedValues) print aFactor aFactor.restrict('Z', 'f') print aFactor aFactor.restrict('X', 't') print aFactor del aFactor factor1 = Factor(['A', 'B'], [['t', 't', 'f', 'f'], ['t', 'f', 't', 'f']], [0.1, 0.9, 0.2, 0.8]) factor2 = Factor(['B', 'C'], [['t', 't', 'f', 'f'], ['t', 'f', 't', 'f']], [0.3, 0.7, 0.6, 0.4]) print factor1 print factor2 newFactor = Factor.multiply(factor1, factor2) del factor1 del factor2 print newFactor newFactor.normalize() print newFactor del newFactor anotherFactor = Factor(['A','B','C'], [['t','t','t','t','f','f','f','f'], ['t','t','f','f','t','t','f','f'], ['t','f','t','f','t','f','t','f']], [0.03,0.07,0.54,0.36,0.06,0.14,0.48,0.32]) anotherFactor.sumout('B') print anotherFactor # example from slide 75 factorA = Factor(['A'],[['t','f']], [0.3, 0.7]) factorCA = Factor(['A','C'],[['t','t','f','f'],['t','f','t','f']],[0.8, 0.2, 0.15, 0.85]) factorGC = Factor(['C', 'G'],[['t','t','f','f'],['t','f','t','f']],[1.0, 0.0, 0.2, 0.8]) factorLG = Factor(['G', 'L'],[['t','t','f','f'],['t','f','t','f']],[0.7, 0.3, 0.2, 0.8]) factorStrueL = Factor(['L','S'],[['t','t','f','f'],['t','f','t','f']],[0.9,0.1,0.3,0.7]) resultFactor = Factor.inference([factorA,factorCA,factorGC,factorLG,factorStrueL],['S'],['L','G','C','A'],[]) print resultFactor