bajiang/Electricity_Price_Predictor_Random_Forest_Regression
๐ Electricity Price Predictor (Random Forest Regression)
This is a custom regression model trained to predict electricity prices ($/kWh) in California, based on a variety of grid-level and environmental features such as EV charging demand, solar/wind production, carbon emissions, and storage indicators.
The model is trained using RandomForestRegressor from scikit-learn, with 24 engineered features and a structured tabular dataset. This project is intended to support intelligent energy systems, such as EV charging optimization, energy scheduling, or smart grid simulation.
๐ Model Details
- ๐ Model: RandomForestRegressor (n_estimators=200)
- ๐ง Framework: scikit-learn
- ๐งพ Input Features: 24 numerical values (see full list below)
- ๐ฏ Target Variable: Electricity Price ($/kWh)
- ๐๏ธ Data: Structured time-series dataset with hourly EV/grid info
- ๐งช Evaluation:
- MSE: e.g., 0.0023
- Rยฒ: e.g., 0.89
- MAPE: e.g., 6.5%
๐ข Input Features
The model expects a list of 24 numeric features:
['Year', 'Month', 'Day', 'DayOfWeek', 'Hour',
'EV Charging Demand (kW)', 'Solar Energy Production (kW)', 'Wind Energy Production (kW)',
'Battery Storage (kWh)', 'Charging Station Capacity (kW)', 'EV Charging Efficiency (%)',
'Number of EVs Charging', 'Peak Demand (kW)', 'Renewable Energy Usage (%)',
'Grid Stability Index', 'Carbon Emissions (kgCO2/kWh)', 'Power Outages (hours)',
'Energy Savings ($)', 'Total_Renewable_Energy_Production', 'Effective_Charging_Capacity',
'Adjusted_Charging_Demand', 'Net_Energy_Cost', 'Carbon_Footprint_Reduction',
'Renewable_Energy_Efficiency']
๐งช Usage Example
๐น Option 1: Load and use the model directly
import joblib
import numpy as np
# Load trained model
model = joblib.load("random_forest_model.pkl")
# Sample input (replace with actual values)
features = [0.5] * 24
# Make prediction
price = model.predict(np.array(features).reshape(1, -1))[0]
print(f"Predicted Electricity Price: ${price:.4f}")๐น Option 2: Use helper function in predict.py
from predict import predict
features = [0.5] * 24
result = predict(features)
print(f"Predicted Price: ${result:.4f}")๐น Option 3: Try it online (Gradio Web Demo)
If deployed, you can try it here: ๐ Live Demo on Spaces
๐ Sample Dataset
This repository includes a sample dataset: processed_electric_price_filled.csv. It contains hourly records of EV charging demand, solar/wind energy production, grid stability, and electricity prices.
Load and explore:
import pandas as pd
df = pd.read_csv("processed_electric_price_filled.csv")
print(df.head())๐ Files Included
๐จโ๐ป Author
bajiang(Georgia)
๐ License
MIT License โ You are free to use, modify, and distribute this project with proper attribution.
