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