Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import pandas as pd | |
| import numpy as np | |
| import joblib | |
| # Başlık | |
| st.title("🔌 Ion Switching Tahmin Uygulaması") | |
| # Modeli yükle | |
| model = joblib.load("ion_switch_model.pkl") | |
| # Rolling feature fonksiyonu | |
| def add_rolling_features(df, window_sizes=[10, 50, 100]): | |
| for window in window_sizes: | |
| df[f'signal_mean_{window}'] = df['signal'].rolling(window=window, min_periods=1, center=True).mean() | |
| df[f'signal_std_{window}'] = df['signal'].rolling(window=window, min_periods=1, center=True).std() | |
| df[f'signal_min_{window}'] = df['signal'].rolling(window=window, min_periods=1, center=True).min() | |
| df[f'signal_max_{window}'] = df['signal'].rolling(window=window, min_periods=1, center=True).max() | |
| return df | |
| # CSV yükleme | |
| uploaded_file = st.file_uploader("📤 Lütfen sinyal içeren CSV dosyasını yükleyin (signal sütunu olmalı)", type=["csv"]) | |
| if uploaded_file is not None: | |
| data = pd.read_csv(uploaded_file) | |
| st.write("📄 İlk 5 satır:") | |
| st.write(data.head()) | |
| if 'signal' in data.columns: | |
| # Özellikleri ekle | |
| data_feat = add_rolling_features(data.copy()) | |
| # Tahmin | |
| feature_cols = [col for col in data_feat.columns if 'signal_' in col] | |
| X_input = data_feat[feature_cols].fillna(0) | |
| preds = model.predict(X_input) | |
| # Sonuç göster | |
| data['predicted_open_channels'] = preds | |
| st.success("✅ Tahminler tamamlandı!") | |
| st.write(data[['signal', 'predicted_open_channels']].head()) | |
| # İndirilebilir hale getir | |
| csv = data.to_csv(index=False).encode('utf-8') | |
| st.download_button("📥 Tahmin Sonuçlarını İndir", csv, "ion_switch_predictions.csv", "text/csv") | |
| else: | |
| st.warning("❗ 'signal' sütunu bulunamadı.") | |