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!

1
resposta

Faça como eu fiz: utilizando cadeias de Markov

Segui a mesma lógica do vídeo, aplicando Cadeia de Markov para prever o clima em 10 dias, com os estados "Ensolarado", "Nublado" e "Chuvoso". Mudei a matriz de transição, deixando o clima mais instável (por exemplo, reduzi a chance de "Ensolarado" se manter, de 0.8 para 0.6) e alterei o estado inicial para "Nublado". Cada linha da matriz ainda soma 1. A função predict_weather usa np.random.choice para sortear o próximo estado com base nas probabilidades do estado atual, repetindo isso por 10 dias.

import numpy as np

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

# Matriz de transição de estados
# As probabilidades em cada linha somam 1
transition_matrix = [
    [0.6, 0.3, 0.1],    # Transições a partir de "Ensolarado"
    [0.3, 0.4, 0.3],    # Transições a partir de "Nublado"
    [0.15, 0.35, 0.5]   # Transições a partir de "Chuvoso"
]

# Estado inicial
initial_state = "Nublado"

# Número de dias a prever
num_days = 10

# Função para encontrar o índice de um estado
def get_state_index(state):
    return states.index(state)

# Função para prever o clima para os próximos dias
def predict_weather(initial_state, num_days):
    current_state = initial_state
    forecast = [current_state]

    for _ in range(num_days - 1):
        current_index = get_state_index(current_state)
        next_state = np.random.choice(
            states,
            p=transition_matrix[current_index]
        )
        forecast.append(next_state)
        current_state = next_state

    return forecast

# Realizar a previsão
forecast = predict_weather(initial_state, num_days)

# Exibir a previsão
print(f"Estado inicial: {initial_state}")
print("Previsão para os próximos dias:")
for day, state in enumerate(forecast, start=1):
    print(f"Dia {day}: {state}")
1 resposta

Oi, Everton. Tudo bem com você?

Obrigado por compartilhar sua implementação da atividade sobre cadeias de Markov. Analisei o código e não encontrei inconsistências em relação à proposta apresentada. Você manteve a lógica do exemplo, adaptando a matriz de transição para representar um cenário climático mais instável e alterando o estado inicial para "Nublado". Essas modificações são válidas e mostram que você compreendeu como as probabilidades de transição influenciam o comportamento do modelo ao longo do tempo.

Uma sugestão para expandir esse exercício seria executar a simulação diversas vezes e comparar os resultados obtidos. Como o próximo estado é escolhido por meio de np.random.choice, cada execução pode gerar uma sequência diferente de climas. Outra possibilidade é utilizar np.random.seed() para tornar os resultados reproduzíveis durante os testes, facilitando comparações entre diferentes matrizes de transição ou estados iniciais.

Na sua opinião, como a previsão mudaria se a probabilidade de permanência do estado "Chuvoso" fosse aumentada para um valor ainda maior, como 0.8, mantendo as demais probabilidades ajustadas para somarem 1?

Parabéns pela atividade e por compartilhar sua solução com a comunidade. Continue praticando e trazendo suas implementações. O fórum permanece à disposição sempre que precisar.

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