Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Health Prediction System

Beş farklı sağlık durumu için makine öğrenmesi modellerini Tkinter arayüzünde birleştiren BTK hackathon prototipi

Türkçe · English

Python Tkinter scikit-learn XGBoost Hackathon

Demo Videosu

Uygulama demosunu izle


Proje Hakkında

Health Prediction System, farklı tablosal sağlık veri setleriyle eğitilmiş beş ikili sınıflandırma modelini tek bir Tkinter masaüstü arayüzünde bir araya getiren bir BTK hackathon projesidir.

Kullanıcı arayüzünde bir sağlık kategorisi seçildiğinde, ilgili modelin beklediği özelliklere göre dinamik giriş alanları oluşturulur. Girilen değerler seçilen modele gönderilir ve modelin ikili sınıf çıktısı bir bilgi penceresinde gösterilir.

Bu proje eğitim ve prototipleme amacıyla geliştirilmiştir. Çıktılar tıbbi tanı, risk skoru, tedavi önerisi veya profesyonel sağlık değerlendirmesi değildir.


Desteklenen Model Prototipleri

Kategori Eğitim Scripti Model
Alzheimer Code/alzheimers.py Random Forest
Parkinson Code/parkinsons.py XGBoost
Heart Disease Code/heart_attack.py Linear SVM
Cardiovascular Disease Code/cardiyovasküler.py Random Forest
Asthma Code/asthma.py XGBoost

Eğitilmiş model dosyaları Models/ klasöründe saklanır ve ana uygulama tarafından yüklenir.


Temel Özellikler

  • Beş farklı sağlık sınıflandırma prototipi
  • Tkinter tabanlı masaüstü arayüz
  • Hastalık seçimine göre dinamik form oluşturma
  • Sayısal giriş alanları ve kategorik seçim menüleri
  • Boş veya seçilmemiş alanlar için temel giriş doğrulaması
  • Kaydedilmiş .pkl model dosyalarının yüklenmesi
  • Model çıktısının açılır bilgi penceresiyle gösterilmesi
  • Her model için ayrı eğitim scripti, veri seti ve model dosyası

Uygulama Akışı

flowchart LR
    A[Sağlık Kategorisini Seç] --> B[Dinamik Giriş Formu]
    B --> C[Girdileri Doğrula]
    C --> D[Seçilen Modeli Yükle]
    D --> E[Model Tahmini]
    E --> F[Tkinter Sonuç Penceresi]
Loading

Model Geliştirme Yaklaşımı

Alzheimer

  • PatientID ve DoctorInCharge kolonları çıkarılır.
  • Hedef kolon Diagnosis olarak seçilir.
  • Veri %80 eğitim ve %20 test olarak ayrılır.
  • Random Forest modeli eğitilir.
  • Accuracy ve classification report hesaplanır.
  • Model alzheimers_model.pkl olarak kaydedilir.

Parkinson

  • Kimlik ve doktor kolonları çıkarılır.
  • Kategorik kolonlara LabelEncoder uygulanır.
  • XGBoost sınıflandırıcısı eğitilir.
  • Accuracy ve confusion matrix hesaplanır.
  • Model ile label encoder nesneleri ayrı dosyalara kaydedilir.

Heart Disease

  • Seçilmiş 10 klinik özellik kullanılır.
  • StandardScaler ile eğitim ve test özellikleri ölçeklendirilir.
  • Doğrusal çekirdekli SVM eğitilir.
  • Accuracy ve classification report hesaplanır.
  • Model svm_heart_attack_model.pkl olarak kaydedilir.

Cardiovascular Disease

  • patientid kolonu çıkarılır.
  • Belirli sayısal kolonlar StandardScaler ile ölçeklendirilir.
  • Random Forest eğitilir.
  • Accuracy, Precision, Recall ve F1 hesaplanır.
  • Model ile scaler ayrı dosyalara kaydedilir.

Asthma

  • Kategorik kolonlar LabelEncoder ile sayısallaştırılır.
  • PatientID, Diagnosis ve DoctorInCharge eğitim girdilerinden çıkarılır.
  • Özellikler StandardScaler ile ölçeklendirilir.
  • XGBoost eğitilir.
  • Accuracy ve confusion matrix hesaplanır.
  • Model, label encoder ve scaler ayrı dosyalara kaydedilir.

Proje Yapısı

HealthPredictionSystem/
├── Code/
│   ├── Health_Prediction_System.py
│   ├── alzheimers.py
│   ├── asthma.py
│   ├── cardiyovasküler.py
│   ├── heart_attack.py
│   └── parkinsons.py
├── Datasets/
│   ├── Cardiovascular_Disease_Dataset.csv
│   ├── alzheimers_disease_data.csv
│   ├── asthma_disease_data.csv
│   ├── heart.csv
│   └── parkinsons_disease_data.csv
├── Models/
│   ├── alzheimers_model.pkl
│   ├── random_forest_cardiovascular_model.pkl
│   ├── svm_heart_attack_model.pkl
│   ├── xgb_asthma_model.pkl
│   └── xgb_parkinsons_model.pkl
└── README.md

