# 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}")