Improve generator quality and fix data gaps (Apr-May 2026)

Data:
- Add 12 missing draws (2026-01-09, 2026-04-03 to 2026-05-15)
- Retrain LSTM and RF models on complete 952-draw dataset
- Run retroactive learning for all 12 skipped draws

Automation:
- Add eurojackpot-zahlen.eu web scraper as fallback when APIs fail
- Fixes recurring gap problem caused by Sazka detail-endpoint change

Generator improvements:
- Add hard structural filters (sum 95-165, min 1 even + 1 odd per tip)
- Add long-term frequency prior as learner dampener (alpha=0.2)
- Fix ENSEMBLE strategy generating duplicate tips (greedy → weighted random)
- Fix non-vectorized frequency calculation (stack().value_counts())
- Fix Division-by-Zero edge case in set_frequency_prior
- Fix potential KeyError on euro_ai_score in structural filter loop

.gitignore:
- Exclude data/backups/, weekly tip CSVs, performance reports

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
cbazzaandClaude Sonnet 4.6 committed 2026-05-19 10:35:57 +02:00
1 parent 98a74ff2a7
commit 4fc488c668
13 files changed
+1022 -112

No files matched your search

+11 -1
View File
@@ -27,6 +27,7 @@ project_dir = os.path.dirname(os.path.dirname(script_dir))
sys.path.insert(0, project_dir)
from scripts.utils.update_from_api import EurojackpotAPIUpdater
from scripts.utils.update_from_eurojackpot_zahlen_eu import EurojackpotUpdater as WebScraper
from scripts.generators.ultimate_ai_ml_eurojackpot_generator import UltimateAIMLEurojackpotGenerator
from scripts.utils.notifier import EurojackpotNotifier
@@ -129,7 +130,16 @@ class AutoUpdateAndLearn:
if success:
print(" ✅ Daten erfolgreich aktualisiert")
else:
print(" ⚠️ Update ohne neue Daten")
print(" ⚠️ API-Update ohne neue Daten, versuche Web-Scraper...")
try:
scraper = WebScraper(self.data_file)
success = scraper.update(create_backup=False)
if success:
print(" ✅ Web-Scraper erfolgreich")
else:
print(" ⚠️ Web-Scraper ohne neue Daten")
except Exception as scrape_err:
print(f" ❌ Web-Scraper Fehler: {scrape_err}")
return success