|
|
""" |
|
|
Example usage of Energy Consumption Prediction Model |
|
|
Download this file along with model.py and energy_model_latest.joblib |
|
|
""" |
|
|
|
|
|
import pandas as pd |
|
|
import numpy as np |
|
|
from datetime import datetime |
|
|
import os |
|
|
|
|
|
def main(): |
|
|
|
|
|
model_path = 'energy_model_latest.joblib' |
|
|
if not os.path.exists(model_path): |
|
|
print(f"Error: {model_path} not found!") |
|
|
print("Please download energy_model_latest.joblib from this repository") |
|
|
return |
|
|
|
|
|
|
|
|
from model import EnergyConsumptionPredictor |
|
|
|
|
|
print("Loading energy consumption prediction model...") |
|
|
model = EnergyConsumptionPredictor.from_file(model_path) |
|
|
|
|
|
print(f"Model loaded successfully: {model.best_model_name}") |
|
|
print(f"Features used: {len(model.feature_columns)}") |
|
|
|
|
|
|
|
|
months_to_predict = 6 |
|
|
print(f"\nPredicting energy consumption for next {months_to_predict} months...") |
|
|
|
|
|
predictions = model.predict_future(months=months_to_predict) |
|
|
|
|
|
|
|
|
print("\n" + "="*60) |
|
|
print("ENERGY CONSUMPTION PREDICTIONS") |
|
|
print("="*60) |
|
|
|
|
|
total_consumption = predictions['Predicted_Consumption'].sum() |
|
|
total_cost = predictions['Predicted_Cost'].sum() |
|
|
avg_consumption = total_consumption / months_to_predict |
|
|
avg_cost = total_cost / months_to_predict |
|
|
|
|
|
print(f"Total predicted consumption: {total_consumption:.0f} kWh") |
|
|
print(f"Total predicted cost: {total_cost:.0f} PLN") |
|
|
print(f"Average monthly consumption: {avg_consumption:.0f} kWh") |
|
|
print(f"Average monthly cost: {avg_cost:.0f} PLN") |
|
|
|
|
|
print(f"\nMonthly breakdown:") |
|
|
print("-" * 55) |
|
|
print(f"{'Month':<15} {'Consumption':<15} {'Cost (PLN)'}") |
|
|
print("-" * 55) |
|
|
|
|
|
for _, row in predictions.iterrows(): |
|
|
month_name = row['Date'].strftime('%B %Y') |
|
|
consumption = row['Predicted_Consumption'] |
|
|
cost = row['Predicted_Cost'] |
|
|
print(f"{month_name:<15} {consumption:>8.0f} kWh {cost:>12.0f}") |
|
|
|
|
|
print("-" * 55) |
|
|
|
|
|
|
|
|
importance = model.get_feature_importance() |
|
|
if importance: |
|
|
print(f"\nTop 5 most important prediction features:") |
|
|
for i, (feature, score) in enumerate(list(importance.items())[:5], 1): |
|
|
print(f" {i}. {feature}: {score:.3f}") |
|
|
|
|
|
|
|
|
output_file = 'energy_predictions.csv' |
|
|
predictions.to_csv(output_file, index=False) |
|
|
print(f"\nPredictions saved to: {output_file}") |
|
|
|
|
|
return predictions |
|
|
|
|
|
if __name__ == "__main__": |
|
|
print("Energy Consumption Prediction Model - Example Usage") |
|
|
print("=" * 55) |
|
|
print("Required files: model.py, energy_model_latest.joblib") |
|
|
print("=" * 55) |
|
|
|
|
|
try: |
|
|
predictions = main() |
|
|
print(f"\n✓ Success! Generated {len(predictions)} monthly predictions") |
|
|
except Exception as e: |
|
|
print(f"\n✗ Error: {str(e)}") |
|
|
print("\nMake sure you have:") |
|
|
print("1. model.py") |
|
|
print("2. energy_model_latest.joblib") |
|
|
print("3. Required packages: pandas, numpy, scikit-learn, joblib") |
|
|
|