--- license: mit tags: - tabular-classification - employee-attrition - human-resources - scikit-learn --- # Employee Attrition Intelligence Model klasifikasi untuk memperkirakan apakah seorang karyawan termasuk kelas bertahan (`left=0`) atau keluar (`left=1`) berdasarkan fitur HR yang tersedia. ## Informasi proyek - **Pembuat:** Marcel Ong - **NIM:** 2025121043 - **Mata kuliah:** MN1135 — Business Data Science - **Jenis tugas:** Binary classification - **Algoritma:** Random Forest - **Dataset:** HR Analytics / HR_comma_sep.csv - **Target:** `left` (0 = bertahan, 1 = keluar) ## Dataset dan sumber Dataset berisi atribut pekerjaan karyawan, seperti kepuasan, evaluasi, jumlah proyek, jam kerja bulanan, masa kerja, kecelakaan kerja, promosi, departemen, dan tingkat gaji. Sumber dataset: [Kaggle HR Analytics](https://www.kaggle.com/ludobenistant/hr-analytics/data). ## Fitur input Model mengharapkan 17 fitur numerik yang sudah melalui encoding sesuai preprocessing saat pelatihan. Urutan kolom dijaga menggunakan `feature_names.joblib`. - `satisfaction_level` — `float64` - `last_evaluation` — `float64` - `number_project` — `int64` - `average_montly_hours` — `int64` - `time_spend_company` — `int64` - `Work_accident` — `int64` - `promotion_last_5years` — `int64` - `salary_encoded` — `int64` - `sales_RandD` — `int64` - `sales_accounting` — `int64` - `sales_hr` — `int64` - `sales_management` — `int64` - `sales_marketing` — `int64` - `sales_product_mng` — `int64` - `sales_sales` — `int64` - `sales_support` — `int64` - `sales_technical` — `int64` ## Performa pada data uji - Accuracy: 0.9858 - Precision kelas keluar: 0.9892 - Recall kelas keluar: 0.9246 - F1-score kelas keluar: 0.9558 ## Berkas repository - `model_final.joblib` — model hasil tuning - `scaler.joblib` — objek StandardScaler dari tahap UTS - `feature_names.joblib` — urutan fitur hasil encoding - `metadata.json` — metadata model dan preprocessing ## Cara memuat model ```python import joblib model = joblib.load("model_final.joblib") scaler = joblib.load("scaler.joblib") feature_names = joblib.load("feature_names.joblib") ``` Siapkan satu baris data yang sudah di-encoding dengan kolom sesuai `feature_names`. Jika `uses_scaling` bernilai `True`, standardisasi kolom pada `scale_columns` menggunakan objek scaler yang disimpan sebelum memanggil `model.predict()`. ## Keterbatasan Model hanya mempelajari pola dari dataset historis yang digunakan. Prediksi bukan kepastian bahwa seorang karyawan akan keluar. Data tidak mencakup seluruh faktor personal dan organisasi, serta dapat mengandung bias atau perubahan pola dari waktu ke waktu. Hasil model hanya boleh menjadi sinyal awal untuk peninjauan manusia oleh HR, bukan dasar tunggal keputusan terhadap karyawan.