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

Adapté un poco el código del profe para que no sea igual, la lógica sigue siendo la misma.

import numpy as np

estados = ["Soleado", "Nublado", "Lluvioso"]

matriz_transicion = [
    [0.50, 0.35, 0.15],  # Desde Soleado
    [0.30, 0.40, 0.30],  # Desde Nublado
    [0.25, 0.40, 0.35],  # Desde Lluvioso
]

estado_inicial = "Nublado"
numero_dias = 10

def obtener_indice(estado):
    return estados.index(estado)

def predecir_clima(estado_inicial, numero_dias):
    estado_actual = estado_inicial
    pronostico = [estado_actual]

    for _ in range(numero_dias - 1):
        indice_actual = obtener_indice(estado_actual)
        siguiente_estado = np.random.choice(
            estados,
            p=matriz_transicion[indice_actual]
        )
        pronostico.append(siguiente_estado)
        estado_actual = siguiente_estado

    return pronostico

pronostico = predecir_clima(estado_inicial, numero_dias)

print("=" * 40)
print("  PRONOSTICO DEL CLIMA - MONTEVIDEO")
print("=" * 40)
print(f"Estado inicial: {estado_inicial}\n")
for dia, estado in enumerate(pronostico, start=1):
    print(f"  Dia {dia:>2}: {estado}")
print("=" * 40)
1 respuesta

Hola Jairo, espero que estés bien

¡Tu implementación de las cadenas de Markov para predecir el clima se ve muy bien! Has adaptado el código de manera efectiva para que sea único, manteniendo la lógica central. Aquí tienes algunos puntos que podrían ayudarte a mejorar o verificar tu implementación:

  1. Verificación de la Matriz de Transición: Asegúrate de que cada fila de tu matriz de transición sume a 1. Esto es esencial para que las probabilidades sean correctas. En tu matriz, parece que todas las filas ya suman a 1, lo cual está perfecto.

  2. Revisión del Código: Tu función predecir_clima está correctamente configurada para iterar sobre los días y seleccionar el siguiente estado basado en las probabilidades definidas en la matriz de transición. Esto es exactamente lo que se espera en un modelo de cadena de Markov.

  3. Salida del Pronóstico: La forma en que estás imprimiendo el pronóstico es clara y fácil de seguir. Esto es excelente para entender cómo evoluciona el clima a lo largo de los días.

  4. Experimentación: Puedes experimentar cambiando el estado_inicial o la matriz_transicion para ver cómo afectan al pronóstico del clima. Esto podría darte una mejor comprensión de cómo las cadenas de Markov responden a diferentes condiciones iniciales y probabilidades.

  5. Validación Aleatoria: Dado que estás usando np.random.choice, los resultados pueden variar en cada ejecución. Si deseas resultados reproducibles para pruebas, podrías considerar establecer una semilla aleatoria con np.random.seed() antes de la simulación.

Espero que estos consejos te sean útiles. ¡Sigue adelante con tu aprendizaje en inteligencia artificial!

Espero haber ayudado y buenos estudios!