|
|
import streamlit as st |
|
|
import pandas as pd |
|
|
from sklearn.pipeline import Pipeline |
|
|
from sklearn.preprocessing import OrdinalEncoder, OneHotEncoder |
|
|
from sklearn.compose import ColumnTransformer |
|
|
from sklearn.ensemble import GradientBoostingRegressor |
|
|
import pickle |
|
|
|
|
|
with open('salPridict.pkl', 'rb') as file: |
|
|
model = pickle.load(file) |
|
|
|
|
|
|
|
|
def preprocess_input(df): |
|
|
|
|
|
|
|
|
df['DOJ'] = pd.to_datetime(df['DOJ']) |
|
|
df['CURRENT DATE'] = pd.to_datetime('2016-07-01') |
|
|
|
|
|
|
|
|
df['TENURE'] = (df['CURRENT DATE'] - df['DOJ']).dt.days // 365.25 |
|
|
df['TOTAL_EXP'] = df['PAST_EXP'] + df['TENURE'] |
|
|
df = df.drop(columns=['DOJ', 'CURRENT DATE', 'NAME', 'PAST_EXP', 'TENURE', 'AGE']) |
|
|
total_experience=int(df['TOTAL_EXP'][0]) |
|
|
|
|
|
if total_experience >= 5 : |
|
|
recommendation = "Your performance and experience suggest that you're well-positioned for a salary increase. Consider discussing this with your manager during your next performance review." |
|
|
elif total_experience >= 3 : |
|
|
recommendation = "You've gained valuable experience and have a solid performance rating. It might be a good time to explore opportunities for advancement within the company or discuss a salary review with your manager." |
|
|
else: |
|
|
recommendation = "Focus on enhancing your skills, gaining more experience, and improving your performance to increase your chances of a salary raise in the future." |
|
|
|
|
|
return df,recommendation |
|
|
|
|
|
|
|
|
|
|
|
def predict_salary(data): |
|
|
preprocessed_data,rec = preprocess_input(data) |
|
|
|
|
|
salary = model.predict(preprocessed_data) |
|
|
return salary,rec |
|
|
|
|
|
|
|
|
|
|
|
def main(): |
|
|
st.title('Salary Prediction App') |
|
|
|
|
|
|
|
|
name = st.text_input('Name') |
|
|
age = st.number_input('Age', min_value=0) |
|
|
gender = st.selectbox('Gender', ['M', 'F']) |
|
|
designation = st.selectbox('Designation', ['Analyst', 'Associate', 'Senior Analyst', 'Manager', 'Senior Manager', 'Director']) |
|
|
unit = st.selectbox('Unit', ['Finance', 'IT', 'Marketing' ,'Operations' ,'Web', 'Management']) |
|
|
|
|
|
|
|
|
past_experience = st.number_input('Past Experience', min_value=0) |
|
|
rating = st.number_input('Rating', min_value=0.0, max_value=5.0, step=0.1) |
|
|
date_of_join = st.date_input('Date of Join') |
|
|
|
|
|
|
|
|
if st.button('Predict Salary'): |
|
|
input_data = pd.DataFrame({ |
|
|
'NAME': [name], |
|
|
'AGE': [age], |
|
|
'SEX': [gender], |
|
|
'DESIGNATION': [designation], |
|
|
'UNIT': [unit], |
|
|
'PAST_EXP': [past_experience], |
|
|
'RATINGS': [rating], |
|
|
'DOJ': [date_of_join] |
|
|
}) |
|
|
|
|
|
salary_prediction,rec = predict_salary(input_data) |
|
|
|
|
|
st.success(f'Predicted Salary: {int(salary_prediction[0])}') |
|
|
st.success(f'One Recommendation for you {name}: {rec}') |
|
|
|
|
|
if __name__ == '__main__': |
|
|
main() |
|
|
|
|
|
|