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 [ ]: