Skip to content

Rafael-dePaula/markov-chain-python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 

Repository files navigation

Markov-Chain

Definições

Suposição de Markov diz que desde que o estado atual seja conhecido os estados anteriores são irrelevantes para calcular o proximo estado.

A Cadeia de Markov é um processo estocástico onde dada uma sequencia de estados X1, X2, X3, ... de variáveis aleatórias, a probabilidade do estado Xn+1 pode ser calculada apenas baseada no estado Xn.

P(X_{n+1} = x | X_0, X_1, X_2 ... X_n) = P(X_{n+1} = x|X_n)

Ou seja para calcular um determinado estado Xn+1 na cadeia de markov basta que tenhamos o estado anterior (Xn) conhecido e conhecer as probabilidades de transição entre os estados dessa cadeia.

Exemplo Sol e Chuva

Para o codigo desse exemplo foi usada a biblioteca pomegranate

Para o exemplo Sol e Chuva temos que a probabilidade de um dia de sol ser sucedido por um dia chuva é de 10% e a probabilidade de um dia de chuva ser sucedido por um dia de sol é de 60%.

Com essas probabilidades é possivel definir o modelo de transição entre os estados:

Modelo de Transição

Sol Chuva
Sol 0.9 0.1
Chuva 0.6 0.4

Que no codigo é definido como:

modeloTransicao = ConditionalProbabilityTable([['sol', 'sol', 0.9],
                                      ['sol', 'chuva', 0.1],
                                      ['chuva', 'sol', 0.6],
                                      ['chuva', 'chuva', 0.4]], [estadoInicial])

Com essas possibilidades basta definir o Estado Inicial, que será o primeiro valor da cadeia. No codigo foi usado 50% de chance de ser sol e 50% de ser chuva.

estadoInicial = DiscreteDistribution({'sol': 0.5, 'chuva': 0.5})
Sol Chuva
0.5 0.5

Com essas informações é possivel criar uma cadeia de markov.

model = MarkovChain([d1, d2])

Amostra

Para criar uma amostra basta usar o metodo sample() e passar como parametro o tamanho da cadeia que deseja gerar.

model.sample(10)

Por exemplo com 10 amostras uma das possiveis cadeias geradas é:

Sol Chuva Chuva Sol Sol Sol Sol Sol Chuva Sol

About

Pequeno exemplo da cadeia de markov em python usando a biblioteca pomegranate.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages