Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
0
respuestas

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

De acuerdo a lo solicitado, la solución a plantear sería:

import numpy as np

==========================================================

PREDICCIÓN DEL CLIMA UTILIZANDO CADENAS DE MARKOV

==========================================================

Paso 1: Definir los estados posibles del clima

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

Paso 2: Definir la matriz de transición

Cada fila representa el estado actual

Cada columna representa el siguiente estado

La suma de cada fila debe ser igual a 1

matriz_transicion = np.array([
[0.80, 0.15, 0.05], # Desde Soleado
[0.20, 0.60, 0.20], # Desde Nublado
[0.25, 0.25, 0.50] # Desde Lluvioso
])

Verificar que las probabilidades sean válidas

for fila in matriz_transicion:
assert np.isclose(fila.sum(), 1), "Las probabilidades de cada fila deben sumar 1."

==========================================================

Función para obtener el índice de un estado

==========================================================

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

==========================================================

Función que implementa la Cadena de Markov

==========================================================

def predecir_clima(estado_inicial, dias):
"""
Predice el clima utilizando una Cadena de Markov.

Parámetros:
    estado_inicial (str): Estado desde donde inicia la predicción.
    dias (int): Número de días a pronosticar.

Retorna:
    list: Lista con la predicción del clima.
"""

estado_actual = estado_inicial
pronostico = [estado_actual]

for _ in range(dias - 1):

    indice = obtener_indice_estado(estado_actual)

    siguiente_estado = np.random.choice(
        estados,
        p=matriz_transicion[indice]
    )

    pronostico.append(siguiente_estado)
    estado_actual = siguiente_estado

return pronostico

==========================================================

Paso 3: Ejecutar el modelo

==========================================================

estado_inicial = "Soleado"
dias = 10

resultado = predecir_clima(estado_inicial, dias)

print("=" * 45)
print(" PREDICCIÓN DEL CLIMA CON CADENA DE MARKOV")
print("=" * 45)
print(f"Estado inicial: {estado_inicial}\n")

for dia, clima in enumerate(resultado, start=1):
print(f"Día {dia}: {clima}")
**
Explicación de la solución**

Esta implementación utiliza una Cadena de Markov, un modelo probabilístico que asume que el estado futuro depende únicamente del estado actual y no de los estados anteriores.

En el programa se definieron tres estados climáticos: Soleado, Nublado y Lluvioso. Luego se creó una matriz de transición, donde cada fila representa el estado actual y cada columna la probabilidad de pasar a otro estado al día siguiente. La suma de las probabilidades de cada fila es igual a 1, lo que garantiza que la matriz sea válida.

La función predecir_clima() recibe un estado inicial y el número de días que se desea pronosticar. En cada iteración utiliza numpy.random.choice() para seleccionar aleatoriamente el siguiente estado según las probabilidades de la matriz de transición. El proceso se repite hasta completar el número de días solicitado.

Por ejemplo, si el estado inicial es "Soleado", el modelo tiene un 80 % de probabilidad de que el siguiente día también sea soleado, un 15 % de que sea nublado y un 5 % de que sea lluvioso. A medida que avanza la simulación, el estado del día actual determina las probabilidades del día siguiente, reproduciendo el comportamiento de una Cadena de Markov.

Conclusión

Las Cadenas de Markov son una herramienta útil para modelar procesos estocásticos en los que el estado futuro depende únicamente del estado presente. En este caso, permiten simular la evolución del clima utilizando probabilidades de transición basadas en datos históricos. Este enfoque es ampliamente utilizado no solo en predicción meteorológica, sino también en áreas como inteligencia artificial, economía, procesamiento de lenguaje natural y sistemas de recomendación. De esta manera, el programa implementado cumple con los requisitos de definir los estados, construir la matriz de transición, realizar la predicción para 10 días y mostrar los resultados obtenidos mediante Python y la biblioteca NumPy.