示例#1
0
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)
示例#2
0
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']])
示例#3
0
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'))
示例#4
0
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']])
示例#5
0
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