#model = openpnl.pnlExCreateKjaerulfsBNet() pArHMM = openpnl.CDBN_Create(model) pInfEng = openpnl.C1_5SliceJtreeInfEngine_Create(pArHMM) nTimeSlices = 5 # set up evidence ... pEvidences = openpnl.newCEvidences(nTimeSlices) for i in range(0,nTimeSlices): ev = openpnl.mkEvidence( pArHMM, [1], [1.0] ); openpnl.assignEvidence( pEvidences, ev, i ) pInfEng.DefineProcedure(openpnl.ptSmoothing, nTimeSlices) pInfEng.EnterEvidence(pEvidences, nTimeSlices) pInfEng.Smoothing() queryPrior = [0] #queryPrior = openpnl.intVector([0]) queryPriorSize = 1 slice_ = 0 pInfEng.MarginalNodes(queryPrior, queryPriorSize, slice_) pQueryJPD = pInfEng.GetQueryJPD(); mdl = pQueryJPD.GetModelDomain() mat = pQueryJPD.GetMatrix(openpnl.matTable) print openpnl.convertVector(mat.ConvertToDense().GetVector())
domain = list(parents) + [node] cCPD = openpnl.CTabularCPD.Create( pBNet.GetModelDomain() , openpnl.toConstIntVector(domain) ) cCPD.AllocMatrix( cpdvals, openpnl.matTable ) cCPD.NormalizeCPD() pBNet.AttachFactor(cCPD) # Set up the inference engine infEngine = openpnl.CPearlInfEngine.Create( pBNet ); # Problem 1 P(W|C=0) ev = openpnl.mkEvidence( pBNet, [0], [0] ) infEngine.EnterEvidence(ev) infEngine.pyMarginalNodes( [3], 0 ) infEngine.GetQueryJPD().Dump() m = openpnl.convertVector(infEngine.GetQueryJPD().GetMatrix(openpnl.matTable).ConvertToDense().GetVector()) index = np.arange(0,2,1) plt.figure() plt.bar(index, m) plt.title("Marginal of P(WetGrass|Cloudy=False)") plt.ylabel("P(WetGress = x)"); plt.xticks(index+0.5, ('WetGrass=False', "WetGrass=True")) # Problem 1 P(W|C=1) ev = openpnl.mkEvidence( pBNet, [0], [1] ) infEngine.EnterEvidence(ev) infEngine.pyMarginalNodes( [3], 0 ) infEngine.GetQueryJPD().Dump() m = openpnl.convertVector(infEngine.GetQueryJPD().GetMatrix(openpnl.matTable).ConvertToDense().GetVector()) plt.figure()
#!/usr/bin/env python import openpnl pWSBnet = openpnl.pnlExCreateWaterSprinklerBNet() pWSBnet.GetGraph().Dump() pEvidForWS = openpnl.mkEvidence(pWSBnet, [0], [1]) pNaiveInf = openpnl.CNaiveInfEngine.Create(pWSBnet) pNaiveInf.EnterEvidence(pEvidForWS) nodes = [1, 3] pNaiveInf.MarginalNodes(nodes) pMarg = pNaiveInf.GetQueryJPD() obsVls = openpnl.pConstValueVector() #print obsVls #pEvidForWS.GetObsNodesWithValues( openpnl.toIntVector(nodes), obsVls ) print openpnl.convertVector( pMarg.GetMatrix(openpnl.matTable).ConvertToDense().GetVector())
#!/usr/bin/env python import openpnl pWSBnet = openpnl.pnlExCreateWaterSprinklerBNet() pWSBnet.GetGraph().Dump() pEvidForWS = openpnl.mkEvidence(pWSBnet, [0], [1]) pNaiveInf = openpnl.CNaiveInfEngine.Create(pWSBnet) pNaiveInf.EnterEvidence(pEvidForWS) nodes = [1, 3] pNaiveInf.MarginalNodes(nodes) pMarg = pNaiveInf.GetQueryJPD() obsVls = openpnl.pConstValueVector() # print obsVls # pEvidForWS.GetObsNodesWithValues( openpnl.toIntVector(nodes), obsVls ) print openpnl.convertVector(pMarg.GetMatrix(openpnl.matTable).ConvertToDense().GetVector())
# generate random slices print " *** SET UP RANDOM SLICES **" nTimeSeries = 500 nSlices = np.random.randint(3, 20, nTimeSeries) print nSlices print " *** GENERATE SAMPLES *** " evidencesOut = pArHMM.GenerateSamples2(nSlices) pDBN = openpnl.CDBN.Create(openpnl.pnlExCreateRndArHMM()) print evidencesOut print pDBN print " *** LEARNING *** " pLearn = openpnl.CEMLearningEngineDBN.Create(pDBN) pLearn.SetData(evidencesOut) pLearn.Learn() print " *** model before learning ... " for i in range(0, 4): pCPD1 = pArHMM.GetFactor(i) pMat = pCPD1.GetMatrix(openpnl.matTable) cpd = openpnl.convertVector(pMat.ConvertToDense().GetVector()) print cpd print " *** model after learning ... " for i in range(0, 4): pCPD2 = pDBN.GetFactor(i) pMat = pCPD2.GetMatrix(openpnl.matTable) cpd = openpnl.convertVector(pMat.ConvertToDense().GetVector()) print cpd
nTimeSeries = 500 nSlices = np.random.randint(3,20,nTimeSeries); print nSlices print " *** GENERATE SAMPLES *** " evidencesOut = pArHMM.GenerateSamples2( nSlices ); pDBN = openpnl.CDBN.Create(openpnl.pnlExCreateRndArHMM()); print evidencesOut print pDBN print " *** LEARNING *** " pLearn = openpnl.CEMLearningEngineDBN.Create( pDBN ); pLearn.SetData(evidencesOut) pLearn.Learn() print " *** model before learning ... " for i in range(0,4): pCPD1 = pArHMM.GetFactor(i) pMat = pCPD1.GetMatrix(openpnl.matTable) cpd = openpnl.convertVector(pMat.ConvertToDense().GetVector()) print cpd print " *** model after learning ... " for i in range(0,4): pCPD2 = pDBN.GetFactor(i) pMat = pCPD2.GetMatrix(openpnl.matTable) cpd = openpnl.convertVector(pMat.ConvertToDense().GetVector()) print cpd