Spaces:
Sleeping
Sleeping
Upload 3 files
Browse files- app.py +89 -0
- requirements.txt +12 -0
- restaurant_revenue_model.joblib +3 -0
app.py
ADDED
@@ -0,0 +1,89 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
import pandas as pd
|
3 |
+
import joblib
|
4 |
+
import numpy as np
|
5 |
+
|
6 |
+
# Modeli yükle
|
7 |
+
model = joblib.load('restaurant_revenue_model.joblib')
|
8 |
+
|
9 |
+
# Eğitim sırasında kullanılan özelliklerin tam listesi
|
10 |
+
feature_names = [
|
11 |
+
'P1', 'P2', 'P3', 'P4', 'P5', 'P6', 'P7', 'P8', 'P9', 'P10',
|
12 |
+
'P11', 'P12', 'P13', 'P14', 'P15', 'P16', 'P17', 'P18', 'P19', 'P20',
|
13 |
+
'P21', 'P22', 'P23', 'P24', 'P25', 'P26', 'P27', 'P28', 'P29', 'P30',
|
14 |
+
'P31', 'P32', 'P33', 'P34', 'P35', 'P36', 'P37', 'day', 'days',
|
15 |
+
'City_Adana', 'City_Afyonkarahisar', 'City_Aksaray', 'City_Amasya',
|
16 |
+
'City_Ankara', 'City_Antalya', 'City_Artvin', 'City_Aydın', 'City_Balıkesir',
|
17 |
+
'City_Batman', 'City_Bilecik', 'City_Bolu', 'City_Bursa', 'City_Denizli',
|
18 |
+
'City_Diyarbakır', 'City_Düzce', 'City_Edirne', 'City_Elazığ', 'City_Erzincan',
|
19 |
+
'City_Erzurum', 'City_Eskişehir', 'City_Gaziantep', 'City_Giresun', 'City_Hatay',
|
20 |
+
'City_Isparta', 'City_Kahramanmaraş', 'City_Karabük', 'City_Kars', 'City_Kastamonu',
|
21 |
+
'City_Kayseri', 'City_Kocaeli', 'City_Konya', 'City_Kütahya', 'City_Kırklareli',
|
22 |
+
'City_Kırıkkale', 'City_Kırşehir', 'City_Malatya', 'City_Manisa', 'City_Mardin',
|
23 |
+
'City_Mersin', 'City_Muğla', 'City_Nevşehir', 'City_Niğde', 'City_Ordu',
|
24 |
+
'City_Osmaniye', 'City_Rize', 'City_Sakarya', 'City_Samsun', 'City_Siirt',
|
25 |
+
'City_Sivas', 'City_Tanımsız', 'City_Tekirdağ', 'City_Tokat', 'City_Trabzon',
|
26 |
+
'City_Uşak', 'City_Yalova', 'City_Zonguldak', 'City_Çanakkale', 'City_Çankırı',
|
27 |
+
'City_Çorum', 'City_İstanbul', 'City_İzmir', 'City_Şanlıurfa', 'City Group_Big Cities',
|
28 |
+
'City Group_Other', 'Type_DT', 'Type_FC', 'Type_IL', 'Type_MB', 'month_1',
|
29 |
+
'month_2', 'month_3', 'month_4', 'month_5', 'month_6', 'month_7', 'month_8',
|
30 |
+
'month_9', 'month_10', 'month_11', 'month_12', 'year_1995', 'year_1996',
|
31 |
+
'year_1997', 'year_1998', 'year_1999', 'year_2000', 'year_2001', 'year_2002',
|
32 |
+
'year_2003', 'year_2004', 'year_2005', 'year_2006', 'year_2007', 'year_2008',
|
33 |
+
'year_2009', 'year_2010', 'year_2011', 'year_2012', 'year_2013', 'year_2014'
|
34 |
+
]
|
35 |
+
|
36 |
+
# Streamlit uygulaması
|
37 |
+
st.title('Restoran Gelir Tahmini')
|
38 |
+
|
39 |
+
# Kullanıcıdan girdi al
|
40 |
+
st.sidebar.header('Girdi Bilgileri')
|
41 |
+
|
42 |
+
# Kullanıcıdan alınacak temel girdiler
|
43 |
+
P_values = {}
|
44 |
+
for i in range(1, 11): # P1'den P10'a kadar
|
45 |
+
P_values[f'P{i}'] = st.sidebar.number_input(f'P{i} Değeri', min_value=0)
|
46 |
+
|
47 |
+
# Kullanıcıdan yıl bilgisi
|
48 |
+
year = st.sidebar.selectbox('Yıl', options=[2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014])
|
49 |
+
|
50 |
+
# Kullanıcıdan şehir bilgisi
|
51 |
+
cities = [f'City_{city}' for city in [
|
52 |
+
'Adana', 'Afyonkarahisar', 'Aksaray', 'Amasya', 'Ankara', 'Antalya', 'Artvin',
|
53 |
+
'Aydın', 'Balıkesir', 'Batman', 'Bilecik', 'Bolu', 'Bursa', 'Denizli',
|
54 |
+
'Diyarbakır', 'Düzce', 'Edirne', 'Elazığ', 'Erzincan', 'Erzurum', 'Eskişehir',
|
55 |
+
'Gaziantep', 'Giresun', 'Hatay', 'Isparta', 'Kahramanmaraş', 'Karabük',
|
56 |
+
'Kars', 'Kastamonu', 'Kayseri', 'Kocaeli', 'Konya', 'Kütahya', 'Kırklareli',
|
57 |
+
'Kırıkkale', 'Kırşehir', 'Malatya', 'Manisa', 'Mardin', 'Mersin', 'Muğla',
|
58 |
+
'Nevşehir', 'Niğde', 'Ordu', 'Osmaniye', 'Rize', 'Sakarya', 'Samsun', 'Siirt',
|
59 |
+
'Sivas', 'Tanımsız', 'Tekirdağ', 'Tokat', 'Trabzon', 'Uşak', 'Yalova', 'Zonguldak',
|
60 |
+
'Çanakkale', 'Çankırı', 'Çorum', 'İstanbul', 'İzmir', 'Şanlıurfa'
|
61 |
+
]]
|
62 |
+
|
63 |
+
# Şehir seçim kutusu
|
64 |
+
selected_city = st.sidebar.selectbox('Şehir Seçin', options=cities)
|
65 |
+
input_data = {**P_values}
|
66 |
+
|
67 |
+
# Yıla göre one-hot encoding (sadece yıl bilgisi)
|
68 |
+
for y in range(2005, 2015):
|
69 |
+
input_data[f'year_{y}'] = int(year == y)
|
70 |
+
|
71 |
+
# Şehir için one-hot encoding
|
72 |
+
for city in cities:
|
73 |
+
input_data[city] = int(city == selected_city)
|
74 |
+
|
75 |
+
# Gerekli özellikleri ekle
|
76 |
+
input_df = pd.DataFrame(input_data, index=[0])
|
77 |
+
|
78 |
+
# Kullanıcıdan alınan girdilere göre tahmin yap
|
79 |
+
if st.button("Tahmin Et"):
|
80 |
+
# Özelliklerin tam listesine uygun şekilde eksik olanları sıfırla
|
81 |
+
for feature in feature_names:
|
82 |
+
if feature not in input_df.columns:
|
83 |
+
input_df[feature] = 0
|
84 |
+
|
85 |
+
# Sütunları doğru sırada ayarlayın
|
86 |
+
input_df = input_df[feature_names]
|
87 |
+
|
88 |
+
prediction = model.predict(input_df) # Sadece gerekli özellikleri kullan
|
89 |
+
st.success(f'Tahmin Edilen Gelir: ${prediction[0]:.2f}')
|
requirements.txt
ADDED
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
streamlit
|
2 |
+
tensorflow
|
3 |
+
opencv-python
|
4 |
+
scikit-learn
|
5 |
+
torch
|
6 |
+
torchvision
|
7 |
+
matplotlib
|
8 |
+
transformers
|
9 |
+
sentencepiece
|
10 |
+
plotly
|
11 |
+
xgboost
|
12 |
+
joblib
|
restaurant_revenue_model.joblib
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:f7dafe67fe19eda2a2825dc693fa0d99f39a9c4904042fd4a28bc761938d3a02
|
3 |
+
size 1262289
|