Spaces:
Sleeping
Sleeping
File size: 4,379 Bytes
b09a08c 84ff053 b09a08c 42c8cc6 b09a08c 42c8cc6 b09a08c 42c8cc6 b09a08c 42c8cc6 49d3e1e b09a08c 42c8cc6 b09a08c 42c8cc6 b09a08c 49d3e1e b09a08c |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
import gradio as gr
import pickle
import pandas as pd
# Load model
with open("model1.pkl", "rb") as f:
model = pickle.load(f)
# Define categorical mappings (must match training!)
label_encoders = {
"School_Type": {"Public": 0, "Private": 1},
"School_Location": {"Urban": 0, "Rural": 1},
"Extra_Tutorials": {"No": 0, "Yes": 1},
"Access_To_Learning_Materials": {"No": 0, "Yes": 1},
"Parent_Involvement": {"Low": 0, "Medium": 1, "High": 2},
"IT_Knowledge": {"Low": 0, "Medium": 1, "High": 2},
"Gender": {"Male": 0, "Female": 1},
"Socioeconomic_Status": {"Low": 0, "Medium": 1, "High": 2},
"Parent_Education_Level": {"None": 0, "Primary": 1, "Secondary": 2, "Tertiary": 3}
}
# Prediction function
def predict_jamb(study_hours, attendance, teacher_quality, distance,
school_type, school_location, extra_tutorials, learning_materials,
parent_involvement, it_knowledge, age, gender, socioeconomic_status,
parent_education, assignments_completed):
# Encode categorical inputs
input_dict = {
"Study_Hours_Per_Week": study_hours,
"Attendance_Rate": attendance,
"Teacher_Quality": teacher_quality,
"Distance_To_School": distance,
"School_Type": label_encoders["School_Type"][school_type],
"School_Location": label_encoders["School_Location"][school_location],
"Extra_Tutorials": label_encoders["Extra_Tutorials"][extra_tutorials],
"Access_To_Learning_Materials": label_encoders["Access_To_Learning_Materials"][learning_materials],
"Parent_Involvement": label_encoders["Parent_Involvement"][parent_involvement],
"IT_Knowledge": label_encoders["IT_Knowledge"][it_knowledge],
"Age": age,
"Gender": label_encoders["Gender"][gender],
"Socioeconomic_Status": label_encoders["Socioeconomic_Status"][socioeconomic_status],
"Parent_Education_Level": label_encoders["Parent_Education_Level"][parent_education],
"Assignments_Completed": assignments_completed
}
# Convert to dataframe
input_data = pd.DataFrame([input_dict])
# Predict
prediction = model.predict(input_data)[0]
if prediction == 0:
return "π Below Average"
#elif prediction == 1:
# return "βοΈ Average"
else:
return "β
Pass"
# Gradio UI
with gr.Blocks() as demo:
gr.Markdown("# π JAMB Score Prediction App")
gr.Markdown("Predict student's JAMB performance (Below Average, Pass).")
gr.Markdown("Fill in the details below to predict!")
with gr.Row():
study_hours = gr.Slider(0, 40, value=10, label="Study Hours per Week")
attendance = gr.Slider(0, 100, value=80, label="Attendance Rate (%)")
teacher_quality = gr.Dropdown([1,2,3,4,5], label="Teacher Quality")
distance = gr.Number(value=5, label="Distance to School (km)")
with gr.Row():
school_type = gr.Radio(["Public", "Private"], label="School Type")
school_location = gr.Radio(["Urban", "Rural"], label="School Location")
extra_tutorials = gr.Radio(["Yes", "No"], label="Extra Tutorials")
learning_materials = gr.Radio(["Yes", "No"], label="Access to Learning Materials")
with gr.Row():
parent_involvement = gr.Dropdown(["Low", "Medium", "High"], label="Parent Involvement")
it_knowledge = gr.Dropdown(["Low", "Medium", "High"], label="IT Knowledge")
age = gr.Slider(10, 30, value=18, label="Age")
gender = gr.Radio(["Male", "Female"], label="Gender")
with gr.Row():
socioeconomic_status = gr.Dropdown(["Low", "Medium", "High"], label="Socioeconomic Status")
parent_education = gr.Dropdown(["None", "Primary", "Secondary", "Tertiary"], label="Parent Education")
assignments_completed = gr.Slider(0, 10, value=2, label="Assignments Completed")
output = gr.Textbox(label="Prediction")
submit_btn = gr.Button("Predict")
submit_btn.click(
predict_jamb,
inputs=[study_hours, attendance, teacher_quality, distance,
school_type, school_location, extra_tutorials, learning_materials,
parent_involvement, it_knowledge, age, gender, socioeconomic_status,
parent_education, assignments_completed],
outputs=output
)
if __name__ == "__main__":
demo.launch() |