Kwackwon101 commited on
Commit
be25142
·
verified ·
1 Parent(s): 2c02a83

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 +107 -0
APP.PY ADDED
@@ -0,0 +1,107 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
7
+ from sklearn.preprocessing import MinMaxScaler
8
+ import plotly.express as px
9
+
10
+ # إعدادات الصفحة
11
+ st.set_page_config(
12
+ page_title="Aviator Predictor",
13
+ layout="wide",
14
+ initial_sidebar_state="collapsed"
15
+ )
16
+
17
+ # إعدادات النموذج
18
+ WINDOW_SIZE = 2 # تم التخفيض لتقليل استهلاك الذاكرة
19
+ EPOCHS = 30 # تم التخفيض لتسريع التدريب
20
+
21
+ # إعداد حالة الجلسة
22
+ if "values" not in st.session_state:
23
+ st.session_state.values = []
24
+ if "model" not in st.session_state:
25
+ st.session_state.model = None
26
+ if "scaler" not in st.session_state:
27
+ st.session_state.scaler = MinMaxScaler(feature_range=(0, 1))
28
+
29
+ # وظائف التحكم
30
+ def prepare_data(data):
31
+ scaled_data = st.session_state.scaler.fit_transform(np.array(data).reshape(-1,1))
32
+ X, y = [], []
33
+ for i in range(len(scaled_data)-WINDOW_SIZE):
34
+ X.append(scaled_data[i:i+WINDOW_SIZE, 0])
35
+ y.append(scaled_data[i+WINDOW_SIZE, 0])
36
+ return np.array(X), np.array(y)
37
+
38
+ def build_model():
39
+ model = Sequential([
40
+ LSTM(32, activation='relu', input_shape=(WINDOW_SIZE, 1)), # تم التبسيط
41
+ Dense(1)
42
+ ])
43
+ model.compile(
44
+ optimizer='adam',
45
+ loss='mse'
46
+ )
47
+ return model
48
+
49
+ # واجهة المستخدم
50
+ st.title("🛩 Aviator Predictor Pro")
51
+ st.markdown("أدخل القيم (مثال: 1.23) ثم اضغط إضافة")
52
+
53
+ col1, col2 = st.columns([3, 1])
54
+ with col1:
55
+ new_value = st.number_input("القيمة الجديدة:", format="%.2f", key="input", step=0.1)
56
+
57
+ with col2:
58
+ if st.button("➕ إضافة"):
59
+ st.session_state.values.append(float(new_value))
60
+ st.rerun()
61
+ if st.button("🗑️ مسح البيانات"):
62
+ st.session_state.values = []
63
+ st.session_state.model = None
64
+ st.rerun()
65
+
66
+ # عرض البيانات
67
+ if len(st.session_state.values) > 0:
68
+ st.subheader("📊 التطور التاريخي")
69
+ df = pd.DataFrame({'القيم': st.session_state.values})
70
+ fig = px.line(df, y='القيم', markers=True)
71
+ st.plotly_chart(fig, use_container_width=True)
72
+
73
+ # التدريب والتنبؤ
74
+ if len(st.session_state.values) >= WINDOW_SIZE + 1:
75
+ try:
76
+ X, y = prepare_data(st.session_state.values)
77
+ X = X.reshape((X.shape[0], X.shape[1], 1))
78
+
79
+ if st.session_state.model is None:
80
+ st.session_state.model = build_model()
81
+
82
+ history = st.session_state.model.fit(
83
+ X, y,
84
+ epochs=EPOCHS,
85
+ verbose=0
86
+ )
87
+
88
+ last_sequence = st.session_state.scaler.transform(
89
+ np.array(st.session_state.values[-WINDOW_SIZE:]).reshape(-1,1)
90
+ ).reshape(1, WINDOW_SIZE, 1)
91
+
92
+ prediction = st.session_state.scaler.inverse_transform(
93
+ st.session_state.model.predict(last_sequence, verbose=0)
94
+ )[0][0]
95
+
96
+ st.success(f"التنبؤ للجولة القادمة: {prediction:.2f}x")
97
+ st.info(f"آخر {WINDOW_SIZE} قيم: {st.session_state.values[-WINDOW_SIZE:]}")
98
+
99
+ except Exception as e:
100
+ st.error(f"حدث خطأ تقني: {str(e)}")
101
+
102
+ elif len(st.session_state.values) > 0:
103
+ needed = WINDOW_SIZE + 1 - len(st.session_state.values)
104
+ st.warning(f"أدخل {needed} قيم أخرى لبدء التنبؤات")
105
+
106
+ st.markdown("---")
107
+ st.caption("الإصدار 4.0 | تم التطوير باستخدام خوارزميات التعلم العميق")