DDXPlus: A New Dataset For Automatic Medical Diagnosis
Paper β’ 2205.09148 β’ Published β’ 1
How to use Shadia-Sultana-Anonna/ai-medical-diagnosis-system with Scikit-learn:
from huggingface_hub import hf_hub_download
import joblib
model = joblib.load(
hf_hub_download("Shadia-Sultana-Anonna/ai-medical-diagnosis-system", "sklearn_model.joblib")
)
# only load pickle files from sources you trust
# read more about it here https://skops.readthedocs.io/en/stable/persistence.htmlA complete AI-powered medical diagnosis system that combines knowledge-based reasoning, probabilistic inference, search algorithms, and machine learning to diagnose diseases from symptoms.
Patient Input (Symptoms)
β
βΌ
βββββββββββββββββββββββββββββββββββ
β LAYER 1: KNOWLEDGE BASE β
β 41 diseases, 273+ symptoms β
β Semantic network (NetworkX) β
β Diagnostic rules (forward β
β chaining) β
βββββββββββββ¬ββββββββββββββββββββββ
βββββββββ΄βββββββββ
βΌ βΌ
ββββββββββββββββ ββββββββββββββββββ
β LAYER 2: β β LAYER 3: β
β BAYESIAN β β SEARCH β
β REASONING β β ALGORITHMS β
β β’ Naive Bayesβ β β’ A* Search β
β β’ Bayesian β β β’ Best-First β
β Network β β Search β
β (pgmpy) β β β
ββββββββ¬ββββββββ βββββββββ¬βββββββββ
ββββββ¬βββββββββββββ
βΌ
βββββββββββββββββββββββββββββββββββ
β LAYER 4: MACHINE LEARNING β
β β’ Decision Tree (explainable) β
β β’ Neural Network (MLP) β
β β’ Random Forest + Ensemble β
βββββββββββββ¬ββββββββββββββββββββββ
βΌ
βββββββββββββββββββββββββββββββββββ
β LAYER 5: FUSION ENGINE β
β Weighted ensemble of all β
β methods with configurable β
β weights β
βββββββββββββ¬ββββββββββββββββββββββ
βΌ
βββββββββββββββββββββββββββββββββββ
β LAYER 6: ETHICS β
β β’ Privacy Guard (HIPAA) β
β β’ Explainability Engine β
β β’ Accountability Logger β
βββββββββββββββββββββββββββββββββββ
| # | Module | Description | Technology |
|---|---|---|---|
| 1 | Knowledge Base | Disease-symptom database, semantic networks, diagnostic rules | NetworkX, HuggingFace Datasets |
| 2 | Probabilistic Reasoning | Bayes' Theorem + Bayesian Networks with exact inference | pgmpy, Variable Elimination |
| 3 | Search Algorithms | A* Search and Best-First Search on bipartite graph | heapq, NetworkX |
| 4 | Machine Learning | Decision Tree, Neural Network (MLP), Random Forest, Ensemble | scikit-learn |
| 5 | Evaluation | Accuracy, Precision, Recall, F1 β before vs after ML | scikit-learn metrics |
| 6 | Ethics Layer | Privacy, Explainability, Accountability | SHA-256, Audit Logs |
| 7 | Fusion Engine | Weighted combination of all methods | Configurable weights |
| 8 | Orchestrator | Unified interface tying all modules together | Python OOP |
| Method | Accuracy | Precision (wtd) | Recall (wtd) | F1 Score (wtd) |
|---|---|---|---|---|
| KB Symptom Matching | 0.9654 | 0.9681 | 0.9654 | 0.9652 |
| Naive Bayes | 0.9583 | 0.9602 | 0.9583 | 0.9586 |
| Random Forest | 0.9329 | 0.9348 | 0.9329 | 0.9327 |
| Neural Network (MLP) | 0.9217 | 0.9263 | 0.9217 | 0.9218 |
| Decision Tree | 0.4258 | 0.4376 | 0.4258 | 0.4263 |
ai_medical_diagnosis_system.ipynbβββ ai_medical_diagnosis_system.ipynb # Complete Colab notebook
βββ README.md # This file
βββ modules/
βββ __init__.py
βββ knowledge_base.py # Layer 1: KB + semantic network
βββ bayesian_reasoning.py # Layer 2: Naive Bayes + BN
βββ search_algorithms.py # Layer 3: A* + Best-First
βββ ml_models.py # Layer 4: DT + NN + RF + Ensemble
βββ evaluation.py # Layer 5: Metrics + comparison
βββ ethics_layer.py # Layer 6: Privacy + Explainability
βββ fusion_engine.py # Layer 7: Weighted fusion
βββ orchestrator.py # Layer 8: Main system
| Area | Current | Improvement |
|---|---|---|
| Dataset | Synthetic from KB (~5K samples) | Use real clinical data (MIMIC-IV, DDXPlus) |
| Diseases | 41 | Expand to 500+ with ICD-10 mapping |
| Symptoms | ~273 | Add lab results, vital signs, imaging |
| BN Structure | Naive Bayes (DiseaseβSymptoms) | Learn structure with constraint-based methods |
| ML Models | sklearn DT/MLP/RF | Try XGBoost, Transformers, domain-specific models |
| Fusion Weights | Fixed | Learn optimal weights via validation |
| Multi-label | Single disease | Support comorbidity detection |