IntrovertsExtrovertsPrediction / src /streamlit_app.py
handex's picture
Update src/streamlit_app.py
5bc344c verified
Raw
History Blame Contribute Delete
2.33 kB
import streamlit as st
import pandas as pd
import numpy as np
import joblib
# Load the Model
try:
model = joblib.load('src/introvert_model.joblib')
except FileNotFoundError:
st.error("Model file not found.")
st.stop()
# Page
st.set_page_config(page_title="Personality Predictor", page_icon="🧠")
st.title("🧠 Introvert vs. Extrovert Predictor")
st.write("This application predicts whether you are an **Introvert** or an **Extrovert** based on your social habits and preferences.")
# User Inputs
with st.sidebar:
st.header("Please Enter Your Details")
time_spent_alone = st.slider("Time Spent Alone (Hours/Day)", 0.0, 10.0, 3.5)
social_event_attendance = st.slider("Social Event Attendance (Frequency 0-10)", 0, 10, 5)
going_outside = st.slider("Frequency of Going Out (0-10)", 0, 10, 5)
friends_circle_size = st.number_input("Friends Circle Size", min_value=0, max_value=20, value=5)
post_frequency = st.slider("Social Media Post Frequency (0-10)", 0, 10, 2)
stage_fear_input = st.radio("Do you have Stage Fear?", ["Yes", "No"])
drained_input = st.radio("Do you feel drained after socializing?", ["Yes", "No"])
# Feature Engineering
stage_fear = 1 if stage_fear_input == "Yes" else 0
drained = 1 if drained_input == "Yes" else 0
social_to_alone_ratio = social_event_attendance / (time_spent_alone + 1)
social_volume = friends_circle_size * going_outside
# Create DataFrame
input_data = pd.DataFrame({
'Time_spent_Alone': [time_spent_alone],
'Stage_fear': [stage_fear],
'Social_event_attendance': [social_event_attendance],
'Going_outside': [going_outside],
'Drained_after_socializing': [drained],
'Friends_circle_size': [friends_circle_size],
'Post_frequency': [post_frequency],
'Social_to_Alone_Ratio': [social_to_alone_ratio],
'Social_Volume': [social_volume]})
# Prediction
st.subheader("Prediction Result")
if st.button("Analyze Personality"):
prediction = model.predict(input_data)[0]
if prediction == 1:
st.success("Result: **INTROVERT**")
st.info("You likely prefer staying in your own space and recharging your energy through solitude.")
else:
st.info("Result: **EXTROVERT**")
st.success("You likely gain energy from social environments and enjoy engaging with the outside world.")