Prediksi Diabetes
A Machine Learning-based diabetes risk prediction website using 5 key health indicators. This project integrates the Scikit-Learn model with a FastAPI backend and a modern React frontend.
Prediksi Diabetes Fullstack App
Aplikasi web fullstack untuk melakukan prediksi risiko diabetes berbasis Machine Learning menggunakan 5 indikator kesehatan utama. Proyek ini mengintegrasikan model Scikit-Learn dengan backend FastAPI dan frontend React modern.
DISCLAIMER: Aplikasi ini adalah alat bantu komputasi dan bukan pengganti diagnosa medis profesional. Hasil prediksi hanya untuk tujuan edukasi dan screening awal.
Halaman Utama
Halaman Perhitungan & Hasil
š Fitur Utama
- Prediksi Real-time: Menggunakan model Machine Learning (Random Forest/Logistic Regression - sesuaikan dengan model training Anda) yang telah dilatih untuk memberikan hasil instan beserta tingkat kepercayaan (confidence score).
- Secure Authentication: Sistem login dan register pengguna menggunakan JWT (JSON Web Tokens) dan hashing password (Bcrypt).
- Riwayat Prediksi: Menyimpan log hasil prediksi pengguna ke dalam database untuk pemantauan tren kesehatan pribadi.
- Manajemen Data: Pengguna dapat melihat dan menghapus riwayat prediksi mereka sendiri.
- Responsive UI: Antarmuka modern yang dibangun dengan React + Tailwind CSS.
š Teknologi yang Digunakan
Backend (API)
- Language: Python 3.10+
- Framework: FastAPI
- ML Libraries: Scikit-Learn, Pandas, NumPy, Joblib
- Database ORM: SQLAlchemy
- Authentication: Python-Jose (JWT), Passlib (Bcrypt)
Frontend (Client)
- Framework: React 19 (via Vite)
- Styling: Tailwind CSS
- HTTP Client: Axios
- Routing: React Router DOM
š Struktur Project
.
āāā backend/ # Kode sumber API (FastAPI)
ā āāā models/ # File model .joblib dan scaler
ā āāā main.py # Entry point aplikasi
ā āāā diabetes_app.db # SQLite Database (jika mode lokal)
ā āāā requirements.txt # Daftar dependensi Python
āāā frontend/ # Kode sumber Antarmuka (React)
ā āāā src/ # Komponen dan Logika React
ā āāā package.json # Dependensi Node.js
āāā ml_training/ # Notebook dan script training model
š Prasyarat & Instalasi
Pastikan Anda telah menginstal:
- Python 3.10 atau lebih baru
- Node.js 18 atau lebih baru
- Git
1. Setup Backend
Masuk ke direktori backend dan buat virtual environment:
cd backend
python -m venv venv
# Windows
venv\Scripts\activate
# Linux/Mac
source venv/bin/activate
Instal dependensi:
pip install -r requirements.txt
Buat file .env di dalam folder backend/ dan isi konfigurasi berikut:
SECRET_KEY=rahasia_super_aman_ganti_ini
ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=30
# Ganti user:password@host/dbname jika menggunakan MySQL/PostgreSQL
# Jika kosong atau tidak ada, default menggunakan SQLite
DATABASE_URL=sqlite:///./diabetes_app.db
MODEL_PATH=./models/diabetes_model_5_fitur.joblib
SCALER_PATH=./models/diabetes_scaler_5_fitur.joblib
Jalankan server backend:
# Menjalankan server pada port 8000
python main.py
2. Setup Frontend
Buka terminal baru, masuk ke direktori frontend:
cd frontend
# Instal dependensi Node.js:
npm install
# Jalankan server development:
npm run dev
Akses aplikasi di browser melalui URL yang muncul (biasanya http://localhost:5173).
Setup via Docker
Jalankan perintah di directory PredikriDiabetes/
docker compose up --build
Cara Penggunaan
- 1. Registrasi: Buat akun baru pada halaman Sign Up.
- 2. Login: Masuk menggunakan username dan password yang telah dibuat.
- 3. Prediksi: _ Masuk ke menu Dashboard/Predict. _ Isi data kesehatan: Kehamilan (Pregnancies), Glukosa, Tekanan Darah, BMI, dan Usia. * Klik tombol "Prediksi".
- 4. Lihat Hasil: Sistem akan menampilkan apakah Anda berisiko Diabetes atau tidak beserta skor keyakinannya.
- 5.History: Lihat riwayat prediksi Anda di halaman Profile/History.
š¤ Kontribusi
Kontribusi sangat diterima! Silakan ikuti langkah berikut:
-
- Fork repository ini.
-
- Buat branch fitur baru (git checkout -b fitur-keren).
-
- Commit perubahan Anda (git commit -m 'Menambahkan fitur keren').
-
- Push ke branch tersebut (git push origin fitur-keren).
-
- Buat Pull Request.
š Lisensi
Didistribusikan di bawah Lisensi MIT. Lihat file LICENSE untuk informasi lebih lanjut.