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: Construyendo un sistema experto

De acuerdo a lo solicitado y la sugerencia del instructor, el sistema basado en conocimiento a desarrollar será:

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

SISTEMA EXPERTO PARA DIAGNÓSTICO DE ENFERMEDADES RESPIRATORIAS

Basado en hechos, reglas e inferencia lógica

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

----------------------------------------------------------

Clase Base de Conocimiento

----------------------------------------------------------

class BaseDeConocimiento:

def __init__(self):
    self.hechos = []
    self.reglas = []

def agregar_hecho(self, hecho):
    if hecho not in self.hechos:
        self.hechos.append(hecho)

def agregar_regla(self, condiciones, conclusion):
    self.reglas.append((condiciones, conclusion))

----------------------------------------------------------

Clase Sistema Experto

----------------------------------------------------------

class SistemaExperto:

def __init__(self, base):
    self.base = base

def inferir(self):

    print("===== Iniciando proceso de inferencia =====\n")

    nuevos_hechos = True

    while nuevos_hechos:

        nuevos_hechos = False

        for condiciones, conclusion in self.base.reglas:

            # Verificar si todas las condiciones se cumplen
            if all(condicion in self.base.hechos for condicion in condiciones):

                if conclusion not in self.base.hechos:

                    self.base.agregar_hecho(conclusion)

                    print("Regla aplicada:")
                    print(f"SI {' Y '.join(condiciones)}")
                    print(f"ENTONCES {conclusion}\n")

                    nuevos_hechos = True

----------------------------------------------------------

Crear la Base de Conocimiento

----------------------------------------------------------

base = BaseDeConocimiento()

----------------------------------------------------------

Registrar los síntomas del paciente (Hechos)

----------------------------------------------------------

base.agregar_hecho("fiebre alta")
base.agregar_hecho("tos")
base.agregar_hecho("dificultad para respirar")

----------------------------------------------------------

Registrar las reglas del sistema

----------------------------------------------------------

base.agregar_regla(
["fiebre alta", "tos"],
"infección respiratoria"
)

base.agregar_regla(
["infección respiratoria", "dificultad para respirar"],
"neumonía"
)

Reglas adicionales

base.agregar_regla(
["tos"],
"irritación respiratoria"
)

base.agregar_regla(
["neumonía"],
"requiere atención médica inmediata"
)

----------------------------------------------------------

Ejecutar el Sistema Experto

----------------------------------------------------------

sistema = SistemaExperto(base)

sistema.inferir()

----------------------------------------------------------

Mostrar resultados

----------------------------------------------------------

print("=" * 50)
print("HECHOS Y DIAGNÓSTICOS OBTENIDOS")
print("=" * 50)

for hecho in base.hechos:
print(f"• {hecho}")

Salida esperada
===== Iniciando proceso de inferencia =====

Regla aplicada:
SI fiebre alta Y tos
ENTONCES infección respiratoria

Regla aplicada:
SI infección respiratoria Y dificultad para respirar
ENTONCES neumonía

Regla aplicada:
SI tos
ENTONCES irritación respiratoria

Regla aplicada:
SI neumonía
ENTONCES requiere atención médica inmediata

==================================================
HECHOS Y DIAGNÓSTICOS OBTENIDOS

• fiebre alta
• tos
• dificultad para respirar
• infección respiratoria
• neumonía
• irritación respiratoria
• requiere atención médica inmediata