Kwackwon101 commited on
Commit
f09c051
·
verified ·
1 Parent(s): 69c6c30

requirements.txt

Browse files

streamlit==1.32.2
numpy==1.26.4
tensorflow==2.16.1
pandas==2.2.1
plotly==5.18.0
scikit-learn==1.4.0

Files changed (1) hide show
  1. app.py +117 -0
app.py ADDED
@@ -0,0 +1,117 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import numpy as np
3
+ import pandas as pd
4
+ import tensorflow as tf
5
+ from tensorflow.keras.models import Sequential
6
+ from tensorflow.keras.layers import LSTM, Dense, Dropout
7
+ from sklearn.preprocessing import MinMaxScaler
8
+ import plotly.graph_objs as go
9
+
10
+ # إعدادات الصفحة
11
+ st.set_page_config(
12
+ page_title="Aviator AI",
13
+ layout="wide",
14
+ initial_sidebar_state="collapsed"
15
+ )
16
+
17
+ # إعدادات النموذج
18
+ WINDOW_SIZE = 3
19
+ EPOCHS = 50
20
+ BATCH_SIZE = 2
21
+
22
+ # إعداد حالة الجلسة
23
+ if "values" not in st.session_state:
24
+ st.session_state.values = []
25
+ if "model" not in st.session_state:
26
+ st.session_state.model = None
27
+ if "scaler" not in st.session_state:
28
+ st.session_state.scaler = MinMaxScaler(feature_range=(0, 1))
29
+
30
+ # وظائف التحكم
31
+ def prepare_data(data):
32
+ scaled_data = st.session_state.scaler.fit_transform(np.array(data).reshape(-1,1))
33
+ X, y = [], []
34
+ for i in range(len(scaled_data)-WINDOW_SIZE):
35
+ X.append(scaled_data[i:i+WINDOW_SIZE, 0])
36
+ y.append(scaled_data[i+WINDOW_SIZE, 0])
37
+ return np.array(X), np.array(y)
38
+
39
+ def build_model():
40
+ model = Sequential([
41
+ LSTM(64, activation='relu', input_shape=(WINDOW_SIZE, 1)),
42
+ Dropout(0.2),
43
+ Dense(32, activation='relu'),
44
+ Dense(1)
45
+ ])
46
+ model.compile(
47
+ optimizer=tf.keras.optimizers.Adam(learning_rate=0.001),
48
+ loss='mse'
49
+ )
50
+ return model
51
+
52
+ # واجهة المستخدم
53
+ st.title("تنبؤات Aviator AI")
54
+ st.markdown("أدخل القيم ثم اضغط على زر الإضافة")
55
+
56
+ col1, col2 = st.columns([3, 1])
57
+ with col1:
58
+ new_value = st.number_input("القيمة الجديدة:", format="%.2f", key="input")
59
+
60
+ with col2:
61
+ if st.button("اضف"):
62
+ st.session_state.values.append(new_value)
63
+ st.rerun()
64
+ if st.button("مسح"):
65
+ st.session_state.values = []
66
+ st.session_state.model = None
67
+ st.rerun()
68
+
69
+ # عرض البيانات
70
+ if len(st.session_state.values) > 0:
71
+ st.subheader("الرسم البياني")
72
+ df = pd.DataFrame(st.session_state.values, columns=['القيم'])
73
+ fig = go.Figure()
74
+ fig.add_trace(go.Scatter(
75
+ x=df.index,
76
+ y=df['القيم'],
77
+ mode='lines+markers',
78
+ name='البيانات الفعلية',
79
+ line=dict(color='blue')
80
+ )
81
+ st.plotly_chart(fig, use_container_width=True)
82
+
83
+ # التدريب والتنبؤ
84
+ if len(st.session_state.values) >= WINDOW_SIZE + 1:
85
+ try:
86
+ X, y = prepare_data(st.session_state.values)
87
+ X = X.reshape((X.shape[0], X.shape[1], 1))
88
+
89
+ if st.session_state.model is None:
90
+ st.session_state.model = build_model()
91
+
92
+ history = st.session_state.model.fit(
93
+ X, y,
94
+ epochs=EPOCHS,
95
+ batch_size=BATCH_SIZE,
96
+ verbose=0
97
+ )
98
+
99
+ last_sequence = st.session_state.scaler.transform(
100
+ np.array(st.session_state.values[-WINDOW_SIZE:]).reshape(-1,1)
101
+ ).reshape(1, WINDOW_SIZE, 1)
102
+
103
+ predicted_scaled = st.session_state.model.predict(last_sequence, verbose=0)
104
+ prediction = st.session_state.scaler.inverse_transform(predicted_scaled)[0][0]
105
+
106
+ st.success(f"التنبؤ القادم: {prediction:.2f}x")
107
+ st.markdown(f"آخر 3 قيم: {st.session_state.values[-3:]}")
108
+
109
+ except Exception as e:
110
+ st.error(f"حدث خطأ: {str(e)}")
111
+
112
+ elif len(st.session_state.values) > 0:
113
+ needed = WINDOW_SIZE + 1 - len(st.session_state.values)
114
+ st.warning(f"أدخل {needed} قيم أخرى لبدء التنبؤات")
115
+
116
+ st.markdown("---")
117
+ st.caption("الإصدار 3.0 | تم التطوير بواسطة الذكاء الصناعي")