hç
commited on
Upload 4 files
Browse files- README.md +48 -20
- app.py +41 -0
- prophet_model.pkl +3 -0
- requirements.txt +4 -3
README.md
CHANGED
@@ -1,20 +1,48 @@
|
|
1 |
-
---
|
2 |
-
title: Demand Forecasting
|
3 |
-
emoji:
|
4 |
-
colorFrom:
|
5 |
-
colorTo:
|
6 |
-
sdk:
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
---
|
2 |
+
title: Demand Forecasting with Prophet
|
3 |
+
emoji: 📈
|
4 |
+
colorFrom: green
|
5 |
+
colorTo: blue
|
6 |
+
sdk: streamlit
|
7 |
+
sdk_version: "1.32.2"
|
8 |
+
app_file: app.py
|
9 |
+
pinned: false
|
10 |
+
---
|
11 |
+
|
12 |
+
# 📦 Store Item Demand Forecasting App (Prophet ile)
|
13 |
+
|
14 |
+
Bu uygulama, [Kaggle - Demand Forecasting Challenge](https://www.kaggle.com/competitions/demand-forecasting-kernels-only) veri seti kullanılarak Prophet modeli ile zaman serisi satış tahmini yapmak için geliştirilmiştir. Prophet modeli, tarihsel satış verilerinden trend, haftalık ve yıllık mevsimsellik bileşenlerini öğrenerek 90 gün ileriye yönelik tahminler üretir.
|
15 |
+
|
16 |
+
---
|
17 |
+
|
18 |
+
## 🎯 Özellikler
|
19 |
+
|
20 |
+
- Facebook Prophet ile zaman serisi modelleme
|
21 |
+
- Kullanıcı seçimi ile mağaza ve ürün bazlı tahmin
|
22 |
+
- 90 günlük ileriye dönük satış tahmini
|
23 |
+
- Trend, haftalık ve yıllık mevsimsellik bileşen analizi
|
24 |
+
- Etkileşimli grafiklerle görselleştirme
|
25 |
+
|
26 |
+
---
|
27 |
+
|
28 |
+
## 🧠 Model Detayları
|
29 |
+
|
30 |
+
- **Model:** Prophet (additive time series model)
|
31 |
+
- **Girdi:** Tarih (`date`) ve satış miktarı (`sales`)
|
32 |
+
- **Tahmin:** 90 günlük ileriye dönük `sales` değeri
|
33 |
+
- **Mevsimsellik:** Haftalık ve yıllık otomatik olarak öğrenilir
|
34 |
+
|
35 |
+
---
|
36 |
+
|
37 |
+
## 📂 Dosya Yapısı
|
38 |
+
demand_forecast_app/
|
39 |
+
├── app.py → Streamlit uygulaması
|
40 |
+
├── train.csv → Kaggle'dan alınan eğitim verisi
|
41 |
+
├── requirements.txt → Gerekli Python paketleri
|
42 |
+
└── README.md → Bu dosya
|
43 |
+
|
44 |
+
---
|
45 |
+
|
46 |
+
📌 Veri Kaynağı
|
47 |
+
Veri seti Kaggle'dan alınmıştır:
|
48 |
+
👉 Store Item Demand Forecasting Challenge
|
app.py
ADDED
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
import pandas as pd
|
3 |
+
from prophet import Prophet
|
4 |
+
import matplotlib.pyplot as plt
|
5 |
+
|
6 |
+
st.title("📈 Demand Forecasting App (Prophet ile)")
|
7 |
+
|
8 |
+
# Veriyi yükle
|
9 |
+
@st.cache_data
|
10 |
+
def load_data():
|
11 |
+
df = pd.read_csv("train.csv")
|
12 |
+
df['date'] = pd.to_datetime(df['date'])
|
13 |
+
return df
|
14 |
+
|
15 |
+
df = load_data()
|
16 |
+
|
17 |
+
# Kullanıcıdan seçim
|
18 |
+
store = st.selectbox("Mağaza Seç", sorted(df['store'].unique()))
|
19 |
+
item = st.selectbox("Ürün Seç", sorted(df['item'].unique()))
|
20 |
+
|
21 |
+
# Prophet için veri hazırla
|
22 |
+
filtered = df[(df['store'] == store) & (df['item'] == item)]
|
23 |
+
dfp = filtered[['date', 'sales']].rename(columns={'date': 'ds', 'sales': 'y'})
|
24 |
+
|
25 |
+
# Model kur
|
26 |
+
model = Prophet()
|
27 |
+
model.fit(dfp)
|
28 |
+
|
29 |
+
# Tahmin
|
30 |
+
future = model.make_future_dataframe(periods=90)
|
31 |
+
forecast = model.predict(future)
|
32 |
+
|
33 |
+
# Tahmin Grafiği
|
34 |
+
st.subheader("📊 Tahmin Grafiği")
|
35 |
+
fig1 = model.plot(forecast)
|
36 |
+
st.pyplot(fig1)
|
37 |
+
|
38 |
+
# Mevsimsellik bileşenleri
|
39 |
+
st.subheader("🧠 Mevsimsellik & Trend Bileşenleri")
|
40 |
+
fig2 = model.plot_components(forecast)
|
41 |
+
st.pyplot(fig2)
|
prophet_model.pkl
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:ee09975bfc55d2557333710110ccab1ac00ae0dd1b4208aae0128a30380ad94d
|
3 |
+
size 1209
|
requirements.txt
CHANGED
@@ -1,3 +1,4 @@
|
|
1 |
-
|
2 |
-
pandas
|
3 |
-
|
|
|
|
1 |
+
streamlit
|
2 |
+
pandas
|
3 |
+
prophet
|
4 |
+
matplotlib
|