HarunDemircioglu11's picture
Update src/streamlit_app.py
05f0176 verified
raw
history blame
2.98 kB
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}")