def main(): startStateProbabilities = {"A" : 0.25, "B" : 0.4, "C" : 0.35} markovChain = MarkovChain() markovChain.addState("A", {"A" : 0.1, "B" : 0.8, "C" : 0.1}) markovChain.addState("B", {"A" : 0.1, "B" : 0.1, "C" : 0.8}) markovChain.addState("C", {"A" : 0.8, "B" : 0.1, "C" : 0.1}) markovChain.setStartStateProbabilities(startStateProbabilities) print markovChain for i in range(0, 10): print markovChain.generateData(30) f = open("my_new_pickle.pickle", 'w') pickle.dump(markovChain, f) f.close()
def buildMarkovChain(counts): markovChain = MarkovChain() print "Counts: " + str(counts) for origin in counts.keys(): # Get sum of outgoing edges from current origin to determine denominator of probability calculation totalOutSum = 0 for count in counts[origin].values(): totalOutSum += count # Calculate transition probabilities from current origin transitionProbabilities = {} for destination, count in counts[origin].iteritems(): transitionProbabilities[destination] = count / float(totalOutSum) markovChain.addState(origin, transitionProbabilities) print "Built Markov chain:\n" + str(markovChain) return markovChain