import streamlit as st import pandas as pd import numpy as np import joblib st.set_page_config( page_title="Wildfire Threat Analysis", page_icon="🔥", layout="centered" ) model = joblib.load("src/wildfire_threat_model.pkl") feature_columns = joblib.load("src/feature_columns.pkl") st.title("🔥 Wildfire Threat Analysis") st.write( "Bu uygulama, orman yangınının tahliye bölgesine yönelik oluşturduğu tehdidi " "erken dönem yangın özelliklerine göre tahmin eder." ) st.info( "Model, yangının 72 saat içinde tahliye bölgesine ulaşıp ulaşmama riskini " "tahmin etmek üzere eğitilmiştir." ) st.sidebar.header("Yangın Özellikleri") input_data = {} for col in feature_columns: input_data[col] = st.sidebar.number_input( label=col, value=0.0, step=1.0 ) input_df = pd.DataFrame([input_data]) st.subheader("Girilen Değerler") st.dataframe(input_df) if st.button("Risk Tahmini Yap"): risk_prob = model.predict_proba(input_df)[0, 1] prob_12h = risk_prob * 0.40 prob_24h = risk_prob * 0.65 prob_48h = risk_prob * 0.85 prob_72h = risk_prob probs = { "12 Saat": prob_12h, "24 Saat": prob_24h, "48 Saat": prob_48h, "72 Saat": prob_72h } st.subheader("Tahmin Sonuçları") for time_label, prob in probs.items(): st.write(f"**{time_label} içinde tehdit olasılığı:** %{prob * 100:.2f}") st.progress(min(float(prob), 1.0)) st.subheader("Genel Risk Değerlendirmesi") if risk_prob >= 0.70: st.error("Yüksek risk: Yangının tahliye bölgesine ulaşma ihtimali güçlü görünüyor.") elif risk_prob >= 0.40: st.warning("Orta risk: Yangının takip edilmesi ve hazırlık yapılması önerilir.") else: st.success("Düşük risk: Mevcut verilere göre tehdit seviyesi düşük görünüyor.") st.caption( "Not: Bu uygulama eğitim ve portföy amacıyla hazırlanmıştır. " "Gerçek afet yönetimi kararları için resmi kurumların verileri ve uzman değerlendirmeleri esas alınmalıdır." )