File size: 2,326 Bytes
5ded993
5bc344c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
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.")