fendy07/karyawan-resign
In the repository project regarding employee resignation prediction using ensemble learning and tree-based machine learning models with FastAPI.
Prediksi Karyawan Resign
Proyek ini adalah aplikasi machine learning untuk memprediksi kemungkinan karyawan resign berdasarkan data HR. Model yang digunakan adalah Decision Tree dan Random Forest, dilatih menggunakan dataset Dataset_HR.csv. Aplikasi di-deploy menggunakan FastAPI sebagai backend API dan Gradio sebagai frontend UI. Selain itu, mendukung deployment dengan Docker untuk kemudahan skalabilitas.
Deskripsi
- Fitur Utama:
- Prediksi resign karyawan berdasarkan input:
tingkat kepuasan,lama bekerja,kecelakaan kerja,gaji, danjam kerja per bulan. - Model: Random Forest (default) atau Decision Tree.
- API Endpoint:
/predictuntuk prediksi via JSON. - UI: Gradio di
/gradiountuk input interaktif.
- Prediksi resign karyawan berdasarkan input:
- Dataset: Berdasarkan
Dataset_HR.csv(tidak disertakan di repo ini; asumsikan Anda punya). - Bahasa: Python 3.10+.
Persyaratan
-
Python 3.10 atau lebih tinggi.
-
Dependensi (lihat
requirements.txt):fastapi uvicorn gradio joblib pandas numpy scikit-learn -
Docker (untuk deployment containerized).
Instalasi
-
Clone repository (jika ada repo; atau buat folder project).
-
Instal dependensi:
pip install -r requirements.txt
-
Pastikan folder
models/berisi:random_forest_model.joblibscaler.joblib
(Dihasilkan daritrain_model.py).
Cara Menjalankan Lokal
-
Jalankan training model (opsional, jika belum ada model):
python train_model.py
-
Jalankan aplikasi:
uvicorn app:app --reload
- Akses API:
http://localhost:8000/docs(Swagger UI untuk tes endpoint/predict). - Akses UI:
http://localhost:8000/gradio(Gradio interface).
- Akses API:
Contoh Penggunaan API
Kirim POST request ke /predict dengan JSON body:
{
"tingkat_kepuasan": 0.5,
"lama_bekerja": 3,
"kecelakaan_kerja": 0,
"gaji": 1,
"jam_kerja_perbulan": 200
}Respons: {"prediction": "ya"} atau "tidak".
Contoh Penggunaan UI Gradio
- Buka
http://localhost:8000/gradio. - Masukkan nilai via slider/number/radio/dropdown.
- Klik "Submit" untuk lihat prediksi.
Deployment dengan Docker
-
Build image:
docker build -t prediksi-resign-app . -
Run container:
docker run -p 8000:8000 prediksi-resign-app
-
Akses seperti lokal:
http://localhost:8000/gradio.
Gunakan Docker Compose jika perlu (lihat docker-compose.yml jika dibuat).
Struktur Folder
project/
├── app.py # FastAPI + Gradio app
├── train_model.py # Script training model
├── models/ # Folder model dan scaler
│ ├── random_forest_model.joblib
│ └── scaler.joblib
├── requirements.txt # Dependensi
├── Dockerfile # Untuk Docker build
└── README.md # Dokumentasi ini
Catatan
- Model Alternatif: Ganti ke Decision Tree di
app.pyjika diinginkan (gunakanpickleuntuk load.pkl). - Error Handling: Pastikan input valid; app punya try-except dasar.
- Improvement: Tambah autentikasi untuk production, atau integrasi database untuk data real-time.
- Kontribusi: Fork repo dan submit PR jika ada perbaikan.
Jika ada pertanyaan, hubungi pengguna repositori ini via email ke hendriyantofendy07@gmail.com. Terima kasih!