Esmaeilkiani commited on
Commit
ca1f114
·
verified ·
1 Parent(s): 383b57d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +68 -18
app.py CHANGED
@@ -3,15 +3,31 @@ import pandas as pd
3
  import matplotlib.pyplot as plt
4
  import seaborn as sns
5
  import plotly.graph_objects as go
 
6
  from sklearn.linear_model import LinearRegression
7
- import numpy as np
8
 
9
- # عنوان برنامه
10
  st.set_page_config(page_title="اداره زراعت و کنترل محصول", layout="wide")
11
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  # نوار کناری
13
  st.sidebar.title("منو")
14
- menu = st.sidebar.selectbox("انتخاب کنید", ["نمایش چارت‌ها", "پیش بینی رشد مزارع نیشکر با استفاده از ماشین لرنینگ", "چت بات"])
15
 
16
  # چت بات
17
  if menu == "چت بات":
@@ -21,27 +37,21 @@ if menu == "چت بات":
21
  window.botpressWebChat.init({
22
  hostUrl: "https://cdn.botpress.cloud/webchat/v2",
23
  messagingUrl: "https://mediafiles.botpress.cloud/29d24895-b0fa-4941-a3c4-8afa638f8b28",
24
- botId: "29d24895-b0fa-4941-a3c4-8afa638f8b28",
25
  })
26
  </script>
27
  """, unsafe_allow_html=True)
28
 
29
- # بارگذاری داده‌ها یکبار برای همیشه
30
- if 'crop_data' not in st.session_state:
31
- uploaded_crop_file = st.sidebar.file_uploader("فایل داده‌های رشد و ارتفاع را آپلود کنید", type="csv")
32
- if uploaded_crop_file:
33
- st.session_state.crop_data = pd.read_csv(uploaded_crop_file)
34
-
35
- if 'weather_data' not in st.session_state:
36
- uploaded_weather_file = st.sidebar.file_uploader("فایل داده‌های هواشناسی را آپلود کنید", type="csv")
37
- if uploaded_weather_file:
38
- st.session_state.weather_data = pd.read_csv(uploaded_weather_file)
39
-
40
  # نمایش چارت‌ها
41
- if menu == "نمایش چارت‌ها":
42
  st.title("نمایش چارت‌ها و نمودارهای رشد و ارتفاع مزارع نیشکر")
43
 
44
- if 'crop_data' in st.session_state:
 
 
 
 
 
45
  crop_data = st.session_state.crop_data
46
 
47
  farms = crop_data['مزرعه'].unique()
@@ -57,5 +67,45 @@ if menu == "نمایش چارت‌ها":
57
  ax[0].set_xlabel("هفته")
58
  ax[0].set_ylabel("رشد")
59
 
60
- sns.lineplot(x="هفته", y="ارتفاع", data=farm_data, ax=ax[
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
61
 
 
3
  import matplotlib.pyplot as plt
4
  import seaborn as sns
5
  import plotly.graph_objects as go
6
+ from sklearn.model_selection import train_test_split
7
  from sklearn.linear_model import LinearRegression
 
8
 
9
+ # تنظیمات صفحه
10
  st.set_page_config(page_title="اداره زراعت و کنترل محصول", layout="wide")
11
 
12
+ # تابع پیش‌بینی
13
+ def predict_growth(crop_data, weeks_to_predict=8):
14
+ X = crop_data[['هفته', 'رشد']].dropna().values
15
+ y = crop_data['رشد'].dropna().values
16
+
17
+ model = LinearRegression()
18
+ model.fit(X, y)
19
+
20
+ future_weeks = [[week, crop_data[crop_data['هفته'] == week]['رشد'].mean()] for week in range(1, weeks_to_predict + 1)]
21
+ future_weeks_df = pd.DataFrame(future_weeks, columns=['هفته', 'رشد'])
22
+
23
+ predictions = model.predict(future_weeks_df)
24
+
25
+ future_weeks_df['پیش‌بینی رشد'] = predictions
26
+ return future_weeks_df
27
+
28
  # نوار کناری
29
  st.sidebar.title("منو")
30
+ menu = st.sidebar.selectbox("انتخاب کنید", ["نمایش چارت‌ها", "پیش‌بینی رشد مزارع نیشکر با استفاده از ماشین لرنینگ", "چت بات"])
31
 
32
  # چت بات
33
  if menu == "چت بات":
 
37
  window.botpressWebChat.init({
38
  hostUrl: "https://cdn.botpress.cloud/webchat/v2",
39
  messagingUrl: "https://mediafiles.botpress.cloud/29d24895-b0fa-4941-a3c4-8afa638f8b28",
40
+ botId: "your-bot-id",
41
  })
42
  </script>
43
  """, unsafe_allow_html=True)
