|
import streamlit as st |
|
from src.pipeline.predict_pipeline import CustomData, PredictPipeline |
|
|
|
|
|
st.set_page_config(page_title="Math Score Predictor") |
|
st.title("Student Math Score Predictor") |
|
st.write("This application predicts math scores based on student data.") |
|
|
|
|
|
with st.form(key="student_form"): |
|
gender = st.selectbox("Gender", options=["male", "female"]) |
|
ethnicity = st.selectbox( |
|
"Race or Ethnicity", |
|
options=["group A", "group B", "group C", "group D", "group E"], |
|
) |
|
parental_education = st.selectbox( |
|
"Parental Level of Education", |
|
options=[ |
|
"associate's degree", |
|
"bachelor's degree", |
|
"high school", |
|
"master's degree", |
|
"some college", |
|
"some high school", |
|
], |
|
) |
|
lunch = st.selectbox("Lunch Type", options=["free/reduced", "standard"]) |
|
test_preparation_course = st.selectbox( |
|
"Test Preparation Course", options=["none", "completed"] |
|
) |
|
|
|
reading_score = st.number_input( |
|
"Reading Score (out of 100)", min_value=0, max_value=100, step=1 |
|
) |
|
writing_score = st.number_input( |
|
"Writing Score (out of 100)", min_value=0, max_value=100, step=1 |
|
) |
|
|
|
|
|
submit_button = st.form_submit_button("Predict Exam Scores") |
|
|
|
|
|
if submit_button: |
|
|
|
data = CustomData( |
|
gender=gender, |
|
race_ethnicity=ethnicity, |
|
parental_level_of_education=parental_education, |
|
lunch=lunch, |
|
test_preparation_course=test_preparation_course, |
|
reading_score=reading_score, |
|
writing_score=writing_score, |
|
) |
|
|
|
|
|
pred_df = data.get_data_as_dataframe() |
|
|
|
|
|
predict_pipeline = PredictPipeline() |
|
results = predict_pipeline.predict(pred_df) |
|
|
|
|
|
st.success(f"The predicted Maths Score is {results[0]:.2f}") |
|
|