Spaces:
Sleeping
Sleeping
File size: 2,830 Bytes
3ea8af4 ae3c5d7 3ea8af4 00ce994 3ea8af4 00ce994 ae3c5d7 00ce994 ae3c5d7 00ce994 ae3c5d7 3ea8af4 d51d681 d94508f d51d681 d94508f d51d681 d94508f d51d681 d94508f d51d681 3ea8af4 e82172a 3ea8af4 ae3c5d7 3ea8af4 d94508f 3ea8af4 ae3c5d7 653fbbc ae3c5d7 d94508f 861f0f9 ae3c5d7 861f0f9 ae3c5d7 00ce994 ae3c5d7 d51d681 d94508f d51d681 3ea8af4 ae3c5d7 |
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 |
import streamlit as st
from tensorflow.keras.models import load_model
import pickle
import numpy as np
# Load the saved models
with open('rf_model.pkl', 'rb') as file:
rf_model = pickle.load(file)
deep_model = load_model('deep_model.h5')
# Define the function to make predictions using the RandomForestRegressor model
def make_rf_prediction(model, input_data):
prediction = model.predict(input_data)
return prediction
# Define the function to make predictions using the deep learning model
def make_deep_prediction(model, input_data):
prediction = model.predict(input_data).flatten()
return prediction
# Define the function to calculate GPA
def calculate_gpa(total_score):
if total_score >= 70:
return 'A (5 points)'
elif total_score >= 60:
return 'B (4 points)'
elif total_score >= 50:
return 'C (3 points)'
elif total_score >= 45:
return 'D (2 points)'
else:
return 'F (0 points)'
# Create the Streamlit app
def main():
# Set page title and configure layout
st.set_page_config(page_title="Exam Score Prediction", layout="wide")
# Add a title and description
st.title("Exam Score Prediction")
st.markdown(
"This app predicts exam scores based on input features such as level, course units, attendance, mid-semester score, and assignments."
)
# Create input fields
col1, col2 = st.columns(2)
with col1:
level = st.number_input("Level", min_value=200, max_value=400, step=1)
course_units = st.number_input("Course Units", min_value=1, max_value=4, step=1)
with col2:
attendance = st.slider("Attendance", min_value=1, max_value=10, step=1)
mid_semester = st.slider("Mid Semester Score", min_value=1, max_value=20, step=1)
assignments = st.slider("Assignments", min_value=1, max_value=10, step=1)
# Make prediction
if st.button("Predict Exam Score"):
# Create input data
input_data = np.array([[level, course_units, attendance, mid_semester, assignments]])
# Make predictions using both models
rf_prediction = make_rf_prediction(rf_model, input_data)
deep_prediction = make_deep_prediction(deep_model, input_data)
# Combine predictions
combined_prediction = (rf_prediction + deep_prediction) / 2
# Calculate total score
total_score = attendance + mid_semester + assignments + combined_prediction[0]
# Ensure total score does not exceed 100
total_score = min(total_score, 100)
st.write(f"Predicted Exam Score: {combined_prediction[0]:.2f}")
st.write(f"Total Score: {total_score:.2f}")
# Calculate GPA
gpa = calculate_gpa(total_score)
st.write(f"Predicted GPA: {gpa}")
if __name__ == '__main__':
main()
|