Kurulum

1. Repository'yi klonlayın

git clone https://github.com/BurakKocDev/HealthPredictionSystem.git
cd HealthPredictionSystem

2. Sanal ortam oluşturun

python -m venv .venv

Windows:

.venv\Scripts\activate

macOS / Linux:

source .venv/bin/activate

3. Bağımlılıkları kurun

pip install pandas numpy scikit-learn xgboost joblib

Tkinter birçok Python masaüstü kurulumuyla birlikte gelir. Sistemde bulunmuyorsa işletim sisteminize uygun Tk paketinin ayrıca kurulması gerekebilir.


Uygulamayı Çalıştırma

Ana script model dosyalarını çalışma dizininde aradığı için mevcut repository yapısında en basit çalıştırma şekli:

cd Models
python ../Code/Health_Prediction_System.py

Alternatif olarak Code/Health_Prediction_System.py içindeki model yolları aşağıdaki gibi düzenlenebilir:

models = {
    "Alzheimer": "../Models/alzheimers_model.pkl",
    "Parkinson": "../Models/xgb_parkinsons_model.pkl",
    "Heart Disease": "../Models/svm_heart_attack_model.pkl",
    "Cardiovascular Disease": "../Models/random_forest_cardiovascular_model.pkl",
    "Asthma": "../Models/xgb_asthma_model.pkl",
}

Eğitim Scriptlerini Çalıştırma

Eğitim scriptleri veri dosyalarını çalışma dizininde arar. Örneğin Alzheimer modelini yeniden eğitmek için:

cd Datasets
python ../Code/alzheimers.py

Oluşan model dosyası çalışma dizinine kaydedilir. Daha düzenli bir yapı için veri ve model yollarının scriptlerde pathlib kullanılarak açıkça tanımlanması önerilir.


Bilinen Entegrasyon Notları

Mevcut hackathon sürümünde model eğitimi ve arayüz tahmini arasında tamamlanması gereken bazı noktalar bulunmaktadır:

  • Heart Disease modeli ölçeklendirilmiş veriyle eğitilmiştir ancak scaler dosyası kaydedilip arayüzde uygulanmamaktadır.
  • Asthma ve Cardiovascular Disease eğitimlerinde scaler kaydedilir fakat ana arayüz bu scaler nesnelerini yükleyip kullanmaz.
  • Parkinson için kaydedilen label encoder nesneleri ana arayüzde yüklenmez.
  • Cardiovascular formunda hedef olan Target kullanıcı girdisi olarak da listelenir.
  • Asthma formunda eğitim sırasında çıkarılan Diagnosis ve Doctor in Charge alanları kullanıcı girdileri arasında bulunur.
  • Model dosyaları Models/ klasöründe olmasına rağmen ana script yalnızca dosya adlarını kullanır.
  • Arayüz yalnızca ikili sınıf çıktısı gösterir; olasılık, güven aralığı veya model açıklaması sunmaz.

Bu nedenlerle mevcut sürüm, uçtan uca doğrulanmış bir tıbbi tahmin uygulamasından çok model eğitimi ile GUI entegrasyonunu gösteren bir hackathon prototipi olarak değerlendirilmelidir.


Geliştirme Önerileri

  • Her model için ön işleme ve sınıflandırıcıyı tek bir Pipeline içinde kaydetmek
  • Scaler ve encoder işlemlerini tahmin sırasında otomatik uygulamak
  • Hedef ve metadata kolonlarını kullanıcı formundan çıkarmak
  • Model giriş sırasını kaydedilmiş özellik listesiyle doğrulamak
  • Stratified split ve cross-validation kullanmak
  • Accuracy yanında Precision, Recall, F1, ROC-AUC ve confusion matrix raporlarını saklamak
  • Tahmin olasılığını ve model sınırlılıklarını arayüzde göstermek
  • Sabit dosya yolları yerine pathlib kullanmak
  • Bağımlılıkları requirements.txt dosyasına eklemek
  • Model ve veri sürümlerini belgelemek

Tıbbi Sorumluluk Reddi

Bu repository’deki modeller ve arayüz:

  • tıbbi cihaz değildir,
  • klinik olarak doğrulanmamıştır,
  • doktor değerlendirmesinin yerine geçmez,
  • teşhis veya tedavi amacıyla kullanılmamalıdır,
  • gerçek kişiler hakkında kesin sağlık kararı vermek için uygun değildir.

Sağlıkla ilgili endişelerde yetkili bir sağlık profesyoneline başvurulmalıdır.


Amaç

Health Prediction System; farklı veri setlerinden model eğitimi, model dosyalarının saklanması, dinamik masaüstü form üretimi ve temel tahmin entegrasyonunu tek bir hackathon projesinde göstermeyi amaçlar.

About

Tkinter-based multi-disease classification prototype combining Random Forest, SVM, and XGBoost models.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages