Team Ai
Apppublic

sancos/Detect_Behavior_with_Sensor_Data

sourceHugging Facemitupdated 4mo agoView on Hugging Face
0likes
streamlit_app.py122 linesDownload Raw Back to src
1import streamlit as st2import pandas as pd3import numpy as np4import joblib5import matplotlib.pyplot as plt6 7 8# SAYFA AYARLARI VE BAŞLIK9 10st.set_page_config(page_title="CMI Hareket Tanıma Sistemi", page_icon="🏃‍♂️", layout="wide")11 12st.title("🏃‍♂️ CMI: Akıllı Hareket ve Davranış Tanıma")13st.markdown("---")14 15 16# MODEL VE ARAÇLARIN YÜKLENMESİ17 18@st.cache_resource19def load_assets():20    model = joblib.load("src/cmi_behavior_model_compressed.pkl")21    le = joblib.load("src/label_encoder.pkl")22    return model, le23 24try:25    model, le = load_assets()26    st.sidebar.success("✅ Model ve Encoder Yüklendi")27except:28    st.sidebar.error("❌ Model dosyaları bulunamadı!")29 30 31# KULLANICI GİRİŞLERİ 32 33st.sidebar.header("📊 Anlık Sensör Verileri")34 35# İvmeölçer Girişleri36st.sidebar.subheader("İvmeölçer (Accelerometer)")37acc_x = st.sidebar.slider("acc_x", -20.0, 20.0, 0.0)38acc_y = st.sidebar.slider("acc_y", -20.0, 20.0, 0.0)39acc_z = st.sidebar.slider("acc_z", -20.0, 20.0, 0.0)40 41# Dönüş (Rotation) Girişleri42st.sidebar.subheader("Jiroskop (Rotation)")43rot_x = st.sidebar.slider("rot_x", -10.0, 10.0, 0.0)44rot_y = st.sidebar.slider("rot_y", -10.0, 10.0, 0.0)45rot_z = st.sidebar.slider("rot_z", -10.0, 10.0, 0.0)46 47# Kişisel Bilgiler48st.sidebar.subheader("Demografik Bilgiler")49age = st.sidebar.number_input("Yaş", 5, 80, 25)50sex = st.sidebar.selectbox("Cinsiyet", ["Erkek", "Kadın"])51sex_val = 1 if sex == "Erkek" else 052 53 54# ÖZELLİK MÜHENDİSLİĞİ 55 56def prepare_features():57    # Modelde hesapladığımız Magnitude değerleri58    acc_mag = np.sqrt(acc_x**2 + acc_y**2 + acc_z**2)59    rot_mag = np.sqrt(rot_x**2 + rot_y**2 + rot_z**2)60    61   62    input_data = pd.DataFrame([{63        'acc_x': acc_x, 'acc_y': acc_y, 'acc_z': acc_z,64        'rot_x': rot_x, 'rot_y': rot_y, 'rot_z': rot_z,65        'acc_mag': acc_mag, 'rot_mag': rot_mag,66        'age': age, 'sex': sex_val,67        'sequence_counter': 1  # Örnek değer68    }])69    70   71    return input_data72 73 74# ANA EKRAN VE TAHMİN75 76col1, col2 = st.columns([1, 1])77 78with col1:79    st.subheader("📡 Canlı Sensör İzleme")80    # Bar grafik ile ivme şiddetlerini gösterme81    chart_data = pd.DataFrame({82        "Eksen": ["X", "Y", "Z"],83        "İvme (g)": [acc_x, acc_y, acc_z]84    })85    st.bar_chart(chart_data.set_index("Eksen"))86    87    st.metric("Bileşke İvme (Mag)", f"{np.sqrt(acc_x**2 + acc_y**2 + acc_z**2):.2f}")88 89with col2:90    st.subheader("🔮 Davranış Tahmini")91    92    if st.button("HAREKETİ ANALİZ ET", use_container_width=True):93        input_df = prepare_features()94        95      96        input_df = input_df.reindex(columns=model.feature_names_in_, fill_value=0)97        98        # Tahmin ve Olasılık99        prediction = model.predict(input_df)[0]100        proba = model.predict_proba(input_df)[0]101        102        label = le.inverse_transform([prediction])[0]103        104        st.success(f"Tahmin Edilen Davranış: **{label}**")105        106        # Olasılık Göstergesi107        st.write("Tahmin Güveni:")108        st.progress(float(max(proba)))109 110 111# İMZA112 113st.markdown("---")114st.markdown(115    """116    <div style='text-align:center'>117    <b>Serdar ÖNAL</b> | Kıdemli İnşaat Mühendisi & Yapay Zeka Uygulayıcısı<br>118    <i>Final Project - 2026</i>119    </div>120    """,121    unsafe_allow_html=True122)