CareerNavigator / app.py
Aumkeshchy2003's picture
Create app.py
574e697 verified
raw
history blame
2.8 kB
import warnings
warnings.filterwarnings('ignore')
import pandas as pd
import numpy as np
from sklearn import preprocessing
from sklearn.ensemble import GradientBoostingClassifier
import pickle
import gradio as gr
# Load the model and encoder
with open("model.pkl", "rb") as model_file:
gbc = pickle.load(model_file)
with open("encoder.pkl", "rb") as encoder_file:
encoder_dict = pickle.load(encoder_file)
def predict_employability(Age, Accessibility, EdLevel, Employment, Gender, MentalHealth, MainBranch, YearsCode, PreviousSalary, ComputerSkills, Continent):
data = {
'Age': Age, 'Accessibility': Accessibility, 'EdLevel': EdLevel, 'Employment': Employment,
'Gender': Gender, 'MentalHealth': MentalHealth, 'MainBranch': MainBranch,
'YearsCode': YearsCode, 'PreviousSalary': PreviousSalary, 'ComputerSkills': ComputerSkills,
'Continent': Continent
}
df = pd.DataFrame([list(data.values())], columns=[
'Age', 'Accessibility', 'EdLevel', 'Employment', 'Gender', 'MentalHealth',
'MainBranch', 'YearsCode', 'PreviousSalary', 'ComputerSkills', 'Continent'
])
category_col = ['Age', 'Accessibility', 'EdLevel', 'Gender', 'MentalHealth', 'MainBranch', 'Continent']
for cat in encoder_dict:
for col in df.columns:
le = preprocessing.LabelEncoder()
if cat == col:
le.classes_ = np.array(encoder_dict[cat], dtype=object)
for unique_item in df[col].unique():
if unique_item not in le.classes_:
df[col] = ['Unknown' if x == unique_item else x for x in df[col]]
df[col] = le.transform(df[col].astype(str))
features_list = df.values.tolist()
prediction = gbc.predict(features_list)
return "Employable" if prediction[0] == 1 else "Less Employable"
iface = gr.Interface(
fn=predict_employability,
inputs=[
gr.Dropdown(['<35', '>35'], label="Age"),
gr.Dropdown(['No', 'Yes'], label="Accessibility"),
gr.Dropdown(['Master', 'NoHigherEd', 'Other', 'PhD', 'Undergraduate'], label="EdLevel"),
gr.Slider(0, 1, step=1, label="Employment"),
gr.Dropdown(['Man', 'NonBinary', 'Woman'], label="Gender"),
gr.Dropdown(['No', 'Yes'], label="MentalHealth"),
gr.Dropdown(['Dev', 'NotDev'], label="MainBranch"),
gr.Slider(0, 50, step=1, label="YearsCode"),
gr.Number(label="PreviousSalary"),
gr.Slider(0, 100, step=1, label="ComputerSkills"),
gr.Dropdown(['Africa', 'Asia', 'Europe', 'North_America', 'Oceania', 'Others', 'South_America'], label="Continent")
],
outputs="text",
title="Employability Prediction",
description="Predict employability based on various features."
)
iface.launch()