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

[Projeto] Faça como eu fiz: utilizando cadeias de Markov

import numpy as np
from random import choices

# Definição dos estados do clima
states = ["Ensolarado", "Nublado", "Chuvoso"]

# Matriz de transição
transition_matrix = np.array([
    [0.8, 0.15, 0.05],  # Ensolarado
    [0.2, 0.6, 0.2],    # Nublado
    [0.25, 0.25, 0.5]   # Chuvoso
])

# Estado inicial
initial_state = "Ensolarado"

# Número de dias a prever
num_days = 10


def prever_clima(initial_state, states, transition_matrix, num_days):
    clima = [initial_state]

    estado_atual = initial_state

    for _ in range(num_days):
        indice_atual = states.index(estado_atual)

        probabilidades = transition_matrix[indice_atual]

        proximo_estado = choices(
            population=states,
            weights=probabilidades,
            k=1
        )[0]

        clima.append(proximo_estado)

        estado_atual = proximo_estado

    return clima


previsao = prever_clima(
    initial_state,
    states,
    transition_matrix,
    num_days
)

print("Previsão do clima:")
for dia, estado in enumerate(previsao):
    print(f"Dia {dia}: {estado}")

Didáticamente para aprendizado fica bem legal essa cadeiad e markov, mas acho que o truque mesmo para uma aplicação real estaria em saber montar a tabela de estados e atribuir as probabilidades com base em alguma contagem de transições de estados para ser útil. Um agente poderia usar pra prever taxa de sucesso de atendimento num chatbot por exemplo baseado nos caminhos de interação.

2 respostas
solução!

Olá, Marcelo! Como vai?

Parabéns pela realização das atividades!

Você apresentou um código bem organizado, demonstrou domínio na implementação de uma cadeia de Markov e aplicou corretamente a matriz de transição com probabilidades. Além disso, conseguiu tornar o exemplo didático e prático, o que facilita muito o aprendizado.

É importante perceber que você conseguiu mostrar como a lógica probabilística pode ser aplicada em simulações reais, seja para prever o clima ou até mesmo em cenários de atendimento automatizado.

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

  • Coleta de dados reais: usar registros históricos para calcular probabilidades de transição.
  • Visualização: representar os estados e transições em gráficos para facilitar a análise.
  • Generalização: criar funções que permitam aplicar o modelo em diferentes contextos além do clima.

Ah uma pergunta: O que você acha mais interessante explorar com cadeias de Markov, simulações de fenômenos naturais ou aplicações em sistemas inteligentes como chatbots?

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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

Obrigado pelo feedback Daniel.
Previsão de clima não parece ser algo útil, exceto academicamente, isso estaria em qualquer celular hoje em dia. Um chatbot ou uma trilha de agentes parece ser mais interessante, por exemplo, uma sequencia de ações disparadas a partir de uma interação e caminho como tools x, y, z no caminho com maior frequencia e assim otimizar algum processo.

Penso, que um topico de aula onde fosse apresentando um exemplo de tabela de transição dinâmica e não fixa seria de grande valor ao curso.