Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
2
respostas

Faça como eu fiz: utilizando cadeias de Markov

Para esta atividade, implementei uma cadeia de Markov simples para prever o clima de uma cidade durante 10 dias. Os estados possíveis são Ensolarado, Nublado e Chuvoso.

A matriz de transição define a probabilidade de o clima mudar de um estado para outro no dia seguinte.

import numpy as np

# Estados possíveis do clima
estados = ["Ensolarado", "Nublado", "Chuvoso"]

# Matriz de transição
# Linhas: clima atual
# Colunas: próximo clima
matriz_transicao = np.array([
    [0.7, 0.2, 0.1],  # Ensolarado
    [0.3, 0.4, 0.3],  # Nublado
    [0.2, 0.3, 0.5]   # Chuvoso
])

# Estado inicial
estado_atual = 0  # Começando como Ensolarado

# Quantidade de dias para prever
dias = 10

print("Previsão do clima:")

for dia in range(1, dias + 1):
    estado_atual = np.random.choice(
        [0, 1, 2],
        p=matriz_transicao[estado_atual]
    )

    print(f"Dia {dia}: {estados[estado_atual]}")

Nesse exemplo, o sistema começa com o clima Ensolarado e usa a matriz de transição para prever o clima dos próximos 10 dias. A cada dia, o próximo clima é escolhido com base nas probabilidades definidas para o estado atual.

2 respostas
solução!

Olá, Estudante! Como vai?

Parabéns pela resolução da atividade!

Vi que você explorou a Cadeia de Markov para modelagem probabilística com Python, utilizou muito bem a matriz de transição para definir os estados e ainda compreendeu a importância da simulação estocástica para prever o comportamento do sistema ao longo do tempo.

Uma dica interessante para o futuro é calcular a distribuição estacionária da cadeia, ou seja, a probabilidade de longo prazo de cada estado. Assim:

from numpy.linalg import matrix_power

# Aproximação da distribuição estacionária
n_passos = 100
matriz_estacionaria = matrix_power(matriz_transicao, n_passos)
print("Distribuição estacionária aproximada:", matriz_estacionaria[0])

Isso mostra como o sistema tende a se estabilizar em determinadas probabilidades de clima após muitas transições.

Se quiser aprofundar ainda mais, algumas boas práticas são:

  • Visualizar os estados em gráficos: facilita a interpretação da evolução ao longo dos dias.
  • Explorar propriedades matemáticas: como ergodicidade e absorção em cadeias de Markov.
  • Testar diferentes matrizes de transição: para simular cidades com padrões climáticos distintos.

Ah, uma pergunta: você acha mais interessante expandir a cadeia de Markov para prever sistemas complexos como comportamento de usuários em sites ou prefere mantê-la aplicada a exemplos simples como o clima?

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Obrigado pelo feedback e pela dica.