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)