Spaces:
Sleeping
Sleeping
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() | |