Add Deep Learning (LSTM) + Quick Wins automation features

Major improvements:
- Deep Learning integration with PyTorch LSTM (dual models: main 1-50 + euro 1-12)
- Hybrid predictor: 40% RandomForest + 60% Deep Learning
- LaunchAgent for automatic weekly tip generation (Mon/Thu 21:00)
- Health-Check system with auto-recovery and Telegram alerts
- Fixed health checks for Eurojackpot-specific paths and file names
- Model caching and intelligent retraining logic
- Updated CSV data and generated tips
- Performance reports for recent draws

Technical details:
- PyTorch used instead of TensorFlow (Python 3.14 compatibility)
- Separate LSTM models for main numbers (1-50) and euro numbers (1-12)
- Apple Silicon MPS acceleration support
- Sequence learning with 20-draw history
- Health-check adapted for eurojackpot_ml_models/ and learning_log.json

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-07 09:22:36 +01:00
co-authored by Claude Sonnet 4.5
parent 70e0638dee
commit 9049a66c1a
36 changed files with 9308 additions and 61 deletions
@@ -0,0 +1,9 @@
{
"trained_at": "2026-01-06T21:00:43.268063",
"num_samples": 895,
"num_features": 20,
"final_loss": 0.3324819803237915,
"final_val_loss": 0.3310294995705287,
"best_val_loss": 0.3291587332884471,
"epochs_trained": 25
}
@@ -0,0 +1,9 @@
{
"trained_at": "2026-01-06T21:00:33.679894",
"num_samples": 895,
"num_features": 20,
"final_loss": 0.33361901148505835,
"final_val_loss": 0.33026839792728424,
"best_val_loss": 0.32894887030124664,
"epochs_trained": 21
}
@@ -0,0 +1,78 @@
{
"adjustments_main": {
"1": -0.014850499375000001,
"2": -0.014850499375000001,
"3": -0.014850499375000001,
"4": -0.014850499375000001,
"5": -0.014850499375000001,
"6": -0.014850499375000001,
"7": -0.014850499375000001,
"8": -0.014850499375000001,
"9": -0.014850499375000001,
"10": 0.014775998750000002,
"11": -0.014850499375000001,
"12": -0.014850499375000001,
"13": -0.014850499375000001,
"14": -0.014850499375000001,
"15": 0.014775998750000002,
"16": -0.014850499375000001,
"17": -0.014850499375000001,
"18": -0.014850499375000001,
"19": -0.014850499375000001,
"20": -0.014850499375000001,
"21": 7.450062499999855e-05,
"22": -0.014850499375000001,
"23": 7.450062499999855e-05,
"24": -0.014850499375000001,
"25": -0.014850499375000001,
"26": -0.014850499375000001,
"27": -0.014850499375000001,
"28": -0.014850499375000001,
"29": 0.014775998750000002,
"30": 7.450062499999855e-05,
"31": -0.014850499375000001,
"32": -0.014850499375000001,
"33": 7.450062499999855e-05,
"34": 0.014775998750000002,
"35": -0.014850499375000001,
"36": -0.014850499375000001,
"37": -0.014850499375000001,
"38": 0.029700998750000002,
"39": -0.014850499375000001,
"40": -0.014850499375000001,
"41": -0.014850499375000001,
"42": -0.014850499375000001,
"43": -0.014850499375000001,
"44": -0.014850499375000001,
"45": -0.014850499375000001,
"46": -0.014850499375000001,
"47": -0.014850499375000001,
"48": -0.014850499375000001,
"49": -0.014850499375000001,
"50": -0.014850499375000001
},
"adjustments_euro": {
"1": -0.014850499375000001,
"2": 0.014775998750000002,
"3": -0.014850499375000001,
"4": -0.014850499375000001,
"5": -0.014850499375000001,
"6": -0.014850499375000001,
"7": -0.014850499375000001,
"8": 7.450062499999855e-05,
"9": 0.014775998750000002,
"10": -0.014850499375000001,
"11": -0.014850499375000001,
"12": 7.450062499999855e-05
},
"stats": {
"incorrect_main": 135,
"correct_main": 15,
"incorrect_euro": 30,
"correct_euro": 6,
"cycles": 3,
"last_update": "2026-01-06T21:00:43.269037"
},
"learning_rate": 0.1,
"last_saved": "2026-01-06T21:00:43.269127"
}
Binary file not shown.