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()