import joblib import streamlit as st import numpy as np # Load the trained model model = joblib.load("src/student_performance_model (2).h5") def predict_marks(Hours_studied, Previous_Score, Extracurriculum_Activivities, Sleep_Hours, Sample_Question): "Predict the student marks based on the input data" input_data = np.array([[Hours_studied, Previous_Score, Extracurriculum_Activivities, Sleep_Hours, Sample_Question]]) prediction = model.predict(input_data) prediction = round(float(prediction), 2) # Ensure the prediction does not exceed 100 if prediction > 100: prediction = 100 return prediction def main(): # Sidebar Welcome Note with Emojis st.title("๐Ÿ“š Student Marks Predictor ๐Ÿ“Š") # Input data name = st.text_input("๐Ÿ‘ค Enter your name") Hours_studied = st.number_input("๐Ÿ“– Hours you studied", min_value=0.0, max_value=20.0, value=0.0) Previous_Score = st.number_input("๐Ÿ“Š Previous exam score", min_value=0, max_value=100, value=0) Extracurriculum_Activivities = st.number_input("๐ŸŽญ Extracurricular activities done", min_value=0, max_value=10, value=0) Sleep_Hours = st.number_input("๐Ÿ˜ด Hours you slept", min_value=0.0, max_value=12.0, value=0.0) Sample_Question = st.number_input("โœ๏ธ Sample questions practiced", min_value=0, max_value=50, value=0) # Sidebar interaction st.sidebar.title(f" # Hey {name}") st.sidebar.title(f"๐ŸŽ‰Welcome to your Marks Predictor! ๐ŸŽ‰") st.sidebar.write(""" Hey there! Ready to see what your future marks might be? ๐Ÿ˜„ Remember, I'm here to help you succeed! ๐Ÿ’ช """) st.sidebar.markdown("---") # Predict button if st.button("๐Ÿ”ฎ Predict Your Marks"): prediction = predict_marks(Hours_studied, Previous_Score, Extracurriculum_Activivities, Sleep_Hours, Sample_Question) # Display the predictions if prediction >= 90: st.balloons() st.success(f"๐ŸŒŸ **{name}, amazing!** You're on track to score {prediction} marks! Keep up the excellent work! ๐Ÿ’ช") elif prediction >= 35: st.warning(f"โš ๏ธ **{name}, not bad!** You're likely to pass with {prediction} marks, but there's room to aim higher! ๐Ÿš€") else: st.error(f"๐Ÿšจ **{name}, oh no!** You might score below 35 marks. Consider putting in some more effort! ๐Ÿ“š") if __name__ == "__main__": main()