Beş farklı sağlık durumu için makine öğrenmesi modellerini Tkinter arayüzünde birleştiren BTK hackathon prototipi
Türkçe · English
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.
| 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.
- 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ş
.pklmodel 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ı
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]
PatientIDveDoctorInChargekolonları çıkarılır.- Hedef kolon
Diagnosisolarak seçilir. - Veri
%80eğitim ve%20test olarak ayrılır. - Random Forest modeli eğitilir.
- Accuracy ve classification report hesaplanır.
- Model
alzheimers_model.pklolarak kaydedilir.
- 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.
- 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.pklolarak kaydedilir.
patientidkolonu çı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.
- Kategorik kolonlar LabelEncoder ile sayısallaştırılır.
PatientID,DiagnosisveDoctorInChargeeğ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.
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
git clone https://github.com/BurakKocDev/HealthPredictionSystem.git
cd HealthPredictionSystempython -m venv .venvWindows:
.venv\Scripts\activatemacOS / Linux:
source .venv/bin/activatepip install pandas numpy scikit-learn xgboost joblibTkinter birçok Python masaüstü kurulumuyla birlikte gelir. Sistemde bulunmuyorsa işletim sisteminize uygun Tk paketinin ayrıca kurulması gerekebilir.
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.pyAlternatif 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 scriptleri veri dosyalarını çalışma dizininde arar. Örneğin Alzheimer modelini yeniden eğitmek için:
cd Datasets
python ../Code/alzheimers.pyOluş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.
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
Targetkullanıcı girdisi olarak da listelenir. - Asthma formunda eğitim sırasında çıkarılan
DiagnosisveDoctor in Chargealanları 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.
- Her model için ön işleme ve sınıflandırıcıyı tek bir
Pipelineiç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
pathlibkullanmak - Bağımlılıkları
requirements.txtdosyasına eklemek - Model ve veri sürümlerini belgelemek
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.
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.