Simrandhiman's picture
Create app.py
6bf4de3 verified
import gradio as gr
import pandas as pd
import joblib
# Load model & columns
model = joblib.load("student_gpa_model.pkl")
columns = joblib.load("columns.pkl")
def predict_gpa(
Age,
Gender,
Ethnicity,
ParentalEducation,
StudyTimeWeekly,
Absences,
Tutoring,
ParentalSupport,
Extracurricular,
Sports,
Music,
Volunteering
):
data = {
"Age": Age,
"Gender": Gender,
"Ethnicity": Ethnicity,
"ParentalEducation": ParentalEducation,
"StudyTimeWeekly": StudyTimeWeekly,
"Absences": Absences,
"Tutoring": Tutoring,
"ParentalSupport": ParentalSupport,
"Extracurricular": Extracurricular,
"Sports": Sports,
"Music": Music,
"Volunteering": Volunteering,
}
df = pd.DataFrame([data])
df = pd.get_dummies(df)
df = df.reindex(columns=columns, fill_value=0)
prediction = model.predict(df)[0]
return round(float(prediction), 2)
app = gr.Interface(
fn=predict_gpa,
inputs=[
gr.Number(label="Age"),
gr.Dropdown(["Male", "Female"], label="Gender"),
gr.Dropdown(
["Group A", "Group B", "Group C", "Group D", "Group E"],
label="Ethnicity"
),
gr.Dropdown(
["High School", "Associate", "Bachelor", "Master"],
label="Parental Education"
),
gr.Number(label="Weekly Study Time (hours)"),
gr.Number(label="Absences"),
gr.Dropdown(["Yes", "No"], label="Tutoring"),
gr.Dropdown(["Low", "Medium", "High"], label="Parental Support"),
gr.Dropdown(["Yes", "No"], label="Extracurricular"),
gr.Dropdown(["Yes", "No"], label="Sports"),
gr.Dropdown(["Yes", "No"], label="Music"),
gr.Dropdown(["Yes", "No"], label="Volunteering"),
],
outputs=gr.Number(label="Predicted GPA"),
title="Student GPA Predictor",
description="ML model to predict student GPA based on academic & lifestyle factors"
)
if __name__ == "__main__":
app.launch(server_name="0.0.0.0", server_port=7860)