introvert-extrovert-prediction / src /streamlit_app.py
MSK34's picture
Update src/streamlit_app.py
9d1c9a1 verified
Raw
History Blame Contribute Delete
2.49 kB
# Introvert ve Extrovert kişilik tahmini uygulaması
import streamlit as st
import pandas as pd
import joblib
model = joblib.load("src/introvert_extrovert_model.pkl")
model_columns = joblib.load("src/model_columns.pkl")
st.set_page_config(page_title="Introvert Extrovert Prediction", layout="centered")
st.title("Introvert / Extrovert Prediction")
st.write(
"Bu uygulama, kişinin sosyal davranışlarına göre Introvert veya Extrovert kişilik tipini tahmin eder."
)
time_spent_alone = st.number_input("Yalnız Geçirilen Süre", min_value=0.0, max_value=15.0, value=3.0)
stage_fear = st.selectbox("Sahne Korkusu Var mı?", ["No", "Yes"])
social_event_attendance = st.number_input("Sosyal Etkinliklere Katılım", min_value=0.0, max_value=10.0, value=5.0)
going_outside = st.number_input("Dışarı Çıkma Sıklığı", min_value=0.0, max_value=10.0, value=4.0)
drained_after_socializing = st.selectbox("Sosyalleştikten Sonra Yoruluyor mu?", ["No", "Yes"])
friends_circle_size = st.number_input("Arkadaş Çevresi Büyüklüğü", min_value=0.0, max_value=20.0, value=8.0)
post_frequency = st.number_input("Sosyal Medya Paylaşım Sıklığı", min_value=0.0, max_value=15.0, value=5.0)
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_after_socializing],
"Friends_circle_size": [friends_circle_size],
"Post_frequency": [post_frequency]
})
input_data["social_score"] = (
input_data["Social_event_attendance"] +
input_data["Going_outside"]
)
input_data["friend_alone_ratio"] = (
input_data["Friends_circle_size"] /
(input_data["Time_spent_Alone"] + 1)
)
input_data["introvert_signal"] = (
input_data["Stage_fear"].map({"No": 0, "Yes": 1}) +
input_data["Drained_after_socializing"].map({"No": 0, "Yes": 1})
)
input_encoded = pd.get_dummies(input_data, drop_first=True)
input_encoded = input_encoded.reindex(
columns=model_columns,
fill_value=0
)
if st.button("Tahmin Et"):
prediction = model.predict(input_encoded)[0]
probability = model.predict_proba(input_encoded)[0]
if prediction == 1:
st.info("Sonuç: Introvert")
st.write(f"Introvert Olasılığı: %{probability[1] * 100:.2f}")
else:
st.success("Sonuç: Extrovert")
st.write(f"Extrovert Olasılığı: %{probability[0] * 100:.2f}")