Spaces:
Sleeping
Sleeping
File size: 2,617 Bytes
3ea8af4 00ce994 3ea8af4 00ce994 3ea8af4 00ce994 3ea8af4 00ce994 3ea8af4 d51d681 d94508f d51d681 d94508f d51d681 d94508f d51d681 d94508f d51d681 3ea8af4 00ce994 3ea8af4 d94508f 3ea8af4 653fbbc 00ce994 d94508f 861f0f9 3459668 00ce994 d51d681 d94508f d51d681 3ea8af4 00ce994 |
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 |
import streamlit as st
import pickle
import numpy as np
from tensorflow.keras.models import load_model
# Load the saved models
with open('rf_model.pkl', 'rb') as file:
rf_model = pickle.load(file)
reloaded_model = load_model('deep_model.h5')
# Define the function to make predictions
def make_prediction(rf_model, nn_model, input_data):
# Predictions from RandomForestRegressor
rf_predictions = rf_model.predict(input_data)
# Predictions from Neural Network model
nn_predictions = nn_model.predict(input_data).flatten()
# Combine predictions
combined_predictions = (rf_predictions + nn_predictions) / 2 # Taking the average of predictions
return combined_predictions
# 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 using a combined model."
)
# 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"):
# Add total_score to the input data
input_data = np.array([[level, course_units, attendance, mid_semester, assignments]])
prediction = make_prediction(rf_model, reloaded_model, input_data)
# Calculate total score
total_score = attendance + mid_semester + assignments + prediction[0]
st.write(f"Predicted Exam Score: {prediction[0]:.2f}")
st.write(f"Total Score: {total_score}")
# Calculate GPA
gpa = calculate_gpa(total_score)
st.write(f"Predicted GPA: {gpa}")
if __name__ == '__main__':
main() |