Spaces:
Running
Running
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() | |