student-test-score-predictor / src /streamlit_app.py
MSK34's picture
Update src/streamlit_app.py
05822a7 verified
Raw
History Blame Contribute Delete
3.03 kB
import streamlit as st
import pandas as pd
import joblib
from catboost import CatBoostRegressor
st.set_page_config(
page_title="Student Test Score Predictor",
page_icon="🎓",
layout="centered"
)
st.title("🎓 Student Test Score Predictor")
st.write(
"This application predicts a student's exam score using study habits, "
"attendance, sleep patterns, and educational factors."
)
st.write(
"Bu uygulama; çalışma alışkanlıkları, ders devamı, uyku düzeni ve eğitim koşullarına göre öğrencinin sınav puanını tahmin eder."
)
model = CatBoostRegressor()
model.load_model("src/student_score_model.cbm")
feature_columns = joblib.load("src/feature_columns.pkl")
age = st.number_input("Age / Yaş", min_value=15, max_value=30, value=21)
gender = st.selectbox("Gender / Cinsiyet", ["male", "female"])
course = st.selectbox("Course / Bölüm", ["bsc", "bca", "engineering", "arts", "commerce"])
study_hours = st.number_input("Study Hours / Çalışma Saati", min_value=0.0, max_value=12.0, value=5.0)
class_attendance = st.number_input("Class Attendance (%) / Devam Oranı", min_value=0.0, max_value=100.0, value=75.0)
internet_access = st.selectbox("Internet Access / İnternet Erişimi", ["yes", "no"])
sleep_hours = st.number_input("Sleep Hours / Uyku Süresi", min_value=0.0, max_value=12.0, value=7.0)
sleep_quality = st.selectbox("Sleep Quality / Uyku Kalitesi", ["poor", "average", "good"])
study_method = st.selectbox("Study Method / Çalışma Yöntemi", ["self-study", "online videos", "coaching", "group study"])
facility_rating = st.selectbox("Facility Rating / Eğitim Olanakları", ["low", "medium", "high"])
exam_difficulty = st.selectbox("Exam Difficulty / Sınav Zorluğu", ["easy", "moderate", "hard"])
sleep_quality_map = {
"poor": 1,
"average": 2,
"good": 3
}
sleep_quality_num = sleep_quality_map[sleep_quality]
study_efficiency = study_hours * class_attendance
sleep_score = sleep_hours * sleep_quality_num
academic_engagement = study_hours + (class_attendance / 10)
study_sleep_ratio = study_hours / (sleep_hours + 1)
input_df = pd.DataFrame({
"age": [age],
"gender": [gender],
"course": [course],
"study_hours": [study_hours],
"class_attendance": [class_attendance],
"internet_access": [internet_access],
"sleep_hours": [sleep_hours],
"sleep_quality": [sleep_quality],
"study_method": [study_method],
"facility_rating": [facility_rating],
"exam_difficulty": [exam_difficulty],
"study_efficiency": [study_efficiency],
"sleep_quality_num": [sleep_quality_num],
"sleep_score": [sleep_score],
"academic_engagement": [academic_engagement],
"study_sleep_ratio": [study_sleep_ratio]
})
input_df = input_df[feature_columns]
if st.button("Predict Exam Score / Sınav Puanını Tahmin Et"):
prediction = model.predict(input_df)[0]
prediction = max(0, min(100, prediction))
st.success(f"Predicted Exam Score: {prediction:.2f}")
st.success(f"Tahmini Sınav Puanı: {prediction:.2f}")