Machine Learning Model for Heart Attack Risk Prediction
Prototype machine learning untuk decision support pada iHealth Edu yang memperkirakan risiko serangan jantung dari data pasien dan menyajikan hasilnya melalui Flask API.
Galeri Proyek

Gambaran Proyek
Saya mengembangkan project ini sebagai komponen machine learning decision support yang terintegrasi dengan website iHealth Edu dan digunakan oleh tenaga kesehatan. Pengembangan model menggunakan dataset Heart Attack Prediction in Indonesia oleh A. Panday dari Kaggle tahun 2025, yang terdiri dari 158.355 observasi dan 21 predictor.
Workflow mencakup data preparation, penyeimbangan kelas, perbandingan model, evaluasi, dan deployment inference. Random Forest dipilih karena menghasilkan accuracy dan ROC-AUC tertinggi, kemudian disimpan dan disajikan melalui Flask REST API yang di-deploy menggunakan Docker pada Ubuntu.
Kontribusi Saya
- Menyiapkan dataset dengan melakukan encoding pada lima fitur kategorikal, scaling predictor, membagi data secara stratified 80:20, dan menerapkan SMOTE hanya pada data training.
- Melatih dan membandingkan Random Forest, Linear SVM, K-Nearest Neighbors, dan Logistic Regression dengan hyperparameter tuning yang berfokus pada F1-score.
- Memilih Random Forest berdasarkan accuracy dan ROC-AUC, menyimpan model serta preprocessing artifacts menggunakan Joblib, dan membangun Flask REST API untuk inference.
- Melakukan deployment inference service menggunakan Docker pada Ubuntu dan mengintegrasikan hasil prediksi ke iHealth Edu untuk tenaga kesehatan.
Project ini memberi saya pengalaman membangun workflow machine learning mulai dari data preparation hingga terintegrasi dengan produk yang digunakan.
- Python
- Scikit-learn
- Pandas
- SMOTE
- Flask
- Docker
Cakupan Sistem
- 158.355 observasi
- 22 kolom
- 21 prediktor
- 5 fitur kategorikal
- Tidak ada missing value
- Stratified 80:20 split
- SMOTE hanya pada data training
| Model | Accuracy | Precision | Recall | F1-Score | ROC-AUC | Keterangan |
|---|---|---|---|---|---|---|
| Random Forest[Terpilih] | 71,93% | 64,12% | 68,15% | 0,6607 | 0,8015 | Model terpilih: accuracy (71,93%) dan ROC-AUC (0,8015) tertinggi |
| Logistic Regression | — | — | — | 0,6618 | — | F1 tertinggi dalam perbandingan: 0,6618 |
| K-Nearest Neighbors | — | — | 70,40% | — | — | Recall tertinggi dalam perbandingan: 70,40% |
| Linear SVM | — | — | — | — | — | Model perbandingan tanpa metrik tambahan |
Model terpilih: accuracy (71,93%) dan ROC-AUC (0,8015) tertinggi
F1 tertinggi dalam perbandingan: 0,6618
Recall tertinggi dalam perbandingan: 70,40%
Model perbandingan tanpa metrik tambahan
Random Forest dipilih karena menghasilkan accuracy dan ROC-AUC tertinggi dalam perbandingan yang didokumentasikan.
Prototype ini mendukung penilaian risiko dan tidak memberikan diagnosis klinis maupun menggantikan pertimbangan tenaga kesehatan.
- Joblib model dan preprocessing artifacts
- Flask REST API
- Risk class dan probabilitas
- Faktor pendukung
- Global feature importance
- Deployment Docker pada Ubuntu
- Integrasi iHealth Edu untuk tenaga kesehatan
