import streamlit as st import pickle from sklearn.ensemble import RandomForestRegressor import numpy as np # Load the saved model with open('rf_model.pkl', 'rb') as file: model = pickle.load(file) # Define the function to make predictions def make_prediction(model, input_data): prediction = model.predict(input_data) return prediction # Define the function to calculate GPA def calculate_gpa(score): if score >= 70: return 'A (5 points)' elif score >= 60: return 'B (4 points)' elif score >= 50: return 'C (3 points)' elif 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) # Create input data input_data = np.array([[level, course_units, attendance, mid_semester, assignments]]) # Make predictionS if st.button("Predict Exam Score"): prediction = make_prediction(model, input_data) st.write(f"Predicted Exam Score: {prediction[0]:.2f}") # Calculate GPA gpa = calculate_gpa(prediction[0]) st.write(f"Predicted GPA: {gpa}") if __name__ == '__main__': main()