-
-
Notifications
You must be signed in to change notification settings - Fork 98
Increase initial training #3430
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -1112,13 +1112,13 @@ def _test_real_data_training(): | |||||||||||||||||||||||||||||||||||
| has_rates = import_rates_data and export_rates_data and len(import_rates_data) > 0 and len(export_rates_data) > 0 | ||||||||||||||||||||||||||||||||||||
| rates_info = " + import/export rates" if has_rates else "" | ||||||||||||||||||||||||||||||||||||
| print(f" Training on real load + {data_source} PV/temperature{rates_info} with {len(load_data)} points...") | ||||||||||||||||||||||||||||||||||||
| success = predictor.train(load_data, now_utc, pv_minutes=pv_data, temp_minutes=temp_data, import_rates=import_rates_data, export_rates=export_rates_data, is_initial=True, epochs=50, time_decay_days=7, validation_holdout_hours=48) | ||||||||||||||||||||||||||||||||||||
| success = predictor.train(load_data, now_utc, pv_minutes=pv_data, temp_minutes=temp_data, import_rates=import_rates_data, export_rates=export_rates_data, is_initial=True, epochs=100, time_decay_days=30, validation_holdout_hours=48, patience=20) | ||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||
| assert success, "Training on real data should succeed" | ||||||||||||||||||||||||||||||||||||
| assert predictor.model_initialized, "Model should be initialized after training" | ||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||
| success = predictor.train(load_data, now_utc, pv_minutes=pv_data, temp_minutes=temp_data, import_rates=import_rates_data, export_rates=export_rates_data, is_initial=False, epochs=50, time_decay_days=7, validation_holdout_hours=48) | ||||||||||||||||||||||||||||||||||||
| success = predictor.train(load_data, now_utc, pv_minutes=pv_data, temp_minutes=temp_data, import_rates=import_rates_data, export_rates=export_rates_data, is_initial=False, epochs=50, time_decay_days=7, validation_holdout_hours=48) | ||||||||||||||||||||||||||||||||||||
| success = predictor.train(load_data, now_utc, pv_minutes=pv_data, temp_minutes=temp_data, import_rates=import_rates_data, export_rates=export_rates_data, is_initial=False, epochs=20, time_decay_days=30, validation_holdout_hours=48, patience=10) | ||||||||||||||||||||||||||||||||||||
| success = predictor.train(load_data, now_utc, pv_minutes=pv_data, temp_minutes=temp_data, import_rates=import_rates_data, export_rates=export_rates_data, is_initial=False, epochs=20, time_decay_days=30, validation_holdout_hours=48, patience=10) | ||||||||||||||||||||||||||||||||||||
|
Comment on lines
+1120
to
+1121
|
||||||||||||||||||||||||||||||||||||
| success = predictor.train(load_data, now_utc, pv_minutes=pv_data, temp_minutes=temp_data, import_rates=import_rates_data, export_rates=export_rates_data, is_initial=False, epochs=20, time_decay_days=30, validation_holdout_hours=48, patience=10) | |
| success = predictor.train(load_data, now_utc, pv_minutes=pv_data, temp_minutes=temp_data, import_rates=import_rates_data, export_rates=export_rates_data, is_initial=False, epochs=20, time_decay_days=30, validation_holdout_hours=48, patience=10) | |
| success = predictor.train(load_data, now_utc, pv_minutes=pv_data, temp_minutes=temp_data, import_rates=import_rates_data, export_rates=export_rates_data, is_initial=False, epochs=30, time_decay_days=30, validation_holdout_hours=48, patience=10) | |
| success = predictor.train(load_data, now_utc, pv_minutes=pv_data, temp_minutes=temp_data, import_rates=import_rates_data, export_rates=export_rates_data, is_initial=False, epochs=30, time_decay_days=30, validation_holdout_hours=48, patience=10) |
Copilot
AI
Feb 24, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The Day 7 total comparison code runs unconditionally, even if shifted_load_data is empty and no validation predictions were generated. This could result in comparing actual data to an empty prediction list (sum of empty list = 0), producing misleading error metrics. Consider adding a check to only perform the Day 7 comparison when val_pred_energy is non-empty, or add a guard condition like if val_pred_energy: before the comparison block.
| actual_day7_total = sum(val_actual_energy) | |
| predicted_day7_total = sum(val_pred_energy) | |
| error_kwh = predicted_day7_total - actual_day7_total | |
| error_pct = (error_kwh / actual_day7_total * 100) if actual_day7_total > 0 else 0.0 | |
| print(f" Day 7 actual total : {actual_day7_total:.3f} kWh") | |
| print(f" Day 7 predicted total: {predicted_day7_total:.3f} kWh") | |
| print(f" Day 7 error : {error_kwh:+.3f} kWh ({error_pct:+.1f}%)") | |
| if val_pred_energy and val_actual_energy: | |
| actual_day7_total = sum(val_actual_energy) | |
| predicted_day7_total = sum(val_pred_energy) | |
| error_kwh = predicted_day7_total - actual_day7_total | |
| error_pct = (error_kwh / actual_day7_total * 100) if actual_day7_total > 0 else 0.0 | |
| print(f" Day 7 actual total : {actual_day7_total:.3f} kWh") | |
| print(f" Day 7 predicted total: {predicted_day7_total:.3f} kWh") | |
| print(f" Day 7 error : {error_kwh:+.3f} kWh ({error_pct:+.1f}%)") | |
| else: | |
| print(" Day 7 comparison skipped: no validation predictions available") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The test uses
validation_holdout_hours=48for training, but the component default isml_validation_holdout_hours = 24. This inconsistency means the test doesn't validate the actual component behavior. Consider either updating the test to use the component default of 24 hours, or documenting why the test intentionally uses a different value for more thorough validation.