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

class BaseDeConocimiento:
def init(self):
self.hechos = set()
self.reglas = []

def agregar_hecho(self, hecho):
    self.hechos.add(hecho)

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

class SistemaExperto:
def init(self, base_conocimiento):
self.base = base_conocimiento
self.diagnosticos = []

def inferir(self):
    cambios = True
    while cambios:
        cambios = False
        for regla in self.base.reglas:
            if all(cond in self.base.hechos for cond in regla["condiciones"]):
                conclusion = regla["conclusion"]
                if conclusion not in self.base.hechos:
                    self.base.agregar_hecho(conclusion)
                    self.diagnosticos.append(conclusion)
                    cambios = True
    return self.diagnosticos

Crear base de conocimiento
base = BaseDeConocimiento()

Hechos reportados por el paciente
base.agregar_hecho("fiebre alta")
base.agregar_hecho("tos")
base.agregar_hecho("dificultad para respirar")

Reglas médicas
base.agregar_regla(["fiebre alta", "tos"], "infección respiratoria")
base.agregar_regla(["infección respiratoria", "dificultad para respirar"], "neumonía")

Crear sistema experto
sistema = SistemaExperto(base)

Inferir diagnóstico
diagnosticos = sistema.inferir()

print("Diagnósticos inferidos:")
for d in diagnosticos:
print(f"- {d}")

1 respuesta

Hola Juan, espero que estés bien

¡Qué bueno que estás trabajando en la construcción de un sistema experto! Tu código parece estar bien estructurado y sigue los pasos necesarios para crear un sistema experto básico utilizando hechos y reglas.

Vamos a revisar tu implementación:

  1. Base de Conocimiento: Has creado correctamente la clase BaseDeConocimiento que almacena hechos y reglas. Los métodos agregar_hecho y agregar_regla permiten añadir información a la base de conocimiento.

  2. Sistema Experto: La clase SistemaExperto recibe la base de conocimiento y utiliza un mecanismo de inferencia para deducir diagnósticos. El método inferir aplica las reglas de manera iterativa hasta que no se puedan hacer más inferencias, lo cual es un enfoque común en sistemas expertos.

  3. Prueba del Sistema: Has agregado hechos y reglas relevantes para el diagnóstico de condiciones respiratorias. Según tu implementación, el sistema debería inferir que el paciente tiene una "infección respiratoria" y, posteriormente, "neumonía", dado que todos los hechos necesarios están presentes.

Un ejemplo práctico de cómo tu sistema funciona sería:

  • El paciente reporta "fiebre alta" y "tos". Según la regla, esto lleva a una "infección respiratoria".
  • Luego, al tener "infección respiratoria" y "dificultad para respirar", el sistema concluye que podría ser "neumonía".

Si tu sistema no está funcionando como esperas, verifica que todos los hechos y reglas estén correctamente definidos y que no haya errores tipográficos. Además, asegúrate de que el método inferir esté correctamente implementado para recorrer todas las reglas y agregar conclusiones a los hechos.

Espero que esto te ayude a avanzar con tu proyecto. ¡Espero haber ayudado y buenos estudios!