wildfire-threat-analysis / src /streamlit_app.py
MSK34's picture
Update src/streamlit_app.py
42f8f6f verified
Raw
History Blame Contribute Delete
2.12 kB
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."
)