SelvaMech's picture
Update README.md
4d53847 verified
|
Raw
History Blame Contribute Delete
5 kB
---
license: mit
tags:
- regression
- scikit-learn
- linear-regression
- electricity-consumption
- tabular
library_name: scikit-learn
---
# Electricity Bill Regression Model
A Linear Regression model that predicts a household's daily electricity consumption (kWh) from appliance usage hours. Used to power a "what-if" electricity bill calculator, deployed as a Streamlit app.
## Model Description
- **Model type:** Linear Regression (scikit-learn, OLS)
- **Task:** Regression - predicts `Daily_kWh` from 13 appliance usage-hour features
- **Preprocessing:** Features are scaled using `StandardScaler` before being passed to the model
- **Files included:**
- `linear_regression_model.pkl` - the trained regression model
- `scaler.pkl` - the fitted StandardScaler (must be used to transform any new input before prediction)
- `feature_columns.pkl` - the exact list and order of input feature names the model expects
## Intended Use
Given a household's typical daily appliance usage hours, this model estimates daily electricity consumption. That estimate can then be scaled to a full month and passed through a fixed slab-based electricity tariff formula (LT Commercial tariff) to estimate a monthly bill. The tariff calculation itself is NOT part of this model, it is applied separately after prediction, since it is a fixed government rate structure, not a learned relationship.
## Input Features
The model expects 13 numeric features, in this exact order (see `feature_columns.pkl` for the authoritative list):
`AC_Hours`, `Fridge_Hours`, `Heater_Hours`, `Fan_Hours`, `Light_Hours`, `NightLamp_Hours`, `LEDBulb_Hours`, `TV_Hours`, `WashingMachine_Hours`, `Chimney_Hours`, `Mixer_Hours`, `Grinder_Hours`, `InductionStove_Hours`
Each represents hours of use per day (0-24) for that appliance.
## Training Data
Trained on a synthetically generated dataset simulating 9 years (2017-2025) of daily electricity usage for a single household, ~3,269 rows after cleaning (missing values dropped, invalid negative values removed, outliers removed using the IQR method).
Note: `Daily_kWh` in the training data was generated using a deterministic formula (hours x fixed appliance wattage), with no added noise. This means the model achieves a very high (near 100%) R-Squared score on this dataset, which reflects the noise-free nature of the training data rather than an unusually strong real-world model. On genuine smart-meter data with natural variance, performance would be expected to be lower.
## How to Use
This model predicts only **daily electricity consumption (kWh)**. It does not predict the monthly bill directly, since bill calculation depends on a fixed government tariff formula (slab-based rates), not something a model should learn. The example below shows the complete pipeline: get the daily prediction from the model, scale it to a full month, then apply the tariff formula separately to get the estimated bill.
```python
from huggingface_hub import hf_hub_download
import joblib
import pandas as pd
import calendar
REPO_ID = "SelvaMech/electricity-bill-regression"
model = joblib.load(hf_hub_download(repo_id=REPO_ID, filename="linear_regression_model.pkl"))
scaler = joblib.load(hf_hub_download(repo_id=REPO_ID, filename="scaler.pkl"))
feature_columns = joblib.load(hf_hub_download(repo_id=REPO_ID, filename="feature_columns.pkl"))
# user_values must be in the same order as feature_columns
user_values = pd.DataFrame([[5, 24, 1, 8, 5, 8, 6, 3, 0.5, 0.5, 0.1, 0.1, 1]], columns=feature_columns)
scaled_input = scaler.transform(user_values)
predicted_daily_kwh = model.predict(scaled_input)[0]
# Scale to a full month (example: August 2026)
days = calendar.monthrange(2026, 8)[1]
monthly_units = predicted_daily_kwh * days
# LT Commercial slab tariff - deterministic formula, not part of the model
if monthly_units <= 100:
bill = monthly_units * 5.5 + 120
elif monthly_units <= 250:
bill = (100 * 5.5) + (monthly_units - 100) * 6.5 + 120
else:
bill = (100 * 5.5) + (150 * 6.5) + (monthly_units - 250) * 7.2 + 120
print(f"Predicted Daily kWh : {predicted_daily_kwh:.2f}")
print(f"Predicted Monthly Units : {monthly_units:.2f}")
print(f"Estimated Bill : Rs {bill:.2f}")
```
## Limitations
- Trained on synthetic, single-household data, not real smart-meter readings.
- Assumes a fixed electricity tariff rate across all years; real tariffs are revised periodically.
- Does not account for appliance efficiency (star ratings) or seasonal usage patterns as separate model inputs.
- Should not be used as a substitute for an actual utility bill; it is an educational estimation tool.
## Live Demo
Try the deployed calculator here: [(https://ebbillpredictionsampledeployment-bpne9za7xb7p2kkp7eejza.streamlit.app)]
## Author
Built by Selvanaayagam Ravy as part of a personal Data Analytics/AI portfolio project.
Full training code and dataset details: [https://github.com/selvanaayagam-tech/EB_billprediction_sample_deployment]