44
 
 
 
 
 
 
 
 
 
 
 
 
45
  # نمایش چارت‌ها
46
+ elif menu == "نمایش چارت‌ها":
47
  st.title("نمایش چارت‌ها و نمودارهای رشد و ارتفاع مزارع نیشکر")
48
 
49
+ if 'crop_data' not in st.session_state:
50
+ uploaded_file = st.file_uploader("فایل داده‌های رشد و ارتفاع را آپلود کنید", type="csv")
51
+ if uploaded_file:
52
+ st.session_state.crop_data = pd.read_csv(uploaded_file)
53
+ st.write("داده‌های رشد و ارتفاع بارگذاری شد.")
54
+ else:
55
  crop_data = st.session_state.crop_data
56
 
57
  farms = crop_data['مزرعه'].unique()
 
67
  ax[0].set_xlabel("هفته")
68
  ax[0].set_ylabel("رشد")
69
 
70
+ sns.lineplot(x="هفته", y="ارتفاع", data=farm_data, ax=ax[1])
71
+ ax[1].set_title("ارتفاع گیاه")
72
+ ax[1].set_xlabel("هفته")
73
+ ax[1].set_ylabel("ارتفاع")
74
+
75
+ st.pyplot(fig)
76
+
77
+ st.subheader("نمودار سه بعدی ارتفاع گیاه")
78
+ fig = go.Figure(data=[go.Surface(z=farm_data.pivot(index='هفته', columns='مزرعه', values='ارتفاع').values)])
79
+ fig.update_layout(title='نمودار سه بعدی ارتفاع گیاه', autosize=True,
80
+ scene=dict(zaxis_title='ارتفاع', xaxis_title='هفته', yaxis_title='مزرعه'))
81
+ st.plotly_chart(fig)
82
+
83
+ # پیش‌بینی رشد مزارع نیشکر با استفاده از ماشین لرنینگ
84
+ elif menu == "پیش‌بینی رشد مزارع نیشکر با استفاده از ماشین لرنینگ":
85
+ st.title("پیش‌بینی رشد مزارع نیشکر با استفاده از ماشین لرنینگ")
86
+
87
+ if 'crop_data' not in st.session_state:
88
+ uploaded_file = st.file_uploader("فایل داده‌های رشد و ارتفاع را آپلود کنید", type="csv")
89
+ if uploaded_file:
90
+ st.session_state.crop_data = pd.read_csv(uploaded_file)
91
+ st.write("داده‌های رشد و ارتفاع بارگذاری شد.")
92
+ else:
93
+ crop_data = st.session_state.crop_data
94
+
95
+ farms = crop_data['مزرعه'].unique()
96
+ selected_farm = st.selectbox("انتخاب مزرعه", farms)
97
+
98
+ farm_data = crop_data[crop_data['مزرعه'] == selected_farm]
99
+ predicted_growth = predict_growth(farm_data)
100
+
101
+ st.subheader("پیش‌بینی رشد برای هفته هشتم")
102
+ st.write(predicted_growth)
103
+
104
+ st.subheader("نمودار رشد پیش‌بینی شده")
105
+ fig, ax = plt.subplots(figsize=(10, 6))
106
+ sns.lineplot(x=predicted_growth['هفته'], y=predicted_growth['پیش‌بینی رشد'], ax=ax)
107
+ ax.set_title("رشد پیش‌بینی شده")
108
+ ax.set_xlabel("هفته")
109
+ ax.set_ylabel("رشد پیش‌بینی شده")
110
+ st.pyplot(fig)
111