|
import streamlit as st |
|
import pandas as pd |
|
import pickle |
|
from PIL import Image |
|
|
|
|
|
model_path = "model.pkl" |
|
|
|
|
|
with open(model_path, 'rb') as f: |
|
model = pickle.load(f) |
|
|
|
def run(): |
|
st.title('Prediksi Pengunduran Diri Karyawan') |
|
st.markdown('---') |
|
image = Image.open('image_prediction.jpg') |
|
st.image(image) |
|
|
|
st.markdown('---') |
|
|
|
|
|
with st.form('form_employee_attrition'): |
|
|
|
business_travel = st.selectbox('Business Travel', ['Travel_Rarely', 'Travel_Frequently', 'Non-Travel']) |
|
department = st.selectbox('Department', ['Sales', 'Research & Development', 'Human Resources']) |
|
education_field = st.selectbox('Education Field', ['Life Sciences', 'Other', 'Medical', 'Marketing', 'Technical Degree', 'Human Resources']) |
|
job_role = st.selectbox('Job Role', ['Healthcare Representative', 'Research Scientist', 'Sales Executive', 'Human Resources', 'Research Director', 'Laboratory Technician', 'Manufacturing Director', 'Sales Representative', 'Manager']) |
|
marital_status = st.selectbox('Marital Status', ['Married', 'Single', 'Divorced']) |
|
training_times_last_year = st.selectbox('Training Times Last Year', [0, 1, 2, 3, 4, 5, 6]) |
|
job_involvement = st.selectbox('Job Involvement', [1, 2, 3, 4], format_func=lambda x: {1: 'Low', 2: 'Medium', 3: 'High', 4: 'Very High'}[x]) |
|
environment_satisfaction = st.selectbox('Environment Satisfaction', [1, 2, 3, 4], format_func=lambda x: {1: 'Low', 2: 'Medium', 3: 'High', 4: 'Very High'}[x]) |
|
job_satisfaction = st.selectbox('Job Satisfaction', [1, 2, 3, 4], format_func=lambda x: {1: 'Low', 2: 'Medium', 3: 'High', 4: 'Very High'}[x]) |
|
work_life_balance = st.selectbox('Work Life Balance', [1, 2, 3, 4], format_func=lambda x: {1: 'Bad', 2: 'Good', 3: 'Better', 4: 'Best'}[x]) |
|
age = st.slider('Age', min_value=18, max_value=60) |
|
percent_salary_hike = st.slider('Percent Salary Hike', min_value=11, max_value=25) |
|
total_working_years = st.slider('Total Working Years', min_value=0, max_value=40) |
|
years_at_company = st.slider('Years At Company', min_value=0, max_value=40) |
|
years_since_last_promotion = st.slider('Years Since Last Promotion', min_value=0, max_value=15) |
|
years_with_curr_manager = st.slider('Years With Current Manager', min_value=0, max_value=17) |
|
|
|
|
|
submitted = st.form_submit_button('Prediksi') |
|
|
|
|
|
data = { |
|
'BusinessTravel': business_travel, |
|
'Department': department, |
|
'EducationField': education_field, |
|
'JobRole': job_role, |
|
'MaritalStatus': marital_status, |
|
'TrainingTimesLastYear': training_times_last_year, |
|
'JobInvolvement': job_involvement, |
|
'EnvironmentSatisfaction': environment_satisfaction, |
|
'JobSatisfaction': job_satisfaction, |
|
'WorkLifeBalance': work_life_balance, |
|
'Age': age, |
|
'PercentSalaryHike': percent_salary_hike, |
|
'TotalWorkingYears': total_working_years, |
|
'YearsAtCompany': years_at_company, |
|
'YearsSinceLastPromotion': years_since_last_promotion, |
|
'YearsWithCurrManager': years_with_curr_manager |
|
} |
|
|
|
features = pd.DataFrame(data, index=[0]) |
|
|
|
|
|
st.write("## Fitur Input Pengguna") |
|
st.write(features) |
|
|
|
|
|
if submitted: |
|
prediction = model.predict(features) |
|
st.subheader('Hasil Prediksi') |
|
st.write('Pengunduran Diri Karyawan:', 'Ya' if prediction[0] == 1 else 'Tidak') |
|
|
|
if __name__ == '__main__': |
|
run() |
|
|