| import streamlit as st |
| import pickle |
|
|
| def main(): |
| st.title('Prediksi Promosi Karyawan') |
| with st.form(key='myform', clear_on_submit=False): |
| nama_karyawan = st.text_input( |
| "Nama Karyawan", |
| max_chars = 50, |
| placeholder = "Masukkan nama lengkap karyawan") |
| age = st.number_input( |
| "Umur", |
| min_value = 17, |
| max_value = 100, |
| step = 1, |
| placeholder = "25") |
| departement = st.selectbox( |
| "Departemen", |
| ("-", "Sales & Marketing", "Operations", "Technology", "Analytics", "R&D", "Procurement", "Finance", "HR", "Legal"), |
| placeholder="Choose an option") |
| |
| |
| |
| |
| education = st.selectbox( |
| "Pendidikan", |
| ("-", "Bachelor's", "Below Secondary", "Master's & above"), |
| placeholder="Choose an option") |
| jenis_kelamin = st.radio( |
| "Jenis Kelamin", |
| ["Laki-laki", "Perempuan"]) |
| |
| |
| |
| |
| no_of_trainings = st.number_input( |
| "Jumlah Pelatihan Yang Pernah Diikuti", |
| min_value = 0, |
| max_value = 100, |
| step = 1, |
| placeholder = "2") |
| previous_year_rating = st.number_input( |
| "Rating Tahun Lalu (1-5)", |
| min_value = 1, |
| max_value = 5, |
| step = 1, |
| placeholder = "1 - 5") |
| length_of_service = st.number_input( |
| "Lama Bekerja (Tahun)", |
| min_value = 0.0, |
| max_value = 100.0, |
| step = 0.1, |
| placeholder = "2") |
| KPIs_met = st.toggle("KPI > 80% ?") |
| awards_won = st.toggle("Pernah mendapat award?") |
| avg_training_score = st.number_input( |
| "Rata-rata Skor Pelatihan (0-100)", |
| min_value = 0, |
| max_value = 100, |
| step = 1, |
| placeholder = "") |
| submitted = st.form_submit_button(label="Cek Hasil Prediksi") |
|
|
| |
| with open('best_model_chi2.pkl', 'rb') as f: |
| model = pickle.load(f) |
|
|
| |
| if submitted: |
| if KPIs_met: |
| kpi_met = 1 |
| else: |
| kpi_met = 0 |
|
|
| if awards_won: |
| award_won = 1 |
| else: |
| award_won = 0 |
| |
| prediction = model.predict([[previous_year_rating, kpi_met, award_won, avg_training_score]]) |
|
|
| if prediction[0] == 1: |
| st.balloons() |
| st.success("Hasil Prediksi {} DISARANKAN untuk promosi".format(nama_karyawan)) |
| else: |
| st.snow() |
| st.error("Hasil Prediksi {} BELUM DISARANKAN untuk promosi!".format(nama_karyawan)) |
| |
|
|
| |
| |
| |
| |
| |
| |
| |
|
|
| if __name__ == '__main__': |
| main() |
|
|