File size: 2,975 Bytes
d5c6676
23be820
 
be97bec
23be820
05f0176
 
 
 
23be820
be97bec
 
 
 
 
 
 
 
 
23be820
 
05f0176
23be820
 
05f0176
 
 
 
 
 
 
 
 
 
 
 
 
 
23be820
 
 
 
 
 
 
 
 
 
 
 
 
05f0176
23be820
 
 
 
 
 
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
58
59
import streamlit as st
import pickle
import numpy as np
import os

st.title('İçe Dönük (Introvert) mü Dışa Dönük (Extrovert) mü Olduğunuzu Tahmin Eden Model :bust_in_silhouette:')
st.markdown("""
Bu model, aşağıdaki davranışsal özelliklerinize göre sizi **introvert** (içe dönük) veya **extrovert** (dışa dönük) olarak tahmin eder.
""")

MODEL_PATH = "src/behv.pkl"  # src klasörü içindeki dosya yolu

# Dosya var mı kontrol et
if not os.path.isfile(MODEL_PATH):
    st.error(f"Model dosyası '{MODEL_PATH}' bulunamadı! Klasördeki dosyalar: {os.listdir('src')}")
    st.stop()

# Dosyayı yükle
with open(MODEL_PATH, 'rb') as file:
    model, feature_names = pickle.load(file)

st.header("Lütfen aşağıdaki alanları doldurun:")

inputs = []
inputs.append(st.number_input('Time spent Alone (Saat)', min_value=0.0, max_value=24.0, value=1.0, step=1.0,
                             help="Günde yalnız başına geçirdiğiniz saat ortalaması"))
inputs.append(st.number_input('Stage fear (1=Evet, 0=Hayır)', min_value=0.0, max_value=1.0, value=0.0, step=1.0,
                             help="Topluluk/kalabalık karşısında heyecan, çekingenlik veya korku yaşıyor musunuz?"))
inputs.append(st.number_input('Social event attendance', min_value=0.0, max_value=10.0, value=1.0, step=1.0,
                             help="Bir ayda katıldığınız sosyal etkinlik (toplantı, buluşma vb.) sayısı"))
inputs.append(st.number_input('Going outside', min_value=0.0, max_value=10.0, value=1.0, step=1.0,
                             help="Bir haftada dışarıya (ör: parka, kafeye, alışverişe) çıkma sıklığınız"))
inputs.append(st.number_input('Drained after socializing (1=Evet, 0=Hayır)', min_value=0.0, max_value=1.0, value=0.0, step=1.0,
                             help="Sosyalleştikten sonra kendinizi yorgun ve enerjisiz hissediyor musunuz?"))
inputs.append(st.number_input('Friends circle size', min_value=0.0, max_value=20.0, value=1.0, step=1.0,
                             help="Yakın arkadaş çevrenizdeki kişi sayısı"))
inputs.append(st.number_input('Post frequency', min_value=0.0, max_value=10.0, value=1.0, step=1.0,
                             help="Bir ayda sosyal medyada gönderi paylaşma sıklığınız"))

if st.button('Tahmin Et'):
    input_array = np.array([inputs])
    prediction = model.predict(input_array)
    # Eğer çıktı [ [sayı] ] gibi ise aç
    if hasattr(prediction, '__len__'):
        output = prediction[0]
        if hasattr(output, '__len__'):
            output = output[0]
    else:
        output = prediction

    # 0: Introvert, 1: Extrovert
    label_map = {0: "Introvert (İçe dönük)", 1: "Extrovert (Dışa dönük)"}
    try:
        class_idx = int(round(output))
        result = label_map.get(class_idx, f"Bilinmeyen sınıf ({output})")
    except Exception:
        result = f"Bilinmeyen sonuç: {output}"
    st.success(f"Tahmin sonucu: {result}")