File size: 2,454 Bytes
d18945e
385e9fd
6de8f08
d18945e
6de8f08
385e9fd
a539ace
385e9fd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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

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