In [1]:
import pandas as pd
import numpy as np
import pyaf.ForecastEngine as autof
import pyaf.Bench.TS_datasets as tsds
%matplotlib inline
In [ ]:
In [2]:
b1 = tsds.load_airline_passengers()
df = b1.mPastData
In [3]:
lEngine = autof.cForecastEngine()
lEngine.mOptions.set_active_autoregressions(['XGB']);
lEngine
Out[3]:
<pyaf.ForecastEngine.cForecastEngine at 0x7f83ac05e748>
In [4]:
lEngine.train(df , 'time' , 'AirPassengers' , 12)
INFO:pyaf.std:START_TRAINING 'AirPassengers'
INFO:pyaf.std:END_TRAINING_TIME_IN_SECONDS 'AirPassengers' 2.235266923904419
In [5]:
lEngine.getModelInfo()
INFO:pyaf.std:TIME_DETAIL TimeVariable='time' TimeMin=1949.0 TimeMax=1956.91666666667 TimeDelta=0.08333333333336763 Estimation = (0 , 96) Validation = (96 , 120) Test = (120 , 132) Horizon=12
INFO:pyaf.std:SIGNAL_DETAIL_ORIG SignalVariable='AirPassengers' Min=104 Max=559 Mean=262.49242424242425 StdDev=106.22114554451818
INFO:pyaf.std:SIGNAL_DETAIL_TRANSFORMED TransformedSignalVariable='_AirPassengers' Min=104 Max=559 Mean=262.49242424242425 StdDev=106.22114554451818
INFO:pyaf.std:BEST_TRANSOFORMATION_TYPE '_'
INFO:pyaf.std:BEST_DECOMPOSITION '_AirPassengers_Lag1Trend_residue_zeroCycle_residue_XGB(33)' [Lag1Trend + NoCycle + XGB(33)]
INFO:pyaf.std:TREND_DETAIL '_AirPassengers_Lag1Trend' [Lag1Trend]
INFO:pyaf.std:CYCLE_DETAIL '_AirPassengers_Lag1Trend_residue_zeroCycle' [NoCycle]
INFO:pyaf.std:AUTOREG_DETAIL '_AirPassengers_Lag1Trend_residue_zeroCycle_residue_XGB(33)' [XGB(33)]
INFO:pyaf.std:MODEL_MAPE MAPE_Fit=0.0462 MAPE_Forecast=0.0573 MAPE_Test=0.0605
INFO:pyaf.std:MODEL_SMAPE SMAPE_Fit=0.0463 SMAPE_Forecast=0.0567 SMAPE_Test=0.0604
INFO:pyaf.std:MODEL_MASE MASE_Fit=0.509 MASE_Forecast=0.5932 MASE_Test=0.5862
INFO:pyaf.std:MODEL_L1 L1_Fit=9.515539964661002 L1_Forecast=21.974543072283268 L1_Test=26.379404107729595
INFO:pyaf.std:MODEL_L2 L2_Fit=11.98602826027876 L2_Forecast=28.4310550998623 L2_Test=33.615401234524924
INFO:pyaf.std:MODEL_COMPLEXITY 98
INFO:pyaf.std:AR_MODEL_DETAIL_START
INFO:pyaf.std:AR_MODEL_DETAIL_END
In [6]:
lEngine.standardPlots()
INFO:pyaf.std:START_PLOTTING
INFO:pyaf.std:END_PLOTTING_TIME_IN_SECONDS 2.2884480953216553
In [ ]:
In [7]:
lEngine.mSignalDecomposition.mTrPerfDetails
Out[7]:
Transformation
Model
Complexity
FitMAPE
ForecastMAPE
TestMAPE
0
_AirPassengers
_AirPassengers_Lag1Trend_residue_zeroCycle_res...
98
4.620000e-02
5.730000e-02
6.050000e-02
1
_AirPassengers
_AirPassengers_Lag1Trend_residue_bestCycle_byL...
106
4.570000e-02
5.890000e-02
6.230000e-02
2
Diff_AirPassengers
Diff_AirPassengers_PolyTrend_residue_bestCycle...
122
8.130000e-02
6.790000e-02
2.069000e-01
3
Diff_AirPassengers
Diff_AirPassengers_PolyTrend_residue_zeroCycle...
114
9.200000e-02
6.800000e-02
1.862000e-01
4
Diff_AirPassengers
Diff_AirPassengers_Lag1Trend_residue_zeroCycle...
130
6.530000e-02
7.330000e-02
8.010000e-02
5
_AirPassengers
_AirPassengers_LinearTrend_residue_bestCycle_b...
90
5.860000e-02
8.310000e-02
9.560000e-02
6
Diff_AirPassengers
Diff_AirPassengers_Lag1Trend_residue_bestCycle...
138
8.160000e-02
8.310000e-02
6.930000e-02
7
_AirPassengers
_AirPassengers_LinearTrend_residue_zeroCycle_r...
82
5.930000e-02
8.460000e-02
9.330000e-02
8
Diff_AirPassengers
Diff_AirPassengers_ConstantTrend_residue_zeroC...
98
1.012000e-01
8.570000e-02
7.740000e-02
9
Diff_AirPassengers
Diff_AirPassengers_LinearTrend_residue_zeroCyc...
114
7.360000e-02
8.650000e-02
7.990000e-02
10
Diff_AirPassengers
Diff_AirPassengers_LinearTrend_residue_bestCyc...
122
6.290000e-02
8.980000e-02
7.710000e-02
11
Diff_AirPassengers
Diff_AirPassengers_ConstantTrend_residue_bestC...
106
6.540000e-02
9.310000e-02
8.030000e-02
12
CumSum_AirPassengers
CumSum_AirPassengers_Lag1Trend_residue_zeroCyc...
130
6.950000e-02
9.760000e-02
9.900000e-02
13
CumSum_AirPassengers
CumSum_AirPassengers_Lag1Trend_residue_bestCyc...
138
7.650000e-02
9.940000e-02
9.960000e-02
14
_AirPassengers
_AirPassengers_PolyTrend_residue_bestCycle_byL...
90
5.430000e-02
1.205000e-01
1.713000e-01
15
_AirPassengers
_AirPassengers_PolyTrend_residue_zeroCycle_res...
82
5.520000e-02
1.207000e-01
1.721000e-01
16
CumSum_AirPassengers
CumSum_AirPassengers_PolyTrend_residue_zeroCyc...
114
1.581000e-01
1.750000e-01
2.691000e-01
17
_AirPassengers
_AirPassengers_ConstantTrend_residue_zeroCycle...
66
1.218000e-01
2.009000e-01
2.950000e-01
18
_AirPassengers
_AirPassengers_ConstantTrend_residue_bestCycle...
74
1.222000e-01
2.010000e-01
2.940000e-01
19
CumSum_AirPassengers
CumSum_AirPassengers_PolyTrend_residue_bestCyc...
122
1.766000e-01
2.038000e-01
2.943000e-01
20
CumSum_AirPassengers
CumSum_AirPassengers_LinearTrend_residue_zeroC...
114
1.810000e-01
4.856000e-01
5.501000e-01
21
CumSum_AirPassengers
CumSum_AirPassengers_LinearTrend_residue_bestC...
122
3.361000e-01
4.956000e-01
5.648000e-01
22
CumSum_AirPassengers
CumSum_AirPassengers_ConstantTrend_residue_bes...
106
1.068600e+00
9.788000e-01
1.148800e+00
23
CumSum_AirPassengers
CumSum_AirPassengers_ConstantTrend_residue_zer...
98
9.103000e-01
1.000000e+00
1.000000e+00
24
RelDiff_AirPassengers
RelDiff_AirPassengers_ConstantTrend_residue_ze...
98
4.106115e+06
2.183870e+06
1.910118e+06
25
RelDiff_AirPassengers
RelDiff_AirPassengers_LinearTrend_residue_best...
122
4.106168e+06
2.183870e+06
1.910118e+06
26
RelDiff_AirPassengers
RelDiff_AirPassengers_PolyTrend_residue_bestCy...
122
4.106172e+06
2.183870e+06
1.910119e+06
27
RelDiff_AirPassengers
RelDiff_AirPassengers_PolyTrend_residue_zeroCy...
114
4.106204e+06
2.183870e+06
1.910118e+06
28
RelDiff_AirPassengers
RelDiff_AirPassengers_ConstantTrend_residue_be...
106
4.106115e+06
2.183870e+06
1.910119e+06
29
RelDiff_AirPassengers
RelDiff_AirPassengers_LinearTrend_residue_zero...
114
4.106200e+06
2.183870e+06
1.910119e+06
30
RelDiff_AirPassengers
RelDiff_AirPassengers_Lag1Trend_residue_zeroCy...
130
4.035498e+06
2.183870e+06
1.910119e+06
31
RelDiff_AirPassengers
RelDiff_AirPassengers_Lag1Trend_residue_bestCy...
138
4.106113e+06
2.183870e+06
1.910119e+06
In [8]:
dfapp = df.copy();
dfapp.tail()
Out[8]:
time
AirPassengers
ID
128
1959.583333
559
129
1959.666667
463
130
1959.750000
407
131
1959.833333
362
132
1959.916667
405
In [9]:
dfapp1 = lEngine.forecast(dfapp, 15);
INFO:pyaf.std:START_FORECASTING
INFO:pyaf.std:END_FORECAST_TIME_IN_SECONDS 1.1618320941925049
In [10]:
dfapp1.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 147 entries, 0 to 146
Data columns (total 23 columns):
time 147 non-null float64
AirPassengers 132 non-null float64
_AirPassengers 132 non-null float64
row_number 147 non-null int64
time_Normalized 147 non-null float64
_AirPassengers_Lag1Trend 147 non-null float64
_AirPassengers_Lag1Trend_residue 132 non-null float64
_AirPassengers_Lag1Trend_residue_zeroCycle 147 non-null float64
_AirPassengers_Lag1Trend_residue_zeroCycle_residue 132 non-null float64
_AirPassengers_Lag1Trend_residue_zeroCycle_residue_XGB(33) 147 non-null float32
_AirPassengers_Lag1Trend_residue_zeroCycle_residue_XGB(33)_residue 132 non-null float64
_AirPassengers_Trend 147 non-null float64
_AirPassengers_Trend_residue 132 non-null float64
_AirPassengers_Cycle 147 non-null float64
_AirPassengers_Cycle_residue 132 non-null float64
_AirPassengers_AR 147 non-null float32
_AirPassengers_AR_residue 132 non-null float64
_AirPassengers_TransformedForecast 147 non-null float64
AirPassengers_Forecast 147 non-null float64
_AirPassengers_TransformedResidue 132 non-null float64
AirPassengers_Residue 132 non-null float64
AirPassengers_Forecast_Lower_Bound 12 non-null float64
AirPassengers_Forecast_Upper_Bound 12 non-null float64
dtypes: float32(2), float64(20), int64(1)
memory usage: 25.3 KB
In [11]:
dfapp1.tail(15)
Out[11]:
time
AirPassengers
_AirPassengers
row_number
time_Normalized
_AirPassengers_Lag1Trend
_AirPassengers_Lag1Trend_residue
_AirPassengers_Lag1Trend_residue_zeroCycle
_AirPassengers_Lag1Trend_residue_zeroCycle_residue
_AirPassengers_Lag1Trend_residue_zeroCycle_residue_XGB(33)
...
_AirPassengers_Cycle
_AirPassengers_Cycle_residue
_AirPassengers_AR
_AirPassengers_AR_residue
_AirPassengers_TransformedForecast
AirPassengers_Forecast
_AirPassengers_TransformedResidue
AirPassengers_Residue
AirPassengers_Forecast_Lower_Bound
AirPassengers_Forecast_Upper_Bound
132
1960.000000
NaN
NaN
132
1.389474
405.000000
NaN
0.0
NaN
11.257255
...
0.0
NaN
11.257255
NaN
416.257255
416.257255
NaN
NaN
360.532387
471.982123
133
1960.083333
NaN
NaN
133
1.400000
416.257255
NaN
0.0
NaN
-12.380074
...
0.0
NaN
-12.380074
NaN
403.877181
403.877181
NaN
NaN
315.148449
492.605913
134
1960.166667
NaN
NaN
134
1.410526
403.877181
NaN
0.0
NaN
22.446426
...
0.0
NaN
22.446426
NaN
426.323607
426.323607
NaN
NaN
312.866133
539.781081
135
1960.250000
NaN
NaN
135
1.421053
426.323607
NaN
0.0
NaN
-2.562091
...
0.0
NaN
-2.562091
NaN
423.761517
423.761517
NaN
NaN
302.807124
544.715909
136
1960.333333
NaN
NaN
136
1.431579
423.761517
NaN
0.0
NaN
15.197581
...
0.0
NaN
15.197581
NaN
438.959098
438.959098
NaN
NaN
307.866554
570.051642
137
1960.416667
NaN
NaN
137
1.442105
438.959098
NaN
0.0
NaN
21.488630
...
0.0
NaN
21.488630
NaN
460.447728
460.447728
NaN
NaN
314.138663
606.756793
138
1960.500000
NaN
NaN
138
1.452632
460.447728
NaN
0.0
NaN
22.423498
...
0.0
NaN
22.423498
NaN
482.871226
482.871226
NaN
NaN
318.740413
647.002039
139
1960.583333
NaN
NaN
139
1.463158
482.871226
NaN
0.0
NaN
5.331924
...
0.0
NaN
5.331924
NaN
488.203151
488.203151
NaN
NaN
302.369406
674.036895
140
1960.666667
NaN
NaN
140
1.473684
488.203151
NaN
0.0
NaN
-22.371239
...
0.0
NaN
-22.371239
NaN
465.831912
465.831912
NaN
NaN
260.836887
670.826937
141
1960.750000
NaN
NaN
141
1.484211
465.831912
NaN
0.0
NaN
-22.371239
...
0.0
NaN
-22.371239
NaN
443.460673
443.460673
NaN
NaN
221.547867
665.373479
142
1960.833333
NaN
NaN
142
1.494737
443.460673
NaN
0.0
NaN
-20.387133
...
0.0
NaN
-20.387133
NaN
423.073541
423.073541
NaN
NaN
187.552105
658.594976
143
1960.916667
NaN
NaN
143
1.505263
423.073541
NaN
0.0
NaN
23.381294
...
0.0
NaN
23.381294
NaN
446.454835
446.454835
NaN
NaN
201.624799
691.284871
144
1961.000000
NaN
NaN
144
1.515789
446.454835
NaN
0.0
NaN
11.764988
...
0.0
NaN
11.764988
NaN
458.219823
458.219823
NaN
NaN
NaN
NaN
145
1961.083333
NaN
NaN
145
1.526316
458.219823
NaN
0.0
NaN
-4.271869
...
0.0
NaN
-4.271869
NaN
453.947954
453.947954
NaN
NaN
NaN
NaN
146
1961.166667
NaN
NaN
146
1.536842
453.947954
NaN
0.0
NaN
17.950855
...
0.0
NaN
17.950855
NaN
471.898809
471.898809
NaN
NaN
NaN
NaN
15 rows × 23 columns
In [12]:
dfapp1.describe()
Out[12]:
time
AirPassengers
_AirPassengers
row_number
time_Normalized
_AirPassengers_Lag1Trend
_AirPassengers_Lag1Trend_residue
_AirPassengers_Lag1Trend_residue_zeroCycle
_AirPassengers_Lag1Trend_residue_zeroCycle_residue
_AirPassengers_Lag1Trend_residue_zeroCycle_residue_XGB(33)
...
_AirPassengers_Cycle
_AirPassengers_Cycle_residue
_AirPassengers_AR
_AirPassengers_AR_residue
_AirPassengers_TransformedForecast
AirPassengers_Forecast
_AirPassengers_TransformedResidue
AirPassengers_Residue
AirPassengers_Forecast_Lower_Bound
AirPassengers_Forecast_Upper_Bound
count
147.000000
132.000000
132.000000
147.000000
147.000000
147.000000
132.000000
147.0
132.000000
147.000000
...
147.0
132.000000
147.000000
132.000000
147.000000
147.000000
132.000000
132.000000
12.000000
12.000000
mean
1955.083333
262.492424
262.492424
73.000000
0.768421
278.861833
2.219697
0.0
2.219697
1.925769
...
0.0
2.219697
1.925769
0.581900
280.787602
280.787602
0.581900
0.581900
283.835899
602.751055
std
3.548278
106.625799
106.625799
42.579338
0.448204
115.498181
31.252802
0.0
31.252802
14.649807
...
0.0
31.252802
14.649807
18.882293
115.069530
115.069530
18.882293
18.882293
53.564763
76.398211
min
1949.000000
104.000000
104.000000
0.000000
0.000000
104.000000
-101.000000
0.0
-101.000000
-22.371239
...
0.0
-101.000000
-22.371239
-78.628761
105.451597
105.451597
-78.628761
-78.628761
187.552105
471.982123
25%
1952.041667
176.500000
176.500000
36.500000
0.384211
180.000000
-15.250000
0.0
-15.250000
-9.029420
...
0.0
-15.250000
-9.029420
-9.078444
185.123296
185.123296
-9.078444
-9.078444
251.014632
543.482202
50%
1955.083333
239.500000
239.500000
73.000000
0.768421
267.000000
2.500000
0.0
2.500000
0.738561
...
0.0
2.500000
0.738561
0.449085
266.509766
266.509766
0.449085
0.449085
305.336839
626.879416
75%
1958.125000
343.250000
343.250000
109.500000
1.152632
362.000000
21.000000
0.0
21.000000
15.197581
...
0.0
21.000000
15.197581
11.660267
371.413860
371.413860
11.660267
11.660267
314.391110
666.736844
max
1961.166667
559.000000
559.000000
146.000000
1.536842
559.000000
76.000000
0.0
76.000000
23.381294
...
0.0
76.000000
23.381294
53.576502
560.192122
560.192122
53.576502
53.576502
360.532387
691.284871
8 rows × 23 columns
In [ ]:
Content source: antoinecarme/pyaf
Similar notebooks: