DeepSeek/LSTM.6x45
Чтобы улучшить модель предсказания лотерейных чисел, предлагаю комплексный подход, сочетающий технические улучшения и анализ закономерностей. Вот конкретные шаги:
1. Улучшение данных Добавьте временные признаки:
# В calculate_additional_features()
features['days_since_last'] = (draws['date'].iloc[i] - draws['date'].iloc[i-1]).days if i > 0 else 0
features['day_of_week'] = draws['date'].iloc[i].weekday()
Глубина статистики:
# Замените window_size=100 на динамическое окно
window_size = min(100, i) # Для начальных тиражей
2. Усовершенствованная архитектура модели Добавьте механизм внимания:
from tensorflow.keras.layers import Attention
# После LSTM слоев:
attention = Attention()([lstm_layer, lstm_layer])
combined = Concatenate()([lstm_layer, attention, features_input])
Оптимизация гиперпараметров:
from kerastuner import HyperModel
class LotteryHyperModel(HyperModel):
def build(self, hp):
# Тестируем разные конфигурации
num_layers = hp.Int('num_layers', 1, 3)
units = hp.Choice('units', [64, 128, 256])
dropout = hp.Float('dropout', 0.1, 0.5)
# Строим модель с этими параметрами
...
3. Постобработка предсказаний Фильтрация нереалистичных комбинаций:
def filter_combination(comb):
# Проверка четности (3 четных и 3 нечетных)
even = sum(1 for num in comb if num % 2 == 0)
# Проверка суммы (средняя ~138)
sum_ok = 120 <= sum(comb) <= 160
# Проверка распределения по десяткам
tens = [num//10 for num in comb]
unique_tens = len(set(tens))
return even == 3 and sum_ok and unique_tens >= 4
4. Альтернативные подходы Ансамбль моделей:
# LSTM + Gradient Boosting
from sklearn.ensemble import GradientBoostingRegressor
# Обучаем GBM на тех же признаках
gbm = GradientBoostingRegressor()
gbm.fit(X_feat_scaled, y_scaled)
# Комбинируем предсказания
lstm_pred = model.predict([X_seq_test, X_feat_test])
gbm_pred = gbm.predict(X_feat_test)
final_pred = 0.7 * lstm_pred + 0.3 * gbm_pred # Взвешенное среднее
5. Анализ результатов Визуализация важности признаков:
import seaborn as sns
# Для GBM модели
feature_importance = gbm.feature_importances_
sns.barplot(x=feature_importance, y=['hot_count', 'cold_count', 'last_seen', 'frequency'])
Точность по позициям:
# Проверяем, на каких позициях чаще угадываем
position_accuracy = []
for pos in range(6):
correct = sum(1 for pred, real in zip(predictions, y_test) if pred[pos] in real)
position_accuracy.append(correct/len(y_test))
plt.bar(range(1,7), position_accuracy)
plt.title('Точность по позициям')
6. Регулярное обновление Автоматический пайплайн:
# Еженедельное обновление
import schedule
import time
def weekly_job():
update_data()
retrain_model()
make_predictions()
schedule.every().week.do(weekly_job)
while True:
schedule.run_pending()
time.sleep(1)
Ключевые улучшения: Гибридная архитектура - комбинаци