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.