final in the name of Jesus

This commit is contained in:
Jesselyn Mu
2025-04-10 15:14:58 +07:00
parent 1856e8ebb3
commit 53ca7c3072
52 changed files with 65816 additions and 20235 deletions

View File

@ -282,7 +282,7 @@ def show_pimpinan_exploration():
if menu_option == "Semua Data Karyawan":
col1, col2 = st.columns(2)
with col1:
filter_employee_id = st.text_input("Filter berdasarkan Karyawan_ID", placeholder="Contoh: EM12345")
filter_employee_id = st.text_input("Filter berdasarkan ID_Karyawan", placeholder="Contoh: EM12345")
with col2:
filter_departemen = st.selectbox(
"Filter berdasarkan Departemen",
@ -296,7 +296,7 @@ def show_pimpinan_exploration():
if not df.empty:
# Terapkan filter
if filter_employee_id:
df = df[df['Karyawan_ID'].str.contains(filter_employee_id, na=False)]
df = df[df['ID_Karyawan'].str.contains(filter_employee_id, na=False)]
if filter_departemen != "Semua":
df = df[df['Departemen'] == filter_departemen]
@ -320,14 +320,14 @@ def show_pimpinan_exploration():
col1, col2 = st.columns(2)
with col1:
filter_employee_id = st.text_input("Filter berdasarkan Karyawan_ID", placeholder="Contoh: EM12345")
filter_employee_id = st.text_input("Filter berdasarkan ID_Karyawan", placeholder="Contoh: EM12345")
with col2:
filter_retensi = st.selectbox("Pilih Kategori Retensi/Tidak", ["Semua", "Retensi", "Tidak Retensi"])
if not df.empty:
# Terapkan filter
if filter_employee_id:
df = df[df['Karyawan_ID'].str.contains(filter_employee_id, na=False)]
df = df[df['ID_Karyawan'].str.contains(filter_employee_id, na=False)]
if filter_retensi != "Semua":
df = df[df["Hasil_Prediksi_Retensi"] == filter_retensi]

View File

@ -14,7 +14,7 @@ import time
import json
reg_model = pickle.load(open('regression_model_final.sav', 'rb'))
class_model = pickle.load(open('clasification_final_model.sav', 'rb'))
class_model = pickle.load(open('clasification_final_model_smote.sav', 'rb'))
train_file_path = 'X_train.csv'
with open("feature_explanation.json", "r") as f:
@ -78,7 +78,6 @@ def process_employee_data(df):
df["income_6_months"] = df["income"] * 6
df["total_income_work"] = df["income"] * df["active_work_months"]
df["absence_ratio"] = df["absent_90D"] / (df["active_work"] / 90)
df["income_dependant_ratio"] = df["income"] / (df["dependant"] + 1)
df["work_efficiency"] = df["avg_time_work"] / 8
@ -95,15 +94,6 @@ def process_employee_data(df):
# Work Stability Score
df['work_stability_score'] = df['active_work_months'] / (df['absent_90D'] + 1)
# Married-Dependent Ratio
def married_dependent_ratio(row):
if row['marriage_stat'] == 'Married':
return row['dependant'] + 1
else:
return 1
df['married_dependent_ratio'] = df.apply(married_dependent_ratio, axis=1)
# Job Income to Position Score
position_score_mapping = {'Junior': 2, 'Staff': 1, 'Senior': 3, 'Manager': 4}
df['position_score'] = df['position'].map(position_score_mapping)
@ -119,20 +109,6 @@ def process_employee_data(df):
0.6 * df['job_satisfaction'] + 0.4 * df['performance_rating']
)
# Resign Risk Indicator
def resign_risk_indicator(row):
if row['age_years'] < 30 and row['active_work_months'] < 12:
return "High"
elif 1 <= row['active_work_months'] <= 36:
return "Medium"
else:
return "Low"
df['resign_risk_indicator'] = df.apply(resign_risk_indicator, axis=1)
# Adjusted Work Time
df['adjusted_work_time'] = df['avg_time_work'] * (1 - (df['absent_90D'] / ((df['active_work_months'] * 90) + 1)))
job_satisfaction_mapping = {1.0: 'Low', 2.0: 'Medium', 3.0: 'High', 4.0: 'Very High'}
df['job_satisfaction'] = df['job_satisfaction'].map(job_satisfaction_mapping)
@ -407,7 +383,7 @@ def show_prediction():
# Kolom kategori
cat_feature = ['departemen', 'position', 'domisili', 'marriage_stat', 'job_satisfaction',
'performance_rating', 'education', 'active_work_category', 'resign_risk_indicator', 'jenis_kelamin']
'performance_rating', 'education', 'active_work_category', 'jenis_kelamin']
X_test_class = df[expected_columns_class]
X_test_reg = df[expected_columns_reg]

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.