Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import pandas as pd | |
| import joblib | |
| import os | |
| # Make Streamlit write configs locally instead of root | |
| os.environ["STREAMLIT_HOME"] = os.path.join(os.getcwd(), ".streamlit") | |
| # --- Load the model --- | |
| script_dir = os.path.dirname(__file__) | |
| model_path = os.path.join(script_dir, "salary_model.pkl") # your saved model | |
| st.title("💼 AI Salary Prediction App") | |
| st.write("This tool predicts a developer's estimated salary based on their background and experience.") | |
| try: | |
| model_pipeline = joblib.load(model_path) | |
| st.success("✅ Model loaded successfully!") | |
| except Exception as e: | |
| st.error(f"❌ Error loading the model: {e}") | |
| st.stop() | |
| # --- User input section --- | |
| st.sidebar.header("Input your details") | |
| age = st.sidebar.slider("Age", 18, 65, 30) | |
| years_code_pro = st.sidebar.slider("Years of professional coding experience", 0, 40, 5) | |
| country = st.sidebar.selectbox("Country", ["Denmark", "Germany", "Croatia", "Portugal", "Italy", "Netherlands"]) | |
| education = st.sidebar.selectbox("Education level", [ | |
| "Bachelor’s degree", | |
| "Master’s degree (M.A., M.S., M.Eng., MBA, etc.)", | |
| "Doctoral degree", | |
| "Less than Bachelor’s" | |
| ]) | |
| remote = st.sidebar.selectbox("Work arrangement", ["Remote", "Hybrid", "On-site"]) | |
| # --- Create a DataFrame for prediction --- | |
| input_data = pd.DataFrame({ | |
| "age_group": [age], | |
| "years_code_pro": [years_code_pro], | |
| "country": [country], | |
| "ed_level": [education], | |
| "remote_work": [remote] | |
| }) | |
| # --- Predict salary --- | |
| if st.button("Predict Salary"): | |
| try: | |
| predicted_salary = model_pipeline.predict(input_data)[0] | |
| st.subheader(f"💰 Predicted Salary: €{predicted_salary:,.0f}") | |
| except Exception as e: | |
| st.error(f"Error making prediction: {e}") | |