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

import numpy as np

# Definimos los estados posibles del clima:
estados = ["Soleado", "Nublado", "Lluvioso"]

# A continuación, creamos la matriz de transición, que representa las probabilidades de cambio de un estado a otro:
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"
]

# Establecemos el estado inicial y el número de días para los cuales queremos predecir el clima:
estado_inicial = "Soleado"
numero_dias = 10

# Para facilitar la conversión entre el nombre del estado y su índice en la matriz, definimos una función:
# es decir Definimos una función para obtener el índice de un estado dado:
def obtener_indice_estado(estado):
    return estados.index(estado)

# Ahora, creamos la función principal que realizará la predicción del clima:
# Esta función genera el pronóstico.
def predecir_clima(estado_inicial, numero_dias):
    estado_actual = estado_inicial
    # Comienza guardando el primer día.
    pronostico = [estado_actual]
    for _ in range(numero_dias - 1):
        # Obtener el índice del estado actual para acceder a la matriz de transición        indice_actual = obtener_indice_estado(estado_actual)
        # Obtener las probabilidades de transición para el estado actual        probabilidades = matriz_transicion[indice_actual]
        # Elegir el siguiente estado basado en las probabilidades        siguiente_estado = np.random.choice
        indice_actual = obtener_indice_estado(estado_actual)
        probabilidades = matriz_transicion[indice_actual]
        # Aquí ocurre la simulación. Se elige el siguiente estado de forma aleatoria según las probabilidades de transición.
        siguiente_estado = np.random.choice(
            estados,
            p=probabilidades
        )
        # se Agregar al pronóstico
        pronostico.append(siguiente_estado)
        # El siguiente estado se convierte en el actual para la próxima iteración
        estado_actual = siguiente_estado
    return pronostico

# Finalmente, ejecutamos la función y mostramos el pronóstico:
# Genera el pronóstico completo. Se simula el clima para cada día, y se almacena en la lista 'pronostico'.
pronostico = predecir_clima(estado_inicial, numero_dias)
print("*" * 50)
print(" PREDICCION DEL CLIMA - CADENA DE MARKOV")
print("*" * 50)
print(f" Estado inicial: {estado_inicial}")
print(f" Días a predecir: {numero_dias}\n")
print(" Pronóstico para los próximos dias:")
print("*" * 50)
# Mostramos cada día con su predicción. enumerate() agrega el número de día. start=1 hace que el conteo comience en 1 en lugar de 0.
for dies, estado in enumerate(pronostico, start=1):
    print(f"Día {dies}: {estado}")