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) # Function to preprocess input data def preprocess_input(df): # Preprocess input data here (e.g., encoding categorical variables, transforming date features) # Convert 'DOJ' and 'CURRENT DATE' to datetime df['DOJ'] = pd.to_datetime(df['DOJ']) df['CURRENT DATE'] = pd.to_datetime('2016-07-01') # Calculate tenure in days, then convert to years 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]) # Provide salary increase recommendations based on total experience and rating 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 # Function to make prediction def predict_salary(data): preprocessed_data,rec = preprocess_input(data) salary = model.predict(preprocessed_data) return salary,rec # Streamlit app def main(): st.title('Salary Prediction App') # Input fields 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') # Predict button 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()