madagra / energy-ts-analysis Goto Github PK
View Code? Open in Web Editor NEWJupyter notebook implementing time series forecasting of energy consumption data with different methods.
Jupyter notebook implementing time series forecasting of energy consumption data with different methods.
Hi !
I was trying to re-run your excellent example forecast.ipynb in Google Colab and I am getting the above error.
I used Colab, as installing prophet, xgboost in windows isn't well supported.
What's the meaning of the error?
Kind regards,
Dimitri
Hey, I found this repo from the Medium article - thanks for posting the code!
Just one thing, the calculation for MAPE is incorrect:
mape.append(np.abs((a - f)/f))
should be
mape.append(np.abs((a - f)/a))
if
y = [1]
yhat = [2]
The result for true - forecast / forecast
will be 50%
The result for true - forecast / actual
will be 100%
https://www.forecastpro.com/Trends/forecasting101August2011.html
I have seen other people using the forecasted values as the denominator, is there a reason for this?
Hello.
First, I would like to thank you guys for this amazing example on applying Direct and Recursive Strategy to N Step Ahead Forecasting. I was taking a look on the recursive strategy and came upon a doubt regarding it's implementation, where I think there's a bug.
If you take a look at the picture above (you can find the math in this article), the recursive strategy is basically the 1-step-ahead direct strategy with a "feedback" (the value found at each iteration will be inserted on target array).
When you're doing this piece of code
new_point = fcasted_values[-1] if len(fcasted_values) > 0 else 0.0
target = target.append(pd.Series(index=[date], data=new_point))
You're actually inserting the first prediction (N=1) on the recursive strategy with 0.0 value, instead of actually finding the prediction (N=1) value. This will affect the lags used on the features matrix, since there will be a lag with an incorrect value in all prediction steps.
Below you can see the target and feature values for 3 iteractions after inserting 0.0 as the first prediction.
Iteraction 1
Features
hour weekday dayofyear ... lag_1 lag_8 lag_25
2020-01-12 20:00:00 20 6 12 ... 65.919495 80.427320 72.718000
2020-01-12 21:00:00 21 6 12 ... 34.952133 57.917430 33.341960
2020-01-12 22:00:00 22 6 12 ... 33.911217 56.941563 33.081734
2020-01-12 23:00:00 23 6 12 ... 33.244377 56.193405 33.683514
2020-01-13 00:00:00 0 0 13 ... 33.390755 53.786278 33.244377
Target
2020-01-12 20:00:00 34.952133
2020-01-12 21:00:00 33.911217
2020-01-12 22:00:00 33.244377
2020-01-12 23:00:00 33.390755
2020-01-13 00:00:00 0.000000
Iteraction 2
Features
hour weekday dayofyear ... lag_1 lag_8 lag_25
2020-01-12 21:00:00 21 6 12 ... 34.952133 57.917430 33.341960
2020-01-12 22:00:00 22 6 12 ... 33.911217 56.941563 33.081734
2020-01-12 23:00:00 23 6 12 ... 33.244377 56.193405 33.683514
2020-01-13 00:00:00 0 0 13 ... 33.390755 53.786278 33.244377
2020-01-13 01:00:00 1 0 13 ... 0.000000 59.202316 33.407020
Target
2020-01-12 21:00:00 33.911217
2020-01-12 22:00:00 33.244377
2020-01-12 23:00:00 33.390755
2020-01-13 00:00:00 0.000000
2020-01-13 01:00:00 34.342800
Iteraction 3
Features
hour weekday dayofyear ... lag_1 lag_8 lag_25
2020-01-12 22:00:00 22 6 12 ... 33.911217 56.941563 33.081734
2020-01-12 23:00:00 23 6 12 ... 33.244377 56.193405 33.683514
2020-01-13 00:00:00 0 0 13 ... 33.390755 53.786278 33.244377
2020-01-13 01:00:00 1 0 13 ... 0.000000 59.202316 33.407020
2020-01-13 02:00:00 2 0 13 ... 34.342800 68.944670 32.057076
Target
2020-01-12 22:00:00 33.244377
2020-01-12 23:00:00 33.390755
2020-01-13 00:00:00 0.000000
2020-01-13 01:00:00 34.342800
2020-01-13 02:00:00 2.395295
Also, I didn't understand why you used, on the recursive strategy, the trained model (which is returned either from the linear_model or xgboost_model functions) instead of the 1 Step Ahead model (which is used on the Direct Estrategy).
Does this make any sense or have I understand something wrong?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.