Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Haz lo que hicimos en el aula: Utilizando cadenas de Markov

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)
1 respuesta

¡Hola Alberto!

Tu código para predecir el clima utilizando cadenas de Markov se ve bastante bien. Has definido correctamente los estados climáticos, la matriz de transición y el estado inicial. Además, la función predecir_clima parece estar implementada de manera adecuada para generar un pronóstico basado en las probabilidades de transición.

Aquí hay algunos puntos que podrías considerar para asegurarte de que tu implementación esté alineada con el ejercicio del aula:

  1. Verifica la Matriz de Transición: Asegúrate de que las filas de tu matriz de transición sumen 1. Esto es crucial para que las probabilidades sean válidas. En tu caso, parece que ya está correcto.

  2. Número de Horas: Estás prediciendo el clima por 24 horas. Si el ejercicio se refiere a días, podrías ajustar numero_horas para reflejar el número de días que deseas predecir.

  3. Salida del Pronóstico: Tu salida está bien estructurada y clara. Si deseas hacerla más detallada, podrías considerar agregar más información sobre las probabilidades de transición en cada paso, aunque esto no es necesario para cumplir con el ejercicio.

  4. Revisar Resultados: Dado que estás usando np.random.choice, cada ejecución del código puede dar resultados diferentes. Si deseas resultados reproducibles para pruebas, podrías establecer una semilla aleatoria con np.random.seed().

Por ejemplo, si quisieras predecir el clima para 5 días en lugar de 24 horas, podrías modificar numero_horas a 5, y ajustar la salida para reflejar "Días" en lugar de "Horas".

Espero que estos consejos te sean útiles. ¡Espero haber ayudado y buenos estudios!