import numpy as np
estados = ["Soleado", "Nublado", "Lluvioso"]
matriz_transicion = [
[0.8, 0.15, 0.05], # Transiciones desde "Soleado"
[0.2, 0.6, 0.2], # Transiciones desde "Nublado"
[0.25, 0.25, 0.5] # Transiciones desde "Lluvioso"
]
estado_inicial = "Soleado"
numero_horas = 24
def obtener_indice_estado(estado):
return estados.index(estado)
def predecir_clima(estado_inicial, numero_horas):
estado_actual = estado_inicial
pronostico = [estado_actual]
for _ in range(numero_horas - 1):
indice_actual = obtener_indice_estado(estado_actual)
probabilidades = matriz_transicion[indice_actual]
siguiente_estado = np.random.choice(
estados,
p=probabilidades
)
pronostico.append(siguiente_estado)
estado_actual = siguiente_estado
return pronostico
pronostico = predecir_clima(estado_inicial, numero_horas)
print("*" * 50)
print("️ PREDICCION DEL CLIMA - CADENA DE MARKOV️")
print("*" * 50)
print(f" Estado inicial: {estado_inicial}")
print(f"️ Días a predecir: {numero_horas}\n")
print(" Pronóstico para los próximos dias:")
print("*" * 50)
for hora, clima in enumerate(pronostico, start=1):
print(f"Hora {hora}: {clima}")
print("*" * 50)