From 01198b8b08e45d1f848043feabea6346a27ab5cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=C3=B4nio=20C=C3=A2ndido?= Date: Tue, 12 Jan 2021 18:04:42 -0300 Subject: [PATCH] Documentation update --- docs/build/doctrees/environment.pickle | Bin 2010806 -> 2598655 bytes docs/build/doctrees/pyFTS.benchmarks.doctree | Bin 7139 -> 550181 bytes docs/build/doctrees/pyFTS.common.doctree | Bin 213006 -> 421175 bytes .../pyFTS.common.transformations.doctree | Bin 6182 -> 6568 bytes docs/build/doctrees/pyFTS.distributed.doctree | Bin 3905 -> 23717 bytes docs/build/doctrees/pyFTS.hyperparam.doctree | Bin 15548 -> 114023 bytes docs/build/doctrees/pyFTS.models.doctree | Bin 7251 -> 303149 bytes .../doctrees/pyFTS.models.ensemble.doctree | Bin 4349 -> 88527 bytes .../doctrees/pyFTS.models.incremental.doctree | Bin 4452 -> 64474 bytes .../pyFTS.models.multivariate.doctree | Bin 89753 -> 221317 bytes .../pyFTS.models.nonstationary.doctree | Bin 96848 -> 212200 bytes .../doctrees/pyFTS.models.seasonal.doctree | Bin 117697 -> 179836 bytes .../build/doctrees/pyFTS.partitioners.doctree | Bin 137885 -> 162635 bytes .../doctrees/pyFTS.probabilistic.doctree | Bin 4307 -> 75882 bytes docs/build/html/_modules/index.html | 48 +- .../html/_modules/pyFTS/benchmarks/BSTS.html | 220 ++ .../_modules/pyFTS/benchmarks/Measures.html | 663 ++++++ .../pyFTS/benchmarks/ResidualAnalysis.html | 221 ++ .../html/_modules/pyFTS/benchmarks/Tests.html | 266 +++ .../html/_modules/pyFTS/benchmarks/Util.html | 1419 ++++++++++++ .../html/_modules/pyFTS/benchmarks/arima.html | 320 +++ .../_modules/pyFTS/benchmarks/benchmarks.html | 1910 ++++++++++++++++ .../html/_modules/pyFTS/benchmarks/knn.html | 274 +++ .../html/_modules/pyFTS/benchmarks/naive.html | 118 + .../_modules/pyFTS/benchmarks/quantreg.html | 267 +++ .../html/_modules/pyFTS/common/Util.html | 652 ++++++ .../build/html/_modules/pyFTS/common/fts.html | 750 ++++++ .../_modules/pyFTS/distributed/dispy.html | 271 +++ .../pyFTS/hyperparam/Evolutionary.html | 725 ++++++ .../_modules/pyFTS/hyperparam/GridSearch.html | 272 +++ .../html/_modules/pyFTS/models/chen.html | 189 ++ .../html/_modules/pyFTS/models/cheng.html | 160 ++ .../pyFTS/models/ensemble/ensemble.html | 453 ++++ .../pyFTS/models/ensemble/multiseasonal.html | 192 ++ .../html/_modules/pyFTS/models/hofts.html | 395 ++++ .../html/_modules/pyFTS/models/hwang.html | 164 ++ .../html/_modules/pyFTS/models/ifts.html | 285 +++ .../incremental/IncrementalEnsemble.html | 224 ++ .../pyFTS/models/incremental/TimeVariant.html | 215 ++ .../_modules/pyFTS/models/ismailefendi.html | 211 ++ .../pyFTS/models/multivariate/cmvfts.html | 316 +++ .../pyFTS/models/multivariate/granular.html | 127 + .../pyFTS/models/multivariate/mvfts.html | 427 ++++ .../pyFTS/models/multivariate/variable.html | 181 ++ .../pyFTS/models/multivariate/wmvfts.html | 178 ++ .../pyFTS/models/nonstationary/cvfts.html | 371 +++ .../pyFTS/models/nonstationary/honsfts.html | 357 +++ .../pyFTS/models/nonstationary/nsfts.html | 458 ++++ .../pyFTS/models/nonstationary/util.html | 194 ++ .../html/_modules/pyFTS/models/pwfts.html | 794 +++++++ .../html/_modules/pyFTS/models/sadaei.html | 215 ++ .../pyFTS/models/seasonal/cmsfts.html | 209 ++ .../_modules/pyFTS/models/seasonal/msfts.html | 165 ++ .../_modules/pyFTS/models/seasonal/sfts.html | 200 ++ .../html/_modules/pyFTS/models/song.html | 186 ++ docs/build/html/_modules/pyFTS/models/yu.html | 207 ++ .../_modules/pyFTS/partitioners/Huarng.html | 154 ++ .../_modules/pyFTS/partitioners/Util.html | 188 ++ .../pyFTS/partitioners/parallel_util.html | 131 ++ .../ProbabilityDistribution.html | 462 ++++ .../_modules/pyFTS/probabilistic/kde.html | 169 ++ docs/build/html/_sources/pyFTS.common.rst.txt | 8 - .../pyFTS.common.transformations.rst.txt | 8 + docs/build/html/genindex.html | 2036 +++++++++++++++-- docs/build/html/modules.html | 62 +- docs/build/html/objects.inv | Bin 3141 -> 7234 bytes docs/build/html/py-modindex.html | 230 ++ docs/build/html/pyFTS.benchmarks.html | 1850 ++++++++++++++- docs/build/html/pyFTS.common.html | 834 ++++++- .../html/pyFTS.common.transformations.html | 4 + docs/build/html/pyFTS.distributed.html | 65 +- docs/build/html/pyFTS.html | 94 +- docs/build/html/pyFTS.hyperparam.html | 344 ++- docs/build/html/pyFTS.models.ensemble.html | 322 ++- docs/build/html/pyFTS.models.html | 1068 ++++++++- docs/build/html/pyFTS.models.incremental.html | 251 +- .../build/html/pyFTS.models.multivariate.html | 528 ++++- .../html/pyFTS.models.nonstationary.html | 378 ++- docs/build/html/pyFTS.models.seasonal.html | 228 +- docs/build/html/pyFTS.partitioners.html | 72 +- docs/build/html/pyFTS.probabilistic.html | 305 ++- docs/build/html/searchindex.js | 2 +- docs/pyFTS.common.rst | 8 - docs/pyFTS.common.transformations.rst | 8 + pyFTS/common/Transformations.py | 18 +- pyFTS/common/transformations/som.py | 4 +- 86 files changed, 24852 insertions(+), 448 deletions(-) create mode 100644 docs/build/html/_modules/pyFTS/benchmarks/BSTS.html create mode 100644 docs/build/html/_modules/pyFTS/benchmarks/Measures.html create mode 100644 docs/build/html/_modules/pyFTS/benchmarks/ResidualAnalysis.html create mode 100644 docs/build/html/_modules/pyFTS/benchmarks/Tests.html create mode 100644 docs/build/html/_modules/pyFTS/benchmarks/Util.html create mode 100644 docs/build/html/_modules/pyFTS/benchmarks/arima.html create mode 100644 docs/build/html/_modules/pyFTS/benchmarks/benchmarks.html create mode 100644 docs/build/html/_modules/pyFTS/benchmarks/knn.html create mode 100644 docs/build/html/_modules/pyFTS/benchmarks/naive.html create mode 100644 docs/build/html/_modules/pyFTS/benchmarks/quantreg.html create mode 100644 docs/build/html/_modules/pyFTS/common/Util.html create mode 100644 docs/build/html/_modules/pyFTS/common/fts.html create mode 100644 docs/build/html/_modules/pyFTS/distributed/dispy.html create mode 100644 docs/build/html/_modules/pyFTS/hyperparam/Evolutionary.html create mode 100644 docs/build/html/_modules/pyFTS/hyperparam/GridSearch.html create mode 100644 docs/build/html/_modules/pyFTS/models/chen.html create mode 100644 docs/build/html/_modules/pyFTS/models/cheng.html create mode 100644 docs/build/html/_modules/pyFTS/models/ensemble/ensemble.html create mode 100644 docs/build/html/_modules/pyFTS/models/ensemble/multiseasonal.html create mode 100644 docs/build/html/_modules/pyFTS/models/hofts.html create mode 100644 docs/build/html/_modules/pyFTS/models/hwang.html create mode 100644 docs/build/html/_modules/pyFTS/models/ifts.html create mode 100644 docs/build/html/_modules/pyFTS/models/incremental/IncrementalEnsemble.html create mode 100644 docs/build/html/_modules/pyFTS/models/incremental/TimeVariant.html create mode 100644 docs/build/html/_modules/pyFTS/models/ismailefendi.html create mode 100644 docs/build/html/_modules/pyFTS/models/multivariate/cmvfts.html create mode 100644 docs/build/html/_modules/pyFTS/models/multivariate/granular.html create mode 100644 docs/build/html/_modules/pyFTS/models/multivariate/mvfts.html create mode 100644 docs/build/html/_modules/pyFTS/models/multivariate/variable.html create mode 100644 docs/build/html/_modules/pyFTS/models/multivariate/wmvfts.html create mode 100644 docs/build/html/_modules/pyFTS/models/nonstationary/cvfts.html create mode 100644 docs/build/html/_modules/pyFTS/models/nonstationary/honsfts.html create mode 100644 docs/build/html/_modules/pyFTS/models/nonstationary/nsfts.html create mode 100644 docs/build/html/_modules/pyFTS/models/nonstationary/util.html create mode 100644 docs/build/html/_modules/pyFTS/models/pwfts.html create mode 100644 docs/build/html/_modules/pyFTS/models/sadaei.html create mode 100644 docs/build/html/_modules/pyFTS/models/seasonal/cmsfts.html create mode 100644 docs/build/html/_modules/pyFTS/models/seasonal/msfts.html create mode 100644 docs/build/html/_modules/pyFTS/models/seasonal/sfts.html create mode 100644 docs/build/html/_modules/pyFTS/models/song.html create mode 100644 docs/build/html/_modules/pyFTS/models/yu.html create mode 100644 docs/build/html/_modules/pyFTS/partitioners/Huarng.html create mode 100644 docs/build/html/_modules/pyFTS/partitioners/Util.html create mode 100644 docs/build/html/_modules/pyFTS/partitioners/parallel_util.html create mode 100644 docs/build/html/_modules/pyFTS/probabilistic/ProbabilityDistribution.html create mode 100644 docs/build/html/_modules/pyFTS/probabilistic/kde.html diff --git a/docs/build/doctrees/environment.pickle b/docs/build/doctrees/environment.pickle index 0683be92854296a99ee0647cf70730219a19f64c..d89e03547162e4593132f87b0174c4c4d2a4a64f 100644 GIT binary patch literal 2598655 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

N()^`WT%Cbrosla{ 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 z z?eW}z{!*bz3$8*1JHV^dMBDyrh4*~XBI@ATlKxkP><4l2Dp9WLzbg!@TFLQ5o6g@N z4EI3S7-ck3B2DP;lw1=d22JUID?}MN=JjC9h|`z+{H1FVf3E=jZ3II7allP^n$ltZ zgTkClNPald0p9Bhs2CA=`+-yqAO22eJMB&!5ua>oNUqCI*ZW$LT zF@s*?EF8w?jsAg2wmW%O@() z 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 z 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%0AmbzCQ=-0!lPo+M7JM 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%0A7{ZcHcIl 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

S;qnlh-VZZ+XlzpV7F>_MmJ!n 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

loJX{B(Wllhxe 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Ƚ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 z zXW9ZMoI}bo&uGA?B2`8M6qqUxG0=G{^L#V_Nm1tcFo623q*3NMF@KO}$!94T$O z{Jg6!WXEr=DQ%LMs>uW;s*kZ&qNW;3zJ!!S_|~E1ivesBvP3pT$XDQ{XTqlPhf;Oz~UV47yPn2UgBFUJ)Eq&d_X1j>7?R<&2)5URehd=A&18 zY2XY3+KhFj@UfJ!mcbgO4D+0dPTI|bU_#Ae_UzC?07Rwiu#`dCoaSuhUt9h zzo_LaFj?O8n`;HL5fPGq8SzqT0lfz4qL!a~=qMy}KV=Qv`tdRnKpMefe;o`_E-TG4C^K#a~#%I+URe@0PR&?P4=Zllop&o)GWi=m#izjj5XmkYpulAJpZT(xuMf;TJAiayC3ga-&r1Gr z6fW*SN}>uEFA89jkR`GyN|tVA5`_!tI%Oc>?j$Z}k-?3UT5#dweLw_VxOf0tdUIam z^r^(p-qFixIZYcQ;xBh)R^&f%vVR|bwA1qURPW4Lf z+{I;z90v=xtL#?*;NP7oJXd~_)g`{6D2%B~Xuc$0#{qJ6i35w@#x0z$=<-wOzkq4; zA*wy||8D}?3}~gyu{!Z125VF&mdwZ3RrkFr2H&Lwv>RW$QIoV`c23Ey7uoqJfxq($ zGba)qOoIECoj(fFw`S+VJ}l|%TywpUoqrmp>oPk>j4_A6?3^z~mN0$>9;3nYX6FxF zCS3>rk}A8Ffc~CEYjo+wjmBi@$(NLd*PMCk$ty=orAKeMcO!h5rcp0Xl`g1E)LQV* z*65?Ry!w*HY!e^iC)VLs{f&*C@I&pl;J+IawMu(u>HLv3YlqjY99gsa^ha-b*_t(L zM@!diysX-8&$P~3wQ9$X9ivIB-Dr+Bnp;;viFSOdvg+hB&se+qjMLTY(tp%6D1)3_ z5BdeG^g8?#5o0YMK`tAUaGb0ugNMj)2@dC z2_jx`GJm^=F$I}B)kxM2o*gi%$TiUh1m>Dm20CvC9=;!dq%c(91yG-%GU^7wAEx~+ zjvL`&hLT?eAT2nHNJnwjEn1PqOJ5R|#mgW_@h~`xKmKZ47JmY^^d^fRnJ&*nr0!3! zr|vjV7y0_33=x&Z$-||+{($Vcz}hgilt~RH>FZRl^!d9uN#|_OogG-fpYn8^|4`PK zIf*M30WmqaCOf$T2e9VgN_z91gI8eM@Ep8MK$|I^6e;H5H!xT;2hS2=eC;*jWrv#y z4D2<7odmQSU%MTXv|$cT$*mVT_^S#0ojLeDLS z4kLD%gCoWm&0-GD7bDAm&V0yxW9q<9MpNx5*(9G-oj`zbbS>BYHx{u+gh{?W!cquVMuX)+= z-b*-JOj)R$BU>(Ama5-M>dck=(nCif-*}95u;m-P)o#~N=P`r(sb^Xvn*R|4b!Tw< zC~I$HM}*ZsVxwEM1(qDfI@nmkTm39K#4~MyCC(vbg7f_VMvE{U^)xUH|1y`!d~J+g z6+pUJOqTkV)Dw!=dEXiwx(t1pdwp=T}4r zliP+0=(=N}Bl(?fCQ7@(T_$J#+fX(r4 z?jqGI{j*){<`n;P4sNk(;59q-JL}Z0Qcg&oP6gnjOEeWHR#bmUSfwHvGr?8`~doGsVewJFw)M|jLty)5nF3~G@jKR|ki zlK&E9%Y@or$s8Qt!sPZHEw|nmGyedSMy@Vyp{`3G;jBgz)6@{tlTLD z+FqWTt-$A}m})i4^{tiC@amB@B0$NWuJE|Aq0MgM3gx^*SO;4q28UPGh zi({JslHHoi%GE(0;!twp@{;`-sJo83l&@G@5mh>1`N2D}z7?6QqI`h|r2@atWgTq% z=B<8CtoKYC$%(y{eY4cpwTBnn&=0cwsCf`8@T2172XFQBW85=sfgjExWjT4DfKf%I z6fH$yrSw+}bl%R(+#7(TFlVmYkzmZ?U$4KE>dv>xMbA<*VbE7oCt%9OfEo*GZ0SwaV68|f$Kacc z_3+Zc@!rw_8?cM|!EqVHjMNi8btNrkuMhqF6!;#dvohzzLq9)Mz0%tUql_SAk*g)_ zZE~3Bnak4bLuCM%zuoPcSav*|VMp=@!r@OX=88A8KG=B|UU;JU&gfN(zAwCBJF z63}LBDrJmyg?$;Uft}j)WD93Lg-wqtq%0UeBKet%lyns0Gj&Uz7nfgRuT z31~OIc2g^*fYp4x(zI&zqPnn!z~5P2m>@cs1oy4F@HjxkT3vXC4@YDBYg*Zm#AFYTH9WM+|OE4 zP#+eNOvb4v=UqWd>Ie_Kla`PUaq3bA19E7gvcflcrQSQEiaISghe0_1X*Pb zNdOVy*?F&%*O#}^-46(hY=VG|3Oog5P*8ChR7BjtaT#>PeH$G`TyP&3X54<_GXBr0 zz3x4=-0r^p9{!!rNM7GMRdwo|x@Y-T-6|W-iS*6C46vHf!_Qa+mmXB<0-8}Rdj|nX z58KEm?;i&SkyGAFq#3m&F79FmG*{i{P6|Fppt0a={~MkW{tm2yOZcjEp%gyJv(|y1 z4pf0H=2OMCfgxp7;eDGVUh@731&eGMO<`oVd@m#I7+!K(#Lxv^ax%&_V6P3lWSPKA za52Dg{+QP?Uys1A1X5+Tle3nd7C9@zJh>n>PrOcxnaJ}Zge5eJ!pfyl|CAE=hjit+ z@DCZNDcwcmA2-4vX#AszCB@($2kL9HbnK4>n`#C^)<7rcApEue1Gq`F@fnG7QA@+MVl`U&`ZN}ltyJf#sbA1MpN z0GIcvA?4Y|p#_mVgbkzsm$dW!z2Yrh(h@T8S?DqylDm^KmgYzVlMX7`oc{9RD4{_eyA6Nxwmy{0D0V-9(J-88%Vh~eZZFrS29Zp zcH*zyoc-Jh)>on1^vmdWaTS8ve08Nt(Z!V+t+A}o5tn=o!GW9KD+y{pzwTs0jtyNh zrMDtn@_hvVUYGnvqJlZ#uDRs1fDxxlzB|Mv?UJ?BGcNfEXt7O~j2ugs%wI<4u~x%l zr%N`s0`9zaY^;GB|3*veAUCg72JO#^o#o1qBwxb5dXg`QE@iIj&KZ#3GlqJni_K&L zdt3{w_&s<(gwE3D%bf2RO9&9=d&pO>u(KW8gV&)CivJoIM+O@F6RY5Y26?I5mhpMh zll&pjEs9TUg!?Tc^&{6E{h)Z!i~Xw2h-5cb!6g!28Wu@UpxcZ{yiH0(^XUjd3;YY` zX(ayj1lLKYJ}6!vF?8`Voe89&mr3U2G#tjku3n5|uxrF4`k^l*%>5_)mUrFRB z(m^P3MCT|s!64`y=pTi*N^yXJsQcQZYvOZLwrAS)LNhlcSgNmgv^$Q zSaS8oCKJFPOuah(lP6(G{(>Xm8y&_)<@6h5P7#c?1c)fdt|SueWp9R#XfOL}EOB^Q z!D>4j9hTMcfVy}uyNAciVoOdBD*#WAUt7dk$?kQ4!X9e!!v<20t;em%PH%sB9J)`x zqHf^r(*(8oLQCzUllvs2?KDvMLxKZ0zfTg>(frQlua1zo-dHjdpUX+Xf7o;48KPG= zkAGm)$)mHk*h22OYR*_K+lRmG#^;l5SSW3@&$c z!9M6@cPS$tO`q1kap z+A;ik+m~iTAJfC)(1k(S21r8&B{zP(Frt4UBTZ<#P5F1D(-$kBbbS?B3pKZUK zpf>HD)G=n;moZu++qOS{(Alf~-1%9=8;HK$Iqd5R>S#{WFuvwBUE(>z=zRnSZhqfG zQ2Y6H+h?f-Oirn(RYY?7HG+RHSpQ|Bf;r%>C8wjnh%-6;LWoN`In`3nB&X}4#Ws^u zYr5t1d-lc#w7kqVtav%)|C39 zL6G0WAZQTePgqh62y%!FV_3Ktzs11wjgr-38!*V;RzoHZqQ6rrc(=i}7sO6lnVTUB zGEdc-@_qG|2s1Fqb5h0PGbQ_}dg~bwvYQ%P9w0PV>hO7B0(L^roIItb>wuazwIx$kIl^d18ehkMaZ=aMKT)=37RkQM^<_)JV zFP+0tlBK0%O2<_Os&zQtY1#Ur3P2_eSld5le7rVR9vH&Aqh2)HsMG*PDIH&LR7cpE zPfJTDFE1T4vK)_tYQSIh`q;qo((?~3^&NE3p-W1AD-S>Pz$K-XhaLLV)wi!aeC6`e z;8=Cl$`#8GJZQzC2ON0dVFw?2;ELt**v6RTK^UBm+3ThYr$)Sa?bP!mcNI+sR+NWK zK7li}C;2y=$NuxB*;yh}eJir<=*4#0kA|6-;KYXlq|L4I#blek}LC&*qHflg(LheOs+DdCGiD1K-1i`EZ~UBV&9o)`-e6l5YcP z@*Vuo6If|>@?HGt-i%l|@WfoUXHp?`yXDWeIs zIs)*)3J$yVjJ<3r7(?HyLEgV9G2rQ@h@lJM=>{MT*%AGIi1%eTJOp@;^CyQE!TyxsO57-Pi`*Z!a4#(f5Q58ra03Bo^1AU+GSzV zq1mT5CdQ5N6mx4gNlY_y~mU1#x zRdb6$liR&4)@Dc?3BlTJRITQ{)9Xc~)Ry{eY=?|8r1*#uTUxuTafe<*DJ}d?T1zY0 z4I4-Sxx2Wg0?!}}v~(s?a%MGFYCK%fB|^(^ao@$ zs&U^3WTJiR1G1TDNw^kZPOu;L5U!?rY2h<6-novyWK<<1rtEA9(;`q!y)s1r)%Q_y z@O?)1Mxuf_@7e*X_v`0zQT+gB@ej};=>cgM2B;5$L4%V?2^ew$)^~@vr2%U#{dDM` z%!U>nfc2uFpPEdr#;*@&C)dC~jB|`u5V+=ckpb6RLk}3mI)LjnDzrY}SRMzIWE`-# zUIHkr0a$i*ppIc%y>c<4XTrUjyUF z;4^<>6Z<7+=dOAYB0=mIT9SPk$!Bx?z!<5gB z7`ni>&IZ!Zn`dOcN0m!!@WPimd!07c$|IH1CDjJ33&MSIFC4pc*{R6{q}9q)vm4_o zxNyiOk~GupHlrq3v)z{9B}-5Q(a;Kl>YF0uD<%QTH`gTa&q9IUNjolGl)sYLh$Wq` zQg<|dHwlBF@w+>*B!l0v^to50&aHlpcGNIVrTz_Lm-eHf4D7^82T_0ntO&*|%k3`O z009oRTk4Zx3#9+U>NIw4ssz5x z(ogL1d>z++F&@qJOe~iUfd8<0{Uy=6o7bN) z>gd$_8LDw#>Mh#0Qt!FyHJ0Nrp4fw#vw;wN3rRR5RMo04QXveKp`b+ z2(xEkj+k20dIsjhLPi~}kL6V3K7EMxEq!dYV!1*>*x$Aej->i%K?l6+JUR%|A`n8E zjUs@M^C>y_fRL9E6-=FX9SHe2yuD5!F2+x!8T!N9+=N-1RbQnZ>_437))hCpP>lN6aUmdQjK7DMo(&aUv z2SBI!qrSJRTFtjjv#8IZiA?ynvy+g=fzEQCt@yz33k0?45X>m#vy9dV3?(YWKqAek_1Lv=^mC$PcTD(W zf;yT_*xDvv-AwEXd;3OY$jAP+C&?BAd4%~_#$|M*v@O-RFH#ciTanUiZj$m24KuM!j)DKMM{o!=0%yp&l2J!1;#jJ2pCUy2mLg^` ze;~&oe%XUKlj^4hHSq3RRKr~5u(DdfA~}MY?1w#ogc^WT3mfxk;Zmw`pB6;>mKJ8B zCsspXKkOmgK=sms4tVEzbP%S+)PZs^MWhaIr{v&E9o|Y*FimjRQ-?>v+B#E*`$F8( zse_h&CUtl-bl0KO0Xdhc1CJtD>hM;0+*ax!8-Ub71t<2bYi>EddD6=AlgSy78$1Ex zqEm(2C`dFM0>fen^fVCgxXd|ySYQx$bs!_v}NZLm^X zy|T+W$sb{|$ctktStOrQ#`gO$SDK|ZhlW>)X~B1xm4r6uu8OVg;g_F%9slNvYFpRwckQO z#k;lLm0t~ES`4VD_o#?~>PAWqzJTg_qJlZ#t_M_efFWl?2}ttlF2RRMck<0KLORdl>)8vD=_G z`3>^Nk5hZEsGK&l=7canVmUI1^ptb3Uk6vD_c`c@j`Y5SC5}i>unJK0P^+u{$JgPr zjNwYZjo#&t{0M1D3DJ~--iGW)*%8DftEmrSFTuEI&_-A!#|FmjnW_Erhp%) zTFtjkv)I_7R2CNLuxx>Yj6=hYQuQjcodUm8GROlAYsn?Q#RgL0+VXspB@@AI1@*ZL z))A3@2Hz!Pxjl}#l{`_~EP~oJK5~{Iv^Rs%8c~}W>}dYXrwi!FXA#k>JM!6$ppNDd zE}aDwn7^VzyqeVj4174zv76097569YoaY6c$6A}6M{_gsp1N%ai1zg`<5yqfZ&^{ep*li@4iJfv;zdcg&KfU3vbG& zg@>rdeOeIhTUrPL!5^o3X+a0P^E^5T(_-F2Ig}#umLE`Z@Z~K}5*5sMzw3F+AHd%_ z^Oo;~xTW(JE&WX1@&t6(p}Yk-mw5}18d%=)BnA+!k7;7|kjMrgJy5}jJ?mWQ!A=`p z>A@~o;z$qDGU`iy4xc{bSMjM2`XNeTpV61aXY|<*`*|JnOZ0Rd`RTp)1AqJ|-t&R~ zZkZ%vJ?unIf7KtLQm!@G7i0sk?B4iKbOwl@@-I>~*r)tUTF$RdZte~{4&aOg;!}P$ zw8`dfoFM!CJ}Si%oSfNnERH zO|!Xy@PtkUcgV<7N{1-1AGg>3Pn=!;Cr@50)7Bt~6TXwe-J-PXM4MFYa%l2awEk;k2 zE{cer9wzwro|*YxqJlYycA}>}+@B&dbEUsO-UM7YL#B6!SfoQHE%J0YkemiBIzp!B z(U#2q=os0RaT0&ESe$eQJa)!OeFnf=I+LAW$-XgWAFeUC0!LPYiD2K5O3M%?RFggV z0ruXLd`~bTzt{?YR6N}rDh%QYEy?0PAO0P5mbP5xD}Xq+_=xd;kgr~0PCIso<<|1^ zVQz|(E9U5fNyT9tVojGinPb~ce)cn8z0PA5TwlHNQnyvZd5@na&IxpjQWM|*&Sa$i z?|)|vxjy~%*!F`0JYxKvt3u9%rTq-u5cQbwNa1<#jLIblkfnNJvY%t};7AXJfxIat#6m>OiBl94*~hB#gdcv zz~iXoWRG-m0>)t(w;)z-5~NdRB6$G_3Fg^q{3jZZJY%SLx>-#o$W>w#u#2bo++=NF zdSR$3;;l1~FQsxYcO5y}sJ+}|B*1P@vGVVT=k#;OOc`SlS z@v?jpNJB46?&Rca5&a7xVgI>=vz@BdeC?F2 z#5qKpNo;m@5{hrLUF9lvVJXg@YRq|394)D25jK!YaSq5i4>&kzWExuzZsb{-UI$T+ z7BulsdlZKO6Y)vV!34D#d&@b2Nze*LYp^y?&u_uD=5dZFlNqM^ZF9SZ=--_hoyw@A z_qbg^HSXKeBigsN^lW(^09Je+;h#49!&DC~Z0F$}yRE-p4cfG1)ga2`5a!6=_BgJm z#^Kyqbxl4s+)g#_Q-f&VR>S32$}wySf7~EX< zk5b$_h5x~P!v8GQxKH?^eM|T=(OJn6@E`UNzDf1cf&zHwEh=EHa;8}gK#}BsEBxDL z|7nVSrv`qRPXm9W8uw{Hv~Ou3VteN{31RqK&;jp0j}F4Lh(A$|vIzWXDJ2IV{M=Ij zsErNxkFX17^zor94uKm+*t6A(H&#bSE49Uir6iYuKH?BU8TVjHat;ad9)Iy#lVuX zghd3F$53+c1(rt<6-;Z;oxt){@KQMg%OgT8(t)KGc_y&D2)b)0utaucV96aDTaT;5 zV`pG#?z%ku1QxxN#>>@OWw3-^X&J<4{L&6~x4`M^02?mBodd#Mh`2{>V{fAc_2ML> zAXu22!}w3G#n5RK+c3db#Ry=RyS`87h`mqhU$OV965QxstCZkk%F(e>y}D_%y0JP? z9)-(Msv9>#$>>0(w4u_tq*57WH#)#=nWO52gSOhxg1(Xq`trPjPAc40aD9^f<`@|kuI7bnFE-5YRFy&{6`*jC&5 zG8T31Hr2tZfOho*C3m(a@ZrEvGRwQ~XBAva+q~56*3j_b()L4vZc&1@In2Vmhmrc1 zws*7xW0zFYk+6_W`mrscCj+czB=l{sgm`IKLf;H@n^QvkXnU7nB2Ks8a@arTGh+BZ zuNZh~SPXyZtQh9;Sk@&68S09OA%EHvVsTzc?8Pd$UKw5*mP9GgZDvAvo0K~u9*B^y zSnNkr7P;7e2P5s+j)<2;3|-jUbAU8tZ?&I~+^#(o(Z3K9_Mb~gel3X|5z>F>+7Tfm zN+phHr13Q{2pVa;9ZQNq8V_y2x55D1l}Gz47r~w2)yC$?%@D5b+Svx%KpYRtw$_J_ ztP6_`h_P0!433mXivtSZ;J9~;wgr}=@x@uJ7Dpg7!eTy!GkiFWJ%%p<3+Wisjdp#Gpf)2?IRy|9 z`V6BrV8u3Zxt|h!yE%P|QAZ;|zo#1aAwi;j3keG1a$AlN!fpWp;+?xqx>pT5C|pk3 z4l$ebypaKkH$Lg52IE}p-I-BG>thMkxKAIVeM=wn7H_nM2%(Yr$bJzHrFv{ZH=L0? zx(U-FI!Bp}BG9=PQ*!X3b7v71Oq2jK3K^w3Ocf%I+FNhz_oUH=}F0AfVQ??F?F3}DKAw*!RxLSAWjwWXw2~VQd%0$UU8CJ?HnhSgxx#PDtMKGjtidruE$1#EYHx#n)6tG; zt1!708QxovMfGw*t&V&k!tRl-yKsSscXWW?~4R}8!~EQap~y3HwuPQXOljQXc^MiO&a1=ob&rC~|T40M~3 zgttiv6TLq|z5)Tk_cIa!xtEc43?@1%V(7w%908;uBa#~?IyItyAtdZSmyrBg5-^c8 z*|}gM8QLguM8iaN7z7OyU4kWEm`IPOFF6VhcWAGBh4AACK?0D~_4CpzfD)9bEQHQ4EOD}m?MP6t0(9!^J` zUWWslY%X*iUdM{=rg?*pp4HLuVT0frd zv$0kl34Nl5nj&wLXNq<=o5E)GbmKzzog}}HyH$3i24g$B+cSGe7GqIv7jhM=`N7YP zh@Ko0{6QG@6RKA8)~R`!mb+z^0b_f7v>cT6k=O$Jx*B@uZIS}RQvkKVlCNO{DR6eK znw?yG8h}lgXfQ2Z0$1PYR&1Vs0bQok6F0>96N1`IX5_dKjQwFGEh0^n42nRS=8h4g z^&w5Oi3;X`+d-Okcb~q;d_r?ptpW(jWb&UNNhi>>Rft0xXwnkT08NiTcMhOw0U1Wv zXYV1m=q(Uu;uD&I8y|zmPMpbitdzXxS~j4XjgID4gNW#8?ieh|L~~aotL>iAbcD1l zpBw`as#89kP{f*ja9y=#6T`dEAPYQ&PbOQf_4%L%(Uqk}cD&C0n+jX+5)f zzXH0BcQ2O`)TXtS^8npTBa#-~3nhyp+{?cZJb4dyy^E+|4!A4sWeAvXx|i37IHcW+ zmUza!oDMCv;a-qi>0bE6X6|JTJZ{Uq$Ogc@sP{#u@8TTc*gN&|=CY zE6;P$@kGT{Y+K}K)Nu276D_3VPuM`pn`|jm>Wt&0z|k60Z53gScOEBvk1yEYiKx(Z zYy1}wuhSau5aN)w##-VTYy3m#t_^F9+)8WACkC^|Kf*cE&bP#}0kFnuzQtMNQ$R$t zH9iANim}Eo7=V>k!x}fn`s1Oat1ht<*+jCH~7?)6QMGn?~1#=Kx$r3LHCY*7}uR|JQh9#V0PvtbT;Pyda6tje(V(dO0m_l8R`c%Z7oZqQ zN<}Jr$B3Sr`UTB6V%zGUp#+mBcG2QYPR9mPvCH=9xxhFyBNcT7qxPrj5p^nK1$v2( zPRazeX{*iX0l>{qpuezC__A_qVJ&G2+Dy6R?yy`s! z|6Z^92BLyFh^~0mGl2=GSG^;|A?;PQ#4}#?P-w9YuZrACugYIO=2Z`e$8C94*#LM| z^-kNf%jH$S3SHCL{(oXgF<$j}pJf~$1HT&QQV-4VQd#S5_|t>JtfviVLC*A-V$$RT zYk#I{HSe5;&Qz!;g)ZG_1f^}`|E%PZ$A@YuCeL64h5OL$Yk7R=e1h7v%%%_B zn$Z^KL;DC;+&*+~g4)lxZRIFh^r4i#itwQ)5&V07=QrAxl`^`N)>iRx{tR`cHJ=v!@drF`s?XeCHr zo1=#9bMIGj%Hwmjbd$GY1BLtCN1&JZy!Ar_wQ0#spZhSQEzIYBonXc7bH7Yb`x&>b zB1MZnm(o`eKKFM7|6ZT_KSTv{5MA-PZwDrvKKIul4r!mOC7$uQw?K<+_*~>x`dt3< zF`xSyc-)rHl?{N;RqwPtyIekZaoy!}_s5cAeC{CwLzRIG`{A&^v09}cy=z>ay4c}c z)2+4PLl?8{$VgKRZfn%|@;Emw zmE;U;Am!ZVDqS)@Of+`J2F{uWW95?tP58@ZZX>iE@6t99)TW^{UD^eV)^KUF`P@r0 zXFbOCZ1ygt*nBzBvD<-NMo|0Nv`q{}iw=y^Nf8e0jRgN*2X;46!5l7 z3~@+1FfH+n13L^_Y{P*ex6*;}7mPWuRq(hi2PPW;2d3Uzdv>`T*w>(II%)hSmK5W_ zp3m)?xCkkS2kY~BFtfQfT-fdeb0g~VxPqM6ufz<MVjwPC3}MD}yo@kC!QwuI>0?aTHdsQsMU)`p@*Uq~AntoxbeY5Qnrc(-P14vL8WrZTK?eR{Apjk}+TQ6MWy=0YGH~;LFszYtJs1FS`;% zMEkO9u%sAYcEmufQf^fGH^@)=`7NpKeIMv(vkkAdo1@7-INoctAg6W*NIidMcDt%I zWgiAQWR>}lV`nEJ-vI0^w|(5()QI!=I4!5-erzD+<7T2_xhvD3ni~&wqGmjVZJn%| z&EKQYe0;k0VS?H;rKXpAeS)qJb8V`w}}eofV<*5-T_QFeaAOL9MZl+ zOFZK{UJWg_;X9C9={xx3WxnIJ@Yv})%o|3IIF=dR65I!I5ge{kIjF?0rY;Ru@CppL zbEE;6VKe|8gS#)}Nh`HVePXy#SH~B&)rNXOlDQMWb5Ak{|A{_C=ZvA=X=vP-4rYph zz^Qd-!1V@8u9>`YvTtY>KZiVg5Z1gkWjuiecBHCXM$AV_ZtP@|h0s^pu$XTSOc8me z-mb`2udsBETPpN%Sj~OVjNw^%dWPVhJpAwu540Su3^b}^+&uOrR~X|I22h-&L|Ma? z0j4vjrY&O?T&Jd~(%t;5D#;8Z;ZsV&?2x|w0)s+Lh=ajU6OjjlJujkF zaWI&ib}|9>vMi61koH1NjOe2zs=yf?Dvn@DF`?o?l}j77@&G$Ev_4UbJf zBGpzKq2bC@Q~E$6JS@J9oOWef_H`h6bJoUv_Is78)x2SfFp!k|GGXF&83G<2W}d5e zoLR@))X4ILg<2lTt=K>+EM)uZ*=bV_0*KQTm?<{=HH9ABYO(fV&c$Uj{9<5v3!y zGD_#Rghhx~z+-2W?mRgFBZzBfK+T>+HUMs0nJ9a9xe%VE7rWf{3M?tcZ7p+wP`w~ z{l_o02NbP2>dn%3s`Zh`|h zzjqMSetvCJNztMsrlwsHj`$IRf3G9{Fj2uAL{}W~IlzR|5q}`WA?=8@#50a~HMH1< zBSvneBjz@QIpP<<EAFI zxA$#-+9{JQw&9@nA{*@E2e80@!A}?Dn&)29iff*wYBifvS+pL*_BcUhvv~s1vD?qRkf8RnXy+G%BkW0T6$6zZxEldQ zDd8g0bTisaU$55s$}S=Gb$AWwZO~cTSemaH;tuj&CgiJEm~qD%QZi~R2JuC&KL3S8 zkdqHraH$Dr%|vZj-lV2i9_7^I?jg0@#O%LZZel;wv|uRkCj;ZlEH{0ORd6jgsnSJZ zb`>Md2x6GN*tUrdxD7a;zHm2GU~s5Bamo6J7^zH?;S zR^|-xa-U;ALQk?XLNr2uD4NJ6V6H#Es>KqpbQ{w9`6~%5S;huRQ_)Mn z7r-Fs6m|oa6qCXpTpg`fY7M8K1;##)NFxzyP0`A-!Yq14Nf@ z1|K4*{S3NIlN=1Drj%ZaNKOBf;NP2?evPPL4!A3+=}o|dGd2Bkh(kIx)e_I7ren}z z8>uOBi%~1yhQnVnmg-ytkI{y~Zn^7Vans%{XQrl$Uc?N4Dj|hSd|B>^`_lL%U(k%8 zRBvOlHsLr<3hug8Z8nWHx6EhkxcCLlMTCkCecem0bYRN}Dfp`eXbn zQpO!ouu9`li@3_y2m%jAW68H2HYUa)Exe@K7-ET`oelEm8^>xR<;E&*lv8P8$OP{f z7(*r<*_Tytr6a0zX}Oexb0ybizIrfau}5>tx=kv+c6gESUV$N_+C+egYKsg|w~J_1 z1gLV3$^ca>{>3lca*Hiqblj>Ep2fPUQiFft(}0o6Xrnw_8n0F1s>jWx3oD!F9S5I^ ztSaGu4;UJos3BIMXGZ1H%D@EXt4IbGp|Ps;BDi?HQQf#14aFrx)qx>qE})1_Dx4(v z_ay*fjaOy}VRe4hQK2>NBc(s3U!;JX9$U z&O43oodjJB3{1ej&&_f-<-D`Y!xPXuRu!AjN^pMfgmeM_oK63nO>EM)Ih&MqPR>JP z+moD&|Ktf1l5MfZ!c%5JWoiA$4+A=l>W)NMW#OU|WHH`F7x-nswE?CxKKbRWg3BkX z(!hp)rRIn)1F%hV286xt<$*yNUKceH>2)_T(r{d-U_24jso!eQETVf)1e0RAJOHHe z(*;_`%zZcf24)ZV1FjECMT#smc{HMb5t?BCxrF3ZQQ`j%e)cM=%H) zJNp@y6oZ|eC?gQ#f*yG@qdYM_4o*AV1*h?Y^gZpjfv~NJVc)o;r=Wcze**=X7Qns6 zD4`5Q-JVgkns1mg)Gb0g4EoYHckUG-bD4KX(b{Hb{$+V(i5Ep{Sti?H11Y#Jdnt_m zem7gDQM+uJ_cED1q3d)K?1sp8C#X$BDCY`dcs-G{2$4~;C;}pTA;FUuB6|T*!5nZ` zAhKvyj0o81@ zo4Ob{qTSSGSW=9eI*G73>Jqtpe#&uIOH2oCII4YP+Ar$v&)0%t^1G*|sx@VIv&0B3 zvrx2mTrIwM6h~}(s5dFWwu-Ru9|J}+{>*nv=tqePUAOS} z0TWIO|Dh0vw1w9a&sg|ZLW^x!c;r@Ecs?<&R|^o(Ek^@ zrY-y*u%s9Zf5_N)WmGTW_YZD}OFJCruVz|n!*=hSX{-;S*Mf41Z7y%cSkFFUzL+!}t6dh|rf3)Fz!7`S(TAV&qSaw+O$mhTzE?`JYBqFbCX~$bTU);q(h9 zhd8ADf|hv3FKh`dw&53$Tj>}0) zN3D_PI^d_nt*VzOxe~|KlUy!_Czk`=ND9gZcWY18Nz;TaTgWtYsn$?-)xFc0{%fJL zwB0dZERd31cE1Jr>J^62u~S>GzBYGZ%Zsq<7nc{=89%s@dbGk1?o1!>qb(_IAMX$F znSt@|V-;L5zAD{5!=0K^&1@M=Fsy0jLUu@$5*@>#-xy#WMJ#Y=6mcXDeKRBN7+C++ z2qpzs|0N*JF%JR@C1MRBK&6!uAOsCPh5Y4MQ0qy)A2E2LAsl=z4SDB>Tq%&RytG>W zN@ArzT5_d}Xb5Kh6|Mk%dn_p?KtE!9c+C7#RA$+6Vfr$9b->YP8^QXo9Zj;&Mf(+I zv=l#GsPxOFj-@4IkpT7|l;JSrdimnY>J!StbvUUBiC3RKHVS{%$6%}Rz}WD_$Y_1_ zd5e!d}U+xJ3mNY^e>JgX1@wbLH31N6!!+oKoyrW_Efc|>=-_W?lXzV&Q3y}jyTJe9b+q` zho}+fNlLVwl7q2<)*dBK!gRhx7B6U~AKU6U1*Dmdh1{zz zClb`A`S*rfX=fp(x|ZooEaR+0Y|MVxd_F+* z?B?_Bj5>LAw%!@toUvNA4}aN>e}roMvrst=OeBxMLzwHL{WFc7*UeeXP02pQFT0=r zp!)e%x}WBA>l5SS=t1kSeY0`V#8{(JpS%e}=r#NtE8e|3fbzbUaLSPI(^)NGksJYa zK)?^E0XPwy@8;9OZ>Yw7S`h79T9}Ceh#CU>Ve8hgCEl!Som_|b(aAqQGV^ou}u%6jNJ((J+^Hn|}pY~r&HSW{CXy4NQuFmjZ4$nhj z4|XHPPYZhGY__P^?NT{QMuT$|fgGUm#2(O9)PS7YyF8!vZlN0YX-~9oX)nSZ-c9w> zf>wC zQ4{mctUaR&b-j?>kV{`T^b2YvPG$TgpECX*)woX?qWyfznDuhPFSno!-gzEnglTaB zjmpi7SU}sCl7nw!#a=`OGdtzr&rH5-lFz63->Z>+cgONzm5k9A;O{o~cq4dvnCIQ;gIT==bQ zyA2%o4 z-iHWo+*sec3F>IxvskW{d$!Dr^FB`S;pY0&1a&mm8q?L>>SrX*`$M8XH+N4G)Y06v zh4Vf`^z7#I4~#k*l$vuD@lyEWchSBTzegmt3#fith~Rnm;iw#!Uox*{J2>xhY5>kG zYClFDt%W10#(i24?OR$1rnDzhy|kbM-g%2U=swP?;oSjB08SnD=hNXuRO3D!iuNrX z=0j?Q+sjwUc8XU~T(>YM_+VO`6WxJ#@1%z6)c#~X?Z1s`+^2ofzNLK+cq>%xp|JJ( zeu|$K^vc<6QLmkZcfUvt$f>=@^J(u1s&Sw8MEjQZBD~-)sD4_|3h%x}t+WsCZh18k zG&ptffBAH=J=M5R7ovSj7eQaRJJm}In&6$csELliyN6OEaVp~=MjaiP98WdwQ-)|i zpEA}_y|kbV-gzEnglQ4prBd=D;N1o#2Oqq95mCWRO1c8?UJn_E6W$#SaY)0vTH+aa z_d@8d4R{y1mGCadR~WoI0*~8*cVze+W>OEMKV|rdV7}Gf4layb;pZ8&k`GP@e#ETcjeNO`2Xp!_4ZRRQ}RQ# z|E6j+Uo}0TS}|)F=BbYk*@>D9azg-JXh*|eRRhg~#A@**U%>`aNbDz{^^;MoDC>_H z(*P>VIy9h07KgUi{tQGH54-+|pf)|43A=uu(H052{+-~)4ZZz^ppND}3$1FoXUn{> z>(1BYk@#~7>S(St#HzW~&q&zy0HQy)O!p_Kqq%Dfc0G~k+0Ey%j5<25K8tGH7gvk+ zt++ZO;T)j)X(6)a-P`d@v>MuhU9X@9;LL6=&8LN%sm6U;5bax92&S5MQoXdG1KxRy zIylJO6ARxT#Y8-r4M+AKS^-Jf4{g8u5H)nC_THUOdmpD7_i0bGZ)tDe9HM})N@K}w zF?^BYw1pYK2hidS*u~fkyZSsMe9frY+9E5oY(29__fu+gP9;B;PszWh8uuw#v~MYS zerC9!O8cQbq%E%{JZK9F%b(&(v{cm_TF2z1v5dWzgi^ps;F3_X1W9=C;_$_4;ERZxpPyIkn$A3;Pk zdirN9DF!_~It@tG#x|5UREOa*hU!2Zih5uiifT682AZ1Q7CUaXTi6)~YuBt>DNimX`G2(*bMU{<>DM*7>Sd^Y&?iwVHDvvnO_;Z;DIo)lX!{ z)O#oa;xh@mb(Ohd3R&%SLk;v?oM1OAXHWSp*+_i1`QoXdG1KxRyI#``TX7jn840vb5u@M;U-zgzD_4t>3dVJ0+2p8kiqiEmK z;|e(QAeTRu;Yt3AcF598ao@uH;Dc&$e(Y`GwmKBH!s5&{u<+V2hI=qIQs*RC!KkB6 z>Il{49*Qag$5R;d9wbyvx!yGy9X zeYz9vTe^#Ihu2g6w4fE7 zJ0&ggj8i%bT5Q89A-B>g@rlix(mC+BEvFthmpG^NE$EtdN>5-(F;40Dw6#$O zJs#f#PY2u6sb)>w}qM(qa=pra>DQ!`Mhu;;tO zNHgBcmt^!36}oQEw*)4f_I#HRhqOJ{63^K4pMy5ru;<9FwC8+cFnj*r;-zc(+B(?) z*mE`C;_Ufa;E1;8XJbh*_WV?91BNFbh%@U)(dII?lQyjTA+de*6`y*{`LA3_4AoW<_J1ibn(=nNBxVUwq3ia4dtkz8|Mv}XNZWrc@r?cdBfK_k*ni|! z+J8PVnEn5gco|zxVq^ng|J8hpv;Qvxj%fQoh$Y3?|3l&Z9jMgn06~q6jE%CuHO|s6 zaa#Ixdu`bCr4)O3?`OTzz`Oc3!GAW7!)1EO*oK0ZLoNg1=g&wkR<)WpPn}WEY9eL6 zpG(MB8fvo4Hpw@sQRYc0v}}?av4NCH-r1pF;j?vqF-H(`hV_Dn{d_@F{kEBZ6ZD<2 zvd*01Zi3o0v1U$j2ctE%PQ#|%O=&LmGq#a;Q|jRE4-x&jH^@FrP)Bn&6JMb;d&Wb! zx{OiS;`=hurJKRe6V%ZRZUt|5nm_#v#E0cJcRwTgb9472g4)lWZPF=POc<$|UPQn! z=SE^G`vQiULU1yXkg3^PI;(gA~(cqU-D2)b({U_fqVz`)HG3mEF~*qJbz zm$I)qr&b=Xmo`*J2iST2rRwO$vD!$vQ5_pC!T*;_jfwH$N(mm8>h?A5eC{u3w$p@q zJ(7b#vM@If#D8+!wcI<+92t}T0b&pkt`&db`iX%l3A009xPBb+)hpba9(`@E}j83&I>S)TB(6lf%L_U)Gy;6aMiYaA=E6DhpXi} zdks?(4tViqfVqrhZ)6o*l2xV8)sofhY1xv+AONhNPrBC!29Q&_yI>%J;sq;L87RZ2 zwxgR^1W(B}7=nB-z+6VU@AFDmm2RKmPK!2M26Dxk`Q-Xwfc2bmT?`QrinUxCtPY?@ zDc3faE~z$#Qg(t8b0CuXL4ebYkiY8{vMLSps)Zh=1tnn1`IPYOz|b;E@LHo}gj<=j zB3d2dr06ClHuzgz$4QT2q{({tC3jdzpK-47tT|_Gr7=+(<;Du^i2ALh$xQw(H)SJ6 zGXTV)znJ&D07yf=%y3e>2E!N+g<`VlAp%`5L7s91FFnb=5d#)l!2##eieG`Jb1}+L zMS{crO4q`f7cfp4T`KuUUpTf720^1q=U_=OXwqQ>oN!tf)vrJd0f#$)Kw0M%sv4JVV zlx~B*<1wXI6V#>=miota>YEvDdzjL{68*VBk+%`l(cBran+E2Lhcu@2DWXd^ga1ZQ zM>D9S9?hSAMq*0eA^LN3_f3M@&z;*N$cccM5;fC{z?A+>@bBG(@c)Pk=776`DZLz+ zaAHco4{=CiN?PI>Olc5WYy(q5ZXwcQ_mpz8#ZZln@EAP=xd=5aF{Q;fvv6e}{3l0P z);ryN8594WVia8gl~zG#X^&yPHAWzQDDu@S{M)n#mCgzbER#2$$tt*@4^>LwMk;`C zfJ#``oR)4wi!URBN~Z^yN394@=@drVO;G8o0CO41Ud}4GB&$kE)JV&gECyL&{e05B zG%$di((Np$^v(ct8R_2dm98qy0!Lc3*)otT*32i@HwReHDc1r)rLPA#%?SC+ULmW} zFi@n09;O8)V9WWG@P)w8GD`4TBMB;<6w#`HFVIay!WRcK(vE>j+q^2;mu(HCAz#*Q zP-!9Zlp}iSNp_7Gu+Rz)IG0xZ(?WnsGE~V0D#`Ft$v+xYIspbjgGwi3Nim?(5%u!L z6=O#|e0*K0U0ja5y?zGCrT+m)0*WjcrKkOG~v% zeQbCFar>nuYzF>2RIZJW!p1E4bMt6pr~-$Q!d|E9NClo;wBiu>&w==#L-9X{!++|H z$~Y8_R2oBLg9Ra1F9RjVy&y7SMda$Gs#f#WQ?wPzp_SzY%X>*!pGgGvnX+E-9{t3Z^o8=!8)X^-@M8lJ2 z)_4dqWfV4pegMqy1a&lzvw7g1X3~1R zpecXaZ2l+Fv761W64ZV+-I=5epKx7?3O|cjSNa3Nzjs~fw?qYVz+G8ax(J-7b6x4_ z5Qp@-l9qU8UFjU?u8nmip(6aUloGu%sB|;ILFW#|~I&YdZ?nU>lghAl06E z%0dbz7^x#PzySgov%rIqGJXOjz=4VGU;)R1+VW!oFHp6nY~_y1J?}ppIv-2Gb`Uy3EuMfkF1ep5pH% zx^y%6E`mCqL3|xE4C;q;di+_UOE-g$5!BHP8Yv|E)I#eyUE)bMe?V~H=J&ey}EfklAw;}Q6@vF7sh(*N||0vbnIqxJwfef(++AW zT1=TJcU?rvbSc5VH)Wb2Dwu=lO3JhzUVdlFR10xPr%YPnnUrZ2bk|18gxt!MiN{_n zWjYcbJ5wfeE8fauYn5`Nf}0B9c!G_!@<^rB7=vXw_|T~Y>vzV7H~>#i3^&vl8ZFdR zb|twV3j6f4PN|rgCXzfUOJT60w>zsc#T-u4R2aF!1c&8&<)!eeBD!bf35ZsJYvWtN_y+ z`!J`s+dShdj2rmA5EvwCS8U*WoRRuB@NJDtZm1;Y?o;v)<{EzsFq4t^GpvG3;=D90 zgFgnk%_{@USe!Blr89fJCL5HQE-52}-B|^f40vf+2EBo9^U478Ag2sM8PkaYW->B3 z)++;E8kWJ)fo}8408O}42BD;EIKWIs218yM@Y1jhDuHfu%HTO_$M=nb^PSW?U~*wN{n%RH(&ZaK_x)4i`@=d#$8-JR~|maVmX zB6YUH(5K~t<_2GN_nO^64Y%crwK;48mgkJ6yDse7y$)uUnLNc^p>dU}HJ$bKJ*A$7 zKJ{>rc0tomq%u>siT5@ofIKUBT5QR!*g$Fp?>Hmpx7T)a%oCo28Y^H~06=5D*)s1& z*LMKZ@#}VPC8*7$&Rn;s<*LX;;+kJxQ(vAE+N>Il$sB>C_LH&?kxBD-m zOE-hxAgJRR#7UE0fS9Qt0)y;_J+c3X=+e#LuL$aB2F?A8T7>3PM-aUAt$C*5OoBR^ zM`M?*X3=;^uPv5{F5N<0NKi*Jn9d|Mm+2DE+TvjZ2X1~3Ca9zNHCLH5ujW(7+S3}M zS2vHR64cQ=T8m7YN$as|?P-YU*v;l3LG5SL9k)tzifd1lqbXwT=|+No@7mM#L*bvG#=ALZ-#G>+z_8Er(nIkDY5zI@N0aY#jn} z`b0pnRKQLW9a)AOV@u_sN_nsZNAqkbZ>SDe;oQ9ebp&6fRxiz4HC~1#EAtDrRq7#P z-})E&Km7~+OTYXgFZFm3`l;z>ECx>fJW&6}_|5nwV`O|(V@H~;l2P3MZ^oMF zu3!~X>7k=!R3AVQnsX|njas!*pM;}RhaPDzsSlKgD{&cZuj9K=Y{8kj@)v)|lO;Zv zvw&;BOH1sXsu%Pz=8vQ2f^-}BG3F0ct>zU|^)V(FG0Ti}{x*vVPQK#emwEwMM)o_! zd!CF;k2v`)Hjv85=9{X@WL7h=G!tR#hY%dHA2y?NZ_5+C&LXJIcT%bkH$To`v_=v& zo6oT{i`HWZWCWGX<|3kFcObJHLG5SLwiXmE1~Qa>iU?$mA^7(OGDi^=%t3S|kof~l zS!W<~M2JH=kkJy)1Ts%RcWneR$gK=y_{+uunJ4kRYv;QI*#P(=^$y#!%jJtEKt!}J z+KeR*UnJ~&tA1z&vt|AKrHgY%dwSfFXs8XZw4=okTC9Sc(rZAdaRG|7YUq?+rD`>= zn@Xpo1fB9t^G)$d7iB-RE$bWAfbw`MEr#SCY#`;S3}2-0KrtTbG}d@XJE-?V^XV|q zZTa6zP@9HOsuCU4yCP}P@>An2!t#HE;K^(Gze-dv2iz6Qe=jiMwESNRaY$Q!E%A)y zzX4io!}24y((?1k%Pjwm@VG6@FB<^Muil9`%fI#QF3Ue3ONz1lN7bt%aEV91TH?{? z*2MXN6%Ie(Y_<)raF~Z#%=uy23NP3isg&yzHC(s4Xn6JMW22RVe8--kmi)eBcU7x- z>s0v;k8)C;q{l6C=~sLtwwGC{hMvdEXn`dwuz{49S?JR|rHU3$sTs8-Wpw=Vs5JL{${+V#PzQmZCGts8WF8B|-mj|d`zLoB!`P}-% z`1n|@(GMHpYK@B~#u@-j-GrU5;fMM2&Ta2y@|m5;VOor%s5iQZIO+?O9DKKoJx)|G z2i%o7>L6gk8Ap94#33C=X^Cgzs9mAOHsUDcR>o1>JhM2e7alv~DDyLvkFG_a-`Hg! zKO87+tc{I`i^UFN->7VWOElpUveIHS*Nef=moLQ6S9s`BuhvUr8`*~|VmV=+_z4GH z)L`{su`o%C`86~6u|gfcd07kw6&mA^J>Kq9F0Cn#4wmbs;~?!kfqfUlE~dd6(8j1_ zaJhU1Ka+n5PhEW{4&te+@5(z2s3`^ll~Y53G8hbNw3Xo~Ba%FW+UrUFpHQOQYv$gF zgEQcaq2B2k(Xa{mdp#kGzj$r_WHw$f?Fiafu}g6-kV38?ULA-slB#h#4qs2mfAQL$ zIJ2tY8!-KAXLHKMYwM7+7Yn?_R8e>!S!&+T-C4EsjOJrLlX8DKLb_0w1dm(*41 zZhl6!-~)spdu%hG>`x91DyQuC5LOZ8FDyQO%_vr7FC(YBic;lmgQAU8&~|x%(~S5p z@rqxS?nLsbrB0WFu(5@F!fphHkP)``-H|)Sdm>sDo1xLnMQ(GP>|r z5{vvYu2gD@-pT$O7zDkr@>?t^23}iIZh7o0h;Z^SrDdeDT|~F0>rj{ zUF;;3nIkTy%v80eZiS!AIE8(|4nQV)eu$FzrQS}q!oRcPJrAO#N1Qwl8%QBq&#`pH z;{^jDvb~nZHSFh33}zYh7>{KwA*jtrRw@#gQublA2B*fdj%L$%NU!xAPju-9V2&ZE z{S3P8j2sMN6qJsNz$hvN|K7Ep4MYWVz+J&8b_FJ!7)5`GLmH#d63<{1e+LWQ21bG0 zV#xm(cn$u-v6OHIJVu|{^67%I0o81@Gr9}9rk&9}SW=8LTHPpbm>4eC^b$}10G#4K zG8*Zi4xpEMoUOLuw0fP5_7&v29u|{9Mk8*lLs|*+T@R{S&DT!RVvbW%nKJ@+^^kHO z=b^Cu-lx>K^Y}e2t>lx~K+5lJDRk@n2vbTP?K9O@5%&29z-Y!@`Y_}ti3(k}&yN8U zPW$|w5QnsV))LRy=YNG3+py2bt+da4VleysE_mFQeU=S?eOB|$_WrJ2SUbJmWuJG! zl49)h5fh`;jn&FvKij=CsCKExr4NpKV;pU^VVl3?Xwv?qv{4>`1$fvZzxssoFrEU7 zz$06YhsU_+BwWwx^A;a_#@WZ5eIj7+i`SiW%-S{LZ+N&b1Q#*DB+~bq1=o!+1W|RU5T^Yb|kCSi1RoSEvMv2Y#`-GK48GDxF_VxiD+d|t(^JUBR6i|j4&dF}?lf8rbCoy9Y5|Mn2&m0CAEpN2oXhXer-jc@jr+79+PAb2+@SFd zs+SgYz&meI2Zy)phBG>wZ#E@$XFs$j;jbwHICc1od^-FK)woZGqJ2w;OY_7fa>)5A z*&>;H2VtUHm=k<3EzXI3m?A^*RYw2Y7}caKtY`L6_oRmE)c)>_I@*q|pc?mSU$k#& ze^+O0DTn8wum^h-#ZL=*dPaYlo46@eU}@x&g`In;oh+FO@Tdljm2pY}xi zmi8jNV4dox1+DPzThz)nMply1$ZTFH)ggb{x@c0vaO&d5e7bl8)woX=qJ2vjL0|X| zs+Sft!8>nJ6Z6fKFr$h&qEzZa{kE0yNopi6WxQ_o77%{J|0N&Gr($TU=i@&|50-A!GC`tDwtt$SC(g901=QA{`*siLmK|m63@VY z`#^VXz<AQdqYt4MX##Dx0SA6F(DXlH!AZQQY!=%ua4Jln{IK9js#f#$Q?$wyP;v$y+#^_l z!-PRP+r^%zB#{R$)bdMSf(`r=E}VqDp%#Q_i}@muQaoHZLQtD7&x8xBjJ7?v@Ft=^ zHw=H@@elns&Sw8MEjQZBD~?{(Gj@t`_xFB%6KB5GJZ`p?o)kGhoyj( z_OFPi8f*g({4mvC%OK!cVmIL0)7Bj?{ya-;3&cm%uE3Q`OXB~h!$!aarb2$iZ=W1NL znHRl#4TvNjy?YfwZMq^8y?Z62Z4bSBJJFvT6?+Ro9nD=^=-tPOp51&t!l=hnZD9uR0kk*+b}{zotv=5Pk}_(xcJ2u+ThHv#T|kY_spOaBQ}Qs? zxKGKVeM`ynGs6W{+7Im^T}JiVg2Fg6Eh?;&Al&WLfSfvdO+FpnM>X!#k!au2QG_#l zkm{!et?=$!)Jppx+-Ip_ICb$@K3#m1YTTy_(Y~dNpiBEP)k_PS;GMUqiH?A9f1^g? zRK_#;l(Egfb0&`-_5IX{sd4&R{!kO!pGVoP3+4WvN2+gb(biko#sf^zQ$5yXRX z?%~JK5dEiEp0syzO^Mn2{v>)-3kCK}b@Wg}yQ6L9cPWoXg)lQ=;H-EvL09O+7et~|64&@DcH5+yZvsAp&! z4(tr=2e*f>ggd$C$@`M{9U6T@+sOyb-7??EmTT3KvTRyJV*x4^%p`9F8Ne&}FZfUN z5$xMSjk{D0#`WPX-z0u=b9XM5BTDqpCY!r)g6t`QZ0IRyQ8U(jc_%+OWqmCl-@IyY zY@iOe^1y97a7ho%^73QWzUZ`L0NgrdM$2+}q`8>2QtBHRF4yaLc@W*%5;omVSijDk zZk$`e#_ZD@lVzN1t1ZRxci(rx`gW{=zWw&Q@RD+Ele%2}$mVu~mHI$`d31CPjv23x zjZWS^sb=VG&aVukJQ4OY%KzfFYK~jqhSAZ~%1{|7G|4>)ic5>FW14N+w&&xx=S}-ZN+y z^w}ZPmiz4|rw{&V^SRZVh}hB>H2ob028z;$<;~{PS#}|R+TH9xb>j^DcputdNKYUw zy$O2$h4B+Uq#0u)O07l2Mk}e&`eLKyM1@YpMtk&ggJ0*Tb|0YK=mFf~H)qu<8>@qp z$>;AL!D_W|}aM^NkcM?Zq8^->Uz>GP9Q zfkpM=?iTK2Xp80?yrHXB9yaWMvI*N2yQnD!H9O1`Tu5lCuQ~Hl(C{RS>6%-QZ(ha* z3;`AdSMrqtK_*q~t0$=tZJ4C?6lu6L9xCb8e18-(j7aX6MNq-Pp zcE%x2>x6?9H=M}^z*DH{V#mZTlx9!hh@&*Kx#gNn?f^9<`{MHqM#GF$FPF?vt5$Rc z_^8T2x!#DkrTchoscf$ei@FD&P_m^yxXZUuURsh#RMy09ElH)J)emfQdn5?bjP}Cm z2b$Z%RITPKr`X);fu@Y^b}1o=_*Wa?S&V=SNLyg@DI7P>X>6ITgVD#^;4=tn(MGUKOWTx;?}$?Ul6nGhXQ+Xt7PN^gd)tcqOh~=9LbC z$4;+gX2-j&8LN&qF!f+&y)-ro*Q7TpbUkH~(_c9=M8&2dM z6OCzPDVYF2r3G00_2J)v&eAs1d=W5O5LecI3;F65FY+l+t0UKkuSJ)MHz_x&BcT5Z z=1uJ4P<`S2NOcsJOomItmC;R&p;G0d3HSjwE;oiMrIGTb{loh5Yn`p8uN%j1JzxhKz5Sg2o|Cdz&+-6qksjF`C#kXtj_a9el&()1+1 z35W~ljkwPImyFbZo%voI;$=5#Bj8Y~k5>k&8><7Q@p27rkO$NXE~bUtG^JMQ{Jg$! zkNf;{JfqrPR>7rORk|yiZ6vE&QywA^Jhqij@Vf*ClM%dEm-2e;pGT-u+|Z0>Ab>q3 z>*g?9{0*-8_3+DvPWqB_jc3g{Yb%Y3+9=mBBBAoP5+i#>&xshiuvP0(t^r$R;9!f& zrQvG5p-ql-N|nLV#pU4%fO5nPi=b3YHzSB)4h*H{K*(bOei|VNp)C|dE^Yazi?~l) zx+v*n{gp(vDFXwgm*^`@Z-YTl+2-r-I*7IEzGSu6BLn$9cxlv|z+T^XfwoLr=bq;>^}>|)9jaFI z4bvp0B}6JdjL{3J3pf&xk}-E-MjmP4iaNnF9@1drzk^KDL7V&2gpU){W{4-HjbP&= zjMiWft|Et7!nLhAG@n8M#A$48KSA{B=J8tubu^EyC*!{(y7eaGPjmTbNkj!8Gv1s> zU%U^uNzLjjOpD35ev^`q!Y~R;#urhe^(EuG6BSJ5cPANN6ttUe)VMb^0y;m}8p-76 zZvhRpnV+vhrbK?u70%Mj`%(9?H0(c*4H4bjeVq zR)L4rdTCSj;>u`g!)BJFG4r4UdFeU|YhM|n2{vpXlv!hzU$@SHtvpvKSQP z;l;xQ8*nadaC>abIz;H*k9_qC6Y~!T6I>Y(L?)Nq%qqBYNmbg(gkH`6PQwJqt@$3g z{SMllGvLj;I3O+~TdgxvKTNQkn-WBe0Q(u87}-#%;kHixm__Pnmt@?^!>!~BGuMm= zUEUsGI-}#aunI06tI~bqnAYlxtN?PxKJsbi-oPMpYGw#_kHAga#8stBwvP=uS;{s4k+@zLyIiglC zQMEdIjavS%T9!M-klL5=Jh3k$C0HIqnTSxU+cPFWCg~i)jR;*tP@ABDls2MPBaGJM zkqv@tT4Oa4q2Db;uWlZ1BB-NzY#p__pXk<$THVLxqa_iAT0Km4~R`*0iGtiHmu zh+644DH#Ta3PY{FPL0-wT78A6U@E^msMT&>W9de$z8K=3My#|pGKke#&|;g2)vu5# zfmm^6Go<4jc#I|(kdEtSWR?<*uxag!gmY8bL#b0>RS``qN0ZEWD~zxw`MVgXj7Ge8 z3){QW(K|Xj>Rg!S{;D-sJVvz>2r=zn%oh?f5rI+dfb#AY2IU_PqdFiUh)kBdKda!v zFI4HX0;581&3Mi2Wzf5PugVijCER;7`UlQLb+$O<55 z>?5CM)&>TdQ!~#FjOx0;pfj4i%BxvbS}b;?Cq%LRz&yec<(o%W1VoydM_!{LF{(Wy zS{2|0`kP4bVp~SqF^uYw2quM7{4kJ)oT3qI?d`#+WU{U>sW@UiiQ?#CGJFA<&V@NW z9w8B-Hk3#%wfX0bz?@`IB%?fkC9!!*#=uHJ(U{X8VGtDN^k;lt4Cb_2VGgZro5~(o z%tO;uu46Xd2Hv#4r&+O8%Kbsl0&=JlV{(+LdCm}~?eCAB!ZL?OglWF2)tsCz`=V@x zr0}I}`Hm5wOt{Gua&&Dh#k0p+@TiY!ae^sr>E$HoYEe zE zE8CjfjeNk#SAresZo{C;bhW2Uy06#LEgn*N4|JBcuI4L)fwPDnA3(l(#Vh|02dO+B z5JV;^`!uWIO1D+%vjS2*I{n52+OTbJ$?(vD@i`@b#PR`mgC z$W|Gd?wFbBj+>iemn#p}*lg~_D2;7MDg%vrsa6@URqAjY3~pn>txnR(!G}dgU3w!& z*ZbA;vg=*LY(EmUk}H)zJVNDSUZTo#%}f7_AyRqijAd-$uOw1=86T+`7@f**gh5cL ze1gx5N#zfh6SiMsI`JDv;Pg%RF_(H@f^4{r6rLZwnQbzdzVDD3o=n||67_npwEb!j zdfarCnG~k&SEyRe*G`wTT`Qm~Df=BDf^<;nPT6lKsLc>m3KvuM*D%_Sr0fq8-Fj2@ z2YBB(Q}&Nh-8fTr-iO=BWMvVi#gtu7%H-9+P+=+ilhkN^Df@Sb3a0YAld|ueO4-%> z;ykb8TOq#bbY1HqldfL^Ew-7i{}GuI={i?4ODH$PW3*$zbiMSV%Qu6&oXJ9L(|rREEQ@xDmVdy%hR@q+)uCFq9-1d++& z4q+8sS)3|;RwU@it@-x2tv7SaFhL&(@S0I=KdazUtt$28-pW1& z5_D`UpWt5_7)(a+UR}xreQ89iA`wC}5Sa+=!bm%opx+(Aq_9WW9yjP$Ie1=ASnrf0e!} zSN|OX%O+S`u{tw6}Zf40008`ChsajKh_AU-Cm0KDsyZY!y zL|M_7;qzjw=(0u)PT!9=q0)pE8kt zuEqWUY2K9;h{jj$0nVt*;68lr%?zR#llPthW9rUAyP_*)c|b8HF6`pBg*-^|#cl)@ zw}t5D`;rgh<#BLRYU)N;_Gv)&N>@&pxnomayz0Hv6>mrN-09kz$!;zj9hD6W5XVcS zUZmt>AOUz`9>IU2p+mgS^~0(LyU+EQmhUY+xw#OIv4-n#iThk(Sd-0OUYxzn6-#YE zOf%KIp_3^Q^c23y6^Twcy;6q#R*lmu)lEYi#_-JW_U?3DnQ75?zbmi+H+bz!O%IAS z3ry6qc*Lh^FFk5@m>GA3(>L} zyG!w6Do%;F2n_gif+sHqd*_-^j&U(rRV%U|aM56=Aiq!5F2{;dU`$-jRL z@0%n47T0|0duo>>qt?~0$SfuXk3q1*-&~e7{#00jVCvn`t6w(*GiG>@`|8&ufve)A zJ4jxE&2c=GzVOtxG&c~c=}RV{#n}5^uO(WrX5Vaf!|T9gG6v_nSeO637OLvW8NTl| zc_r|bOhB#VM*Iu)nB0WC(nH0>Lfq{-okA9{C8+d3MgnPTZ}MiK6L-8`jDIp<$XFcT zv-b1K}H>`VFkLdN|vk%nqDxJg>yQ7Ej2exT+A3n9N4Jt3si#F*r9 zRjc`$>5(-k(PUPwi&<0oF-Ra2BRPYY9}v{0HI=f(HI?r&+KvQre=Ff9ghdQK)!z%UA1Q`wIit#3_bF;T%(zV?;*FVc++xSCKH%K(+KpvjAY z9hiD&<3G_@5MEX=4Xq{<E(hlr|#NAQYYxxVll(D45JFohh+Nw8PZzO3CtZ|G zq5PG^0-X#HlwP72==ORSgdML#jAJ(3X$o62Ciz0xVtk%ipkw)+SO^j=57m`rAJ0c{yZ6l36E>}k)vrV07p4}tpy~I$w%3d1#^EO=2>2M7}ZRSW)>X;y(%4m%Q**qj(r>^Ex$AyQ(M6Yfh zhY0Fu9_?kCzU0x_8r^Mfx!-Xo?Z=~y7T&Xg~meX^;$QXy#8Qlv8}xR z^T?9O>$&1tI{JKgjAl8wc2n5Jgu;~+*1mezlONz%dy?;oAtXtQ zLhG}5c;R=@S=s}cuPkOOB4qy`){N}j zeu%$MJ;|JaxNzPGcwr_Z^}`F@xd8F70Mi*AAIvJabgW7v&x%)OEXU#U*hfCitPBh? zr)HiVhs$pW3_7FP3%r_DrNtilt|vsX{eZ{B5#^gl=LJNXnMYouA#to35v>Yj1pQ4U zGV*Ii+A$pK4G~NVr+5d-HQ*Et9IM4U2>DKi)+*~s)>?g-JP+U?a{*xQh>)OAGfFU* zn*H-k0AMnRk`bc6k^sPDB&`%04S@Y841xl{zKzd|0l;3A0>I>f5Uqe;N3{li$u8Rf zzK#y2YqFDA(93!Mp~zC4hoH;+98bu^Ey16|K2y7dBG z2eJxzw;dlxb>jrOcpq*Po7GpC7J)APHYI<<7pthFCkCm}`hc!7QNdJxH-N4s(U#K< za$OJ_2Muy*y<|YHpMsv+0=ce4mITPfmCitsp9{kp1i6a1&`@}eBAQlCC%Fv<4s-ss z_)m^ltM^&pXqX0X5d-VWu9^FB7RBwFc{B3WD-6s(9IW+;fFLr7@uRGQ3-VB<&k9%z zxi#M^nQ?$P6t@)zXMEXbo^6R!KGtWS|F^2edN>3j{<|tshMX7 zthLjFelwQQ?DnjJOS7u9Shz{~v}UpW!260L$~TXm6A)=;9(j$1gtZ=yn4JReKz|d7 zcf9HUYwt_I>?*4KS+a+8SPV-yffq=m6G(^EU38p`s#E7wom1ym_ue9`4TH5#wdgv9wHBdX4M94SytZao)Z}ird>fegxx|T)NH7cL}t^E8wyjgMNuM{imipYfvjPwi=h)TnCh!| zy*V(|NzA%w@f5vUK&tskK`ODqIv}dKnnX)%!uYFX0uysM>*^pGun5 z0zE(R+YTTvt0$WNP1cMO=<(Z7d$zbP%)AKn1OwE)2Lx&w(DQd$Z*@S=2a*D!@rMHF zIl$8Ys9~P}HT6Oc^8{9j!93SOjdj61d)y0ikitB^$q7hsJ=BZ-%?R^Yo|;H~t0g!0 zweCS69*oOb_)j7*X1M!TqU8fyw1FVX5+C7DCcg`4M0>IV~YoE{Lh} z|37q*ojTdrb0%Be7ttySB6q9%yoJf>xI~jD8khQsL9qZ9l@nnBY{A4wpfwioE_6bM z1$=B`5#EO6{Kra~)#m*3{k9Y4 z{GGC9lsUiOhT4P0bz$bkoIe85X#Anb`S-W*H|l&pYwCeK z-w!Mj%lF4YjdkVw7o$it-}lW;GSLZe8N;+O-#4GVNL{I!k$YD6Mr^&+y`Boe0dT9VeL(cUatxC+WdEj?t#XlzEzwsm?zN1^0!c~Hag+AxeWh#gCb(t-!r6uD*NMi zM?{8?(uyl?brkStQLFouL0vd*=sQG@6V|Pm*uQO%HD=mBlL9K!^1BU4?6Iz7ivOdb zGcm<$ZOIb*?_1PL6DV{8mI>6IgtcLb{XyTc_Ej^1)#R&$#6Gr7Ej@pcMkzaH9;rM# zeu!m9qtJ=+-gy=pp=LvkBr=47u7Xa;^4`^Wy*YXB z5%BrTS~A^PmYFVoOr6g1R0;th$ z0J6jZGt~{el=lzABvU2bjC>4ajIR{`I~2hy2cgSCGA43Q@fcTFU)Ms+u;j&LEYQDuIhvwbPuf2$kxBc3?*}CX#10QdGB!mzLDcEjcT6(N)33k= zvGi*_)L2*g_0K30O}~5tlQiKxxQvrknts`w_Q)y#H_XRP*ng{zPWdA=Epx+v!RyU& z!*j{$OSL%SgDf4fe;8Zsu2{0w@5|hP(;&y*UyEbjk(ctkVd9vnk|VCUIgbkM1Kqdx z&aDz|(OHS!d3VCw5ZLe&l4iBA;h}!pLZtG~^kUyvVowf*Bh~S;W|Xj@-$vLM=yhS{ z#YhzlNOuYd)U-&|BkQdWHq1y0h#ek^NVP{iQu(t*c|OItCaLAIDzHK~uUJ&nOPX>)MP$ zuTCl$J0b}L<42x_3#w9``CPEjDUruYUQz8MSh@TPZvqjEd zVFx*CPl&|x7BweC!r_xAu3RBjoX_OeI;?6M2@G6(BDtNQ0hlnS;y>1yC7u$wh?gLz zL@ui1l*oOQr$myjRlTXIb0Yow;bbom%-h(=bcwWOJ}c5^>qMKta}|rXuURjTdIykN zbf-d+#^7AYz2$?VgNhM44KmP=zi!kW?K7EF&|d!ukQ@1E@f%ey*=T~sPJld*7aRuG z1V1R8{J4ig=`4j)-siKAptYCs9$Kn~oc%| zL?$f={A)=8u@m*A*88eYc_a=lIOlOQNTJN5|J5X-JdX}k9?PREP@^J`-d#TV!zVqW zxVX5-lOFw9N)o?ya2bQG6!I0*=!Ty3IN`x?h_Cac$0=By?_T7`ABMfn9>5-*#mP>3 z+)YwLXauTHdYlGDg8^!L(&HE?<)8G3cClD@4cP>woNex5z(-Gb9E*RF zQ7P=G@70-k>K<5Ko>(Y4-I-E3mtRHC7-UgS!@);@J0I(Ab?4D0?17tMqE10KwH}sn zFnjP?y7@u;oWEQP&TyO|_c1=3aFAeVdB;R$I@T@k_93eTUX$_Z>ELiiI`e}I+}31G zbFQ_aS)jzV#aXLDr0NA?CMXw-EDnVdlk!STGjdJ`kvBdmN9-daK*xcvwM-SPi6cYG#2%l;zU5imTqahhjO*iiQKR)jp1@C;~o#`6%j+?cOwNIfQQ&ZoR2yPXa=}6yV$VqBB3lMAx!T=cz(qXRYKm-# zkz_W$CFV0KcdoRXVz|Ae*%V8~GUYXuOuk%n0IewWRQg~m#)qoRjC|s{KL=gFko_6{ zV?D@mYwRUnf^3Z~t9c9P6mObxYm9ZU>d`LFR_Y+~V0s{)cV#2fY$lO;kBoCJLo4O_ zoaN4{qEjm63h)qpeS2ne<5lW5(3m8!hZcXpl-=xz*Qr#gpRVXYm%Zb)HDH5n)OT%1 zX=H>jj)w4_TdQ)Acd#k0W8ssVpj5l@t|!@f3l!$=iWNk5-gb?fmq{kO6_#jP zVu=tplS)gZ4LMI%Ko%5#Xbnb(i9w(apL~oS1oPOQy#`$Ptjn zOt}QBN2jmU0qbD8yy_s67gk*9;2H~0wHD_g%zYB2YIPr{!m%973}g;p+X#xTb?5I` zh5$=<{+KtFEHZ`_^6x%wS9MKz@ckRN~+-Sn!Psd=>OuP!mX8Al}HGTjJ zi7m&J>!f!j+@iZ?s>bcZ|0cYGjJ1DFdAElpLjD+zm(PfeBMA5?T!gkKlLATCjMHSz zD0ShtVYg=Vbz$bkHDfSD-M`{!ZPv@Y3uL|3Z66*ZDIn@U2*$~`50k7Jy*7=9QEw+6 zWfEV$m<-GjTTH$T=BaTp>5|n4*-<JS z88;gg5!;EnjucSsMDe>LVv`Z273YyU2A~hXeU7UQ>cTKbHyN)YtXpxD@mYhcG1ERp z3aCuW?>1nQ5$j5(_{R;Mi78%dOSZ{)g+;A&+X~%)A(>;FjGrg04clb=$U;cE$@n*5 zHTkOHvdOsfBjGV%$|m8nmQcdvw5hdF5s9p&A1-v0k%cIhY3U2my*##7;C8XzWSj^6 zm2EN}gV$r5j3f=Dn|aw4m0Payp(tM@XeehYK|q-yVGPkqW8w- z)T=>NQ758)BzKjBTTH8%5iqCjCcHvUEgp<5;Y-muP@F4i2q*b+y7f86RWvo5# zzd_QhcCY9fUq68+*tbw9n8bdDb#bSx8D-w@x1sjSaeJA0G4Bs1nA-&cH7)OdPS#sp z-v5lGfN1<7%lmbJrEKCW_m!S9^+*l{1Qv=x0gIu=`k{c=P%a7u_+x;itxMpt6%=sB zQg$E%yl&GSJU-l8EcB-iNtFw!lgVSmr4$Lh2c_0!ouUI5bEVWOcKaUyv;MQj zrPM&CnCW-QPLX+%rq$2qqx&xQwbgxxc9|`MOe?pxkr$MRY5y9Sw)u#}gzv@Uk~onu z!J(`CvA_zeNjeB2nz^~LQ4q?_$1b(&bJ5}Q*z*j7B4TOlG*Up7w(`3p0+B#zlO@Lc z7}O;s#%+XEKMFd?>LfLLHgPriN`IGAOci=X&xEduEqeWRnfrNRuzBLL2R1hRFD3<4Hs*Jmc&s+Ik<2nD8#|}zCpH}yW78;~x zMhzx1vwoaW%#1Cf*kVy%h+<}JQOyl%jhVd#oseN>f5z+0!OTu$Lx-k0?D(bH9}79Y z9=wb-Uk6rpoEa-)tytq^dnmNT(ii1@K5fX#Va%hpGk~S~h>z{SOL=z=dwh(kcIdIO zsh}o%Y-}$Hx0tao10Xgwh43~48#_YMsu~+RM8a(?W9``35=paKY;2LQpM==h*|KJo z*qGmj+W*GwW#&a}ESOyG$3UQ_VPogZdaJ|6)=LVA#vd|lY?i%0RX-wAG4)1{iv`w+ z;bI>`OspRltD;;K7xV2;z>|-la$KqyAGuz>C=V#s+Dso`f~6V-i8Z5Y9**2Qq2n<8 zx8Oes)?{rXD+Cc^{vX=MA$d0EF&t2K&*nUWaWV9?ret>bFLwZz8jK(#)p%fiGq7^bCu z=xd5pF$~I5+~u=^09g-%*+lQB9`GzLMyta|jOsh@AW z!60kQwAYXVD%0}24S2H(>q@5hs-ZJ6#cOTJlIk9dT4{EMZoo1-TS{0PmQ??Xg^)C< z{wc7Ue3g(?7sRA`Kz#7Gg9o+p;PFCMl`3?(PItMKDmrkweaV6Er@=S*lRlX;J53*5W8PTt0aist?sK9Ca2>PO`d36>L&(84OlQvgc`6V6CZ)rs6opQ#Ne3P5Chh59caN3x^+3L-;5OO5>p042_$#;WFiPbJDA9BaI@?T5rXNw zly}=OMhKV&hY%h36lf;8GF77kM@hKF1d-_+(Sf;yw;|}j8IoqT=)elU?S$xnBWp&9 z4)|@T-CJB2W?n=Gg0bp;0t9LrI`Cy#Z*}OvMUn!d@rMi@m~P{R)X2aErhdqgfxs>? zWME&Yv3_LWCX|aJ1HR=+qB;#OqsKEoGm=^qduBuq3YZzW&voy|)?3~Cs1PhbtASZR zb!i(ZewL{C+kuLk|4!30&{)*tiqi;F3%b633gv2}ZeW|k0$w#JB9<_|LJFu7Mt*lh zU;!wtxQsG`9CjL-A#$%=(OA4q=%kMS-3&6UPDSnip zGcm<$ZOO2JpIexd=3M9oEOV~Meao+e*I6Rp-*V3su6g|E28t8&-`w+))%HS*u2Wxi zEb7(Zs{||{wg(RReNV0%-zZ73Ww3gKUCPWwk8iL``5~;Wj0^@-SZj5cS!jfs4KJ$=$|wF*GYx1t9(pW1IwW0H~HKk)B0L4p6CPB z!=5EEm_%23DesQqmqg2TLcUiYd>y{k|Cp;x%~Z>8Gq>rDLSA31K^`ewoI*Lms=Wu4 z6kXk^^XYF&xW%;~Q$Oa@TL`a^Pmkx_h)Nl~GsP3Ggynr!B7s`orzG6=^70`alQ(h) z6b%|^{453J`OXSrs=-%Ne+1>RIW_Zvs3X?sQbdvM(X2@SOpNH z`IriiM%D2~hl5127=0vOZ%&L}*q6&YnIie*dhMb4$V8!8XtIuoEc@8EP%{n0eiV*} z-iZRM@5QEgp=)7p)d?0z9%xVDrM%6J5^H)q!bH!mSrG>h=)lePzT~U5^lY`VIL^t z#Xua)1NVKL63sdjV}(S1Z6IDMDIj)Y$O5r!7dJjXmEm}asUPxi9M~lmj(-Pssy`g} zp&*$rN0*D4T)y@Yd}yM? zkTh0D*pYH>>r4MEX;%Ay(u;oEK|p5Td8Yeu>}Pl^{YKV|@&P5k zjj)f<>%z>7p)DAj?!6#T(?Z)vvfk<*Q2LvsfY{+73vGK!*75$FQHHbkOtQX+m=X=ARM4E;XgM3yOmkZ?4{#-wN%iAgDoKgyJ`avZ8DO~|Zl<&cvZRl6* z>60@^0oBtd{O(?44ok)4iuE*1FkrDRalooQF0LW*11>8KodG`f*v~S;s(9)Cd)rw#OvDp!%8rA zj5P?xkEjn9R3%2g;(3Z0=RKZJtni?-t<`Fv?^06m2#Opyl>Ub8lZF7j+xId_Ya^L zm`88mKh{CF1xmcmOOP&{DFz)BIifpJWTrp9lA-*f{zQJ(MXe4&fT#}J1tsnsQ{r(e zR<2+*Q|0NI0;TQn6j9oC_)j9GeHd0+24t@70IO5Hss6w^3Wn*4D_4lB!;V$Gz5V;M z<+rn;gOvlZyw5i>Get={1_tN#6uR-_((sxed|+QHP{)GhihHj;)Z{Pd>QFD(+D0 zkwueV_n)8*n3Wy8;8wRJ#FFd_+==Zj*Emyy>ULNy3wZB*TbQ>mo)787Jr*k<5JzyX z*=RcSDBk1$3b%V&;&$=by1*7fyTNm7VPv8qkc9(sihda5lNPebkOJbixWANSW?>7& zusTYzW|WYH-$oE#SKk<=_^`-~SM3z>S|lOWi$G3N(T_tf~MWwA@JS{-+G zsZc3)JLgoxy}e2zlNOD?LQ+8NL_LtjK55^rm*$Z9G$&Yb%<#4fSKnNu; zaj8i{IWQ4uJO)h6gc^A`XO?w0f}Xu8(wSd%FNB-fF)lfM8l}aB(bKTt^XDi@oDYP{ z7+{UBNlia4Q*ui4QuBy&o%cDv$?igbe<9xiE0GQek)QMPPO$V?${iRwxC8_12eehT zG7OC%Z>qTs*S$Fyh3<1$o$p*eCX*|Wg1G({P!*8`zTK@rjbzE|jT;!8?XPSdaZq8} zk^?4?|5-^5B5Qb9c;jKj^c4CbS+BakfTF?h^ym`Wn+Pn<`hmV&cdlIBL>M6B%vU$L z7ekZo_n?$}3I2t4bT^@_@~)zki_z|FTRl9H0fweFXv)^lJMf-i5^m8&GOgkhh0_RcL)K>tB+Y8qXGi;OC)`pxP1cNZedf1ew?6ZAVdlm4 zSuh&i6bRI`Ev162x4JE*K1l)5_(1@4SK$Ii43Igz5DABPzYGAZQ?7cp>ocz<>^szt z%;!wf%GYXv_G4?c@laz8Yc)T(ljYhaC=*?-`L-pYaUxu{TCPo9icj_h#~{dGX*Y0j zkLhm4c3a&WX!B;L$wK3>@sdP+*9Piq{u}G}LSs>XDNX`hsnNGU??$=W=p=5~KGASF zh4Tf2B4XPc&yoVF?G1i+M7*(%(uxSC+OzvprqzAgpe`IY^o{i=2&;bUs;OVEd&eMa z%(Q3;E!n=+4=ie>`&Q@%47rlK0^UalPka|)HScWm zH`Hl<%zty=PFBOSe`M{eW&x|oR|$FBH1X?okx$UUK|K|R@3>oVa-ls7X3)|xD694M z0qz?gWuXXaEmTAzYw3pz-DPAUiiKExA-c=RmId4{*1L>Z=!9&Su@A4ub{R?PMtAdS z+*WziJA$QX{uzhXx#lb>%H?ls@O;RxvyP1O!0@V(%IH6%M~)vpC>7a!5MD8F33rWQ z5z)(h7?Zho5vba3kg}W!GtrH_l=szPk%=pSB2^s)3hRAs{5nuVbcv--Nxv@P z78hhpy_k|-NqB{nR6L0~NEXGbiu0-OleDUq@oovXwT$8Yj&}F4F#$;G?J#Q=8;|&B zcnm%#X;zyy|H#)*pb55*LE{Yj8E)p6vSyTNv)_i=0mkiR=Ebx*m^$tiAW+lN=67Yi z)uqjEOA3g_ACk2BV=@P*PM-f_l3AWS2R4W$&x257eaZ9A&wyK?$+K@^lKq_z6{Djy z?sc3NNuC>ZhG4_%<+ID30bPcny+8hwV8PQi+=2%&REqXO`ZQ;|dC@CAyGi|#c!_I` zgx@1^utau)#7T#%ewwBqfpWD`r?JhY=_?G1h~;vpkpik*j^7;-X*xDOJAfK=FcfqsX@GOsiIg@oVJ*jdb0QA~>oZd{OuRJex z2>sqd_`y?)mB|J}4`K!%Bn4Ck=XVdqG%sNf_?+}=DGlbp){_}HE$ZZjtdVvmxIqgxCrjg2F%Z(*>}i59g|AOgdZB@l5aVKqlk4io8Nqu*Ev zNn_`)fz=c{hYM`tfe0=6gFZ@rbMt2TM%=*Si?rG&&pw= zeeim7V58&0*h*SF7tR_(nrn|Cg&L>>P&!hUPlYO{pQbRPOKlnru+(15!-FhY_#O_n zvK!?r(MH_qU|!0*b{OGKA%(^sifAebwHP!KO(4_&&q)$)G2LLgMi6Qt;cWy6)h%gN zEn`~3Z7pN%Ak_JiX0;&HI$u8tL8wi#W|Sb5--g-;$L(e2MGz{ONA7VTP}4xDJ7vAq zflzly3W&xZ5)f*d(P^p?soP8)kRwuoL1Kv1fly<8h}4rP6Gfzaa}%IrHe5y*Y(%8a z;3qwWk1uQ#GS#&DdB|~piG6K#e?hy<7AorJ?oeO&bmedkGsKEN3#{1ur%L_<8jD67 zae895L6_Wbpj>U#y=-%E)#xAV6%os1w{cZL;I6>OGymIc7k zVH?Rz)Nbe`PVEFH8X17pnTAfsrt#@o%ksP13?PL)N;Zy`8&nz_M_TW}0IC1Aa3B=o zz`$b(alG#Pnns_~{^=gQY0w8s`<~b(5I4cjP#B(_LqfNCH<}T2ytvooP zTO)(VwAyNQZ?@1NH8W~3k(u@5j3QZVHN_T)`a<*pD7KL12DL`Aegd74JplDnyxtrn z>zD|R!_Hu^MzIb{fMT)A>p-xMkS1fSV)jms5x&|((QO7@Dev=nK$Zf(2g8W|P(7qs zYL2kgYrK?K9Zs+n(_##=+C6Xg;M8cs=j$*4Ld2`^T$0Zd*5ikuk!T{JhJ@aeaEoaN z(>20Y?-1Tbz*bY9OCsYg5^if5Ylp37OPbZfRx?R~q_2b@C2K|rTlsCMeP`TWW?qD? zf_db=jZ>;wA80*W)>|EH^%+S4(fC6GTTRt^N;PD4x=DCBWEB`A23frV#;FgoDx*vk zvhqz$z>eRb)omcF<%?qHYBmb3YDU%EIl7ym<1o@M#(xrQ0=5m?z(VZyCEA@Kd8X<{ z96NT;R9%O1wNYoX&4ER6nFV3C&<#Z zU1T{h6l1F>Me#VHRrg2dq4@%1-}|h`lf_i%+;BC5lq@bcm*)2 zcA(~2NwZp@<|)7J09IpfwbA7u`xzcazmPSf1Zw;?)ZQwt3o|bQHNmiS?*M_C2GqPG z>#Yu``KzRWX#61oYT6<|O=!x5zutx`67oT{R`2S!1SMM+&G+%kMVeD>7JDGR2n-orx)4YfF~l9&b@AO_k6MSf)w` z6V`@hxc6HKNi*Dgfz{-zgbcSJX1MT8{;o_{t}llXtAod{^5F4srI_oglyilAs?g;+ z-Q`lM=nNE{l9R_nb5fBH&8H^u3Bq)%`-Fwb>9|CbCmNUf zi9u6%7K{_6@N9L&N1$~I|0n2#EQS9oUT;nce(>J0_G)?!7Oj611;W7qX zW15~?6nmONo}rr=xfgY>!q(wiS5ycVLe;pZpIo#JL(fUHd0C*%=D&z@2Q(J-qvGVi zbv|9}-iC6u(aF8dCFV~U6cNkbzE29MvNwKrL?q@Yt+--VdwhTHw7TCjs0+spP0YVb zShr$g{+|X}W2SwB6i}I#-)%r*j&&td{Og9!#1yZ!B}>d7u&9+LK{9RViRK`6?kXkL?aavfY#GCK)(e*s8alrOZ4&d6t#8x`(6CiSpJ%EHpyRh8js^ zHvPDvc`J)mEa>VB(bpWT;T(hq@n9UgLY$&_k#Z*?f&XCwv04i8D>ndmRf{3)W0I;WdNl}DXG z^|7e)4mgMUqD~oQqEW{;EQvbrQm-S8I_*LRHEjtwOfOX$aJqB7x$e|JrkH^P_Tclc zy}2^(TCydm1t<5H?j{fmM%~5uPlC*-ZJ78-qQfsy;iV7Sn3H4io6poih?lso$TI#$ zG^5>fHrJt8ZFCkl49=T|0g`HFO3SZ4^7Zo3QG! zv+4d(%&2tbB=o_Hh}Nyb&Z`DtW14@36i{iN-)+^%8mL~!1)9X#lIi|ehVI04uQexw z&+f9QmEtfs?JRMat1W6}uK)n6wIWzXz??hx0@gUpjF;pY!A!ia%?R}Bq^Sx!&KU&b z2eF3>s#2B1xM1{1V)q(2h|!%ZmFvSN(E~<ViN2Mxv*6jrj5rRwJ!1_HWV%;pRykE3*(s0E z7=&5IGXpZe1J0?khISMh+Cdi*yfOZ9=GE*hEW5qe(p@P6;8jl3>z&?C>`GrQ?^HXz zaV3X@^itK^rKivhPb$F)#_(D+Z0_ZIU`O-Q{)t#uRp|-qEuG%@RZiY1X3B*klphc7 z-htDP`v>61M8BCd)V&&hPM|+4#Xk5osa)tzcR?TVE;Kh9t@7c7&UY zxA!KM;9)8FW_x-)Jdn{}g)1%iEY(07PxywSC8)B^zvA>c2|PF)l0mVTz;TZP6NJJ=)pyjH@;Htoqgo&QV#y!JA5`hlx%uRLbF6Mw42q-qgsQNEPmCm>6D*UvD4-E4_F4Mx?N} zGxnhbipqkD`k+r$Z&F_-zp4U*7Bt=izjtu*Rd2VV(_JX`q3rZz8{Cw&Tv3^q2#2+l4O*0m(y!=rJO%RC*!AhGhKby5h~?aHX*XJ zyq%yk@Z4TLgIfep=_JaQ?#=Z<=gz5mEd$O#8jnLK*fAMMc%=)@pHJi1_EOn$d7w0J z&YX4Y)^!XF!co-ujzV$OoE~TG9N;X?sd`he1lEWp(q*R~v|I+Qj)Uv7XB>PusHLUY z+Z|~JuLRBP&6+6}3NTA^PPvyflP&l6K@;Q4nJ$_h5@i=cP457 z11GxgPNd1@VLgXEhjEKK>Vbhgv6xxMf5ODuxipwBXV#~)xmDRd_#cMpsJ;S@@SRHi z8JJINDlmOZP;xi&+y9yFD|Bb52B&ssA&2OO6vCfYU@`PRX(+wAG62G~fbS{i%Ag*9 zx^IF(Qs@TQ4@}MG|E}l}N|mlK-_8ykOwj{VauC|eIu0IIKc%~`kXfB};DGzSbf%{V z9=AjXaEZ60lV4kf(CCfxJpoKT7)7~!PY%X)Iqje5OKiRiGz6ofOdj2Y5z`$*nJax}I&4@kuu zkJ6L}2Z+qRJe^smGrO^qNYY89=p+(!lGZy(%bldvPSRp0X|0pA)Ja344;bnn3IsoCwkG4zOJ9z8}wW`l4V$2d>r0g**lZ*;B%5x05?F5m7(b+vhwMxtbC z7<}O6(=buz!5Blw3(w)g!6s4Q5gvcTq!0Q+u-feT*(|YE_6ymY+;4+qG$h74b(2-6 z8VdahYZg-;TLERzn^`^y&V@>cOl8{0Hhzufja^@7|EZI{5O*OMge&UNqIDo zK_qj>0GW^E=5au7M>2CfkU2>1NAd`gqbC4ah~!x$FCtks5y%-xUPkgN5@#nME|S%g zfD9nn)B@x(BwHo}`4*BN?F{63Bv0-FHp2xJ

kk5QGm_ppKvpAp{a_$}K=S@!Kt4jU{s!QCX&m_K(0b^UIoYnNRD0$F9SIX$(u<2h@|@~ zK(a{w2gwIW)?5r^Es~y1KypaV_$rXkBAIt7kWV2QyaLDtNM61Y$ZwH+oSn#WXyw%u(45w{h_1mN7$?9k=%VVknbQl>=qzLBDw7wK>iWQ>9+wn3(45q zf$W52-5o$akK~OlK;A;q|Bpb5NXXj!;XC24Um($G4jHU8S8n9&T%FIG^#)8#YuFd6 zwb!vne?ao|T|k~ga`?A^d=km;?*{UpNUpsH$Yvzt?gKIj$@=dA*?{ElNOrs*2+3X+ zJph08BGKsz8LV{G&{3Ap z!K%*a%dmaPw z0Fr%w0AxCn%YO)@isXdHft-TmcSznua@`X^ZbCxx+}EFkzc9~r5eg=_uU4lB3|r~6 zp%L-86)RVm^@&_emju}MpB0)3BD)<(#y<_D1qmKaOpcFs@kkhQhL4M1+9aPvb@5{k zv8d^Ci2jki#yHaA%KcENyLc=bTO$r2QVn&LI7v@R}jl%d_G1ZUh(+= zEd#WuzpK#4p(n!nvB*WvJw8<9c-AT@v}>q-fMtti#DS+o>!NqI^Cke&*j=dLiz!ua zVt1jh4^SQG1E9@g7t-rj0gm(K>T*Q&GDQIJ0KzE&$cYWM17y)s8iXe>``P7c47ym# zvVQNV69Aq@Alℑj6!JGAc-zT8oHz3IOdC0Hpvc_RT(IUTVMP`=#3H@6;hj`pcf1|{4@dQ;SpWb4 delta 1136 zcmZXTUr1A77{)zkXWuzTCE5sLo1zk-SxYM_(qd>(`0vX>MO4zx^wisQOPY&h{=E$u zgv*x@RBz64$B0_ZIl2feFz=^b@0`V3Ve^){ zq~pxnK!ZX?Z4j__lNaZCq%W!-En`P9%m1tkGc{) zdRjw&hWM~1BwaEF;4O4xNS7o`g`{%?HW=g2ZohR4A2#s4MU z6V1elZ5g8A&j6`a9YR3?cq4*fJK()~*X~?5UKC z@O_4yR7=b(ubCA%z;X}sNBQ|TSmVZg`{vLci{+;ftdwu=)yC;6*@=HEWd&DVl4tMM zt)4ZhXH04Xr`Fo3O*ZQO>BqE(PxL(3nEr61Y)qe@uNx{g8LcLxoHLs2jG&c)w-@Ez zljXzcGuC-#QJz*Gm?^rMLU>A8z=0)sCco#bT#Q$R(h0`o@AxxSm_nmf_0-Y?3i`=K{M;}<(qZ+ Yip;uUe#PrXlEVBoO(_&`qf4p(2g8$O2LJ#7 diff --git a/docs/build/doctrees/pyFTS.common.doctree b/docs/build/doctrees/pyFTS.common.doctree index 0a0abed5bd2b36a32523b3fb1221847b1c5a3e21..23110158f7f6cf4c10aa4f1d61dfc6a17149e3d5 100644 GIT binary patch literal 421175 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 Z9g80EG%VmL;s5t^FwO6&d$Bt8e*qBQ-q8R6 diff --git a/docs/build/doctrees/pyFTS.common.transformations.doctree b/docs/build/doctrees/pyFTS.common.transformations.doctree index 9921bc547940ca1ca016ce0bd6917f1c9d468221..955401a711105bdcf419432defc9b67f893d8a7a 100644 GIT binary patch delta 291 zcmZ2xu)>(NfpzL!$&IYnxfyjQAK;Rc$j#3$$;ix0SIEszDa}cplEEH3B}23aEXe_r zoUF?e4^*GXA}do26VruiNX$?K>QIiI0@P#3C(8*}F!=$G^W;0+Nt0*uhEML{shr%% zCpTG{w{kKYf7s+ty#0&;lM9(;C(q|g=Wu3ZV91cla-7V^Zzx~~;xJ|~XGmvgWyp9( zO!nvRVvN{)i+>gqcN0*qhcC6LD8Fd3qmc0CNkUD`Y%xH=tjNhyVvaIdAs}`jkSOip w%uCEoEvYO>EuK<4MI$R_a;}&jA6S83X@)#VD01>*F$Z?A@+`Z}55(LU0i6q6ZvX%Q delta 158 zcmZ2syv%^Lfpx01#75TZ+>@<&lO}ud_)Y%CDK}Y&FM6^puiWHrzRJn-c*7<~@%K;8 z<&&G-%Oy8CT!44-4lY$7Ek2orKWy?5fm;56(xlW3+1e=@8S=4HdQ>JSvdC`E70hR1 z%-noecs?_mGa~~-mc!&GaYv!j9?rbP+|-iFg4E(EKpk1mlkbb`ag=7rgE$V8r6n9T Jr%E_80st+2G#>x} diff --git a/docs/build/doctrees/pyFTS.distributed.doctree b/docs/build/doctrees/pyFTS.distributed.doctree index 6fcb35d93ae9f4e91a9b8c9d61967a4bb6fa5fe3..4332aa85d90b53682fc8af3af75e0737fe33eba3 100644 GIT binary patch literal 23717 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 LzvNagbg}&Z$Eosf delta 197 zcmZ3wlkuP&YXj?4GyaXNEi9AI1@~ diff --git a/docs/build/doctrees/pyFTS.hyperparam.doctree b/docs/build/doctrees/pyFTS.hyperparam.doctree index 366837c16f05ac068c3d70186ccb85a249c9271a..90682196140880b663e6bb2a47667cf5f615fb3d 100644 GIT binary patch literal 114023 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%0Ded2GyM3RHOJ_qS6P`DQPY6%pSg`o2> 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 diff --git a/docs/build/doctrees/pyFTS.models.doctree b/docs/build/doctrees/pyFTS.models.doctree index c9954551d992bf19f9638e9a0ac00c30101d8901..519014bc4bb4215e84667634f1ab8c564ea95be7 100644 GIT binary patch literal 303149 zcmdpf37A|}l`xTPBoOu`-2`5MKqqu68w3(ISrWn?(!mAAw$fcm)uXzq>8j4c0OE#% zPe-M38FWU+eOKI2bX;)XW^^3IbsPr8-5H19g_&{wbMAiMJNLf#s_La%{f0^Pd-vRX z?m6e4?Vfwz?Q`z=#{*^^fd7jYjW$On+qHVD)M$=YT2s+{d@xpNw5RT#TK?>*Tc-x1 zgC@#*TFuFck;+tb0JIpX*6O1ZmB!Q!Q`G~ad9BJwyVh)|_SHGnxz%|$Obx)xIqh1z zUNK%pM~&~>ynU!N2BXzm!FYM(#`3Pp6t;)vv$t3F;=qnp&!1ul!2m}@bH~eoLVK!u zSanwQz-X>O@akxGz1FBqT|K#@94#of+Y_}NlWmw7PUOJaXbX^z=8e?Ltrk3l-*Xz} zG5%}*=;XNmV+UY1QQ3)YCZl=n@-BQeRb5o=t1iS5tNqc2Rn_KLWz~44J<)8`nyW_3 zqs`W;@rh;#6oDT&(N#cB@l(vXG|>XAkH6vxlRK&lIE6LE4wVn0L$7L%PSz{INVCy~ zdA2x-j!r(;L|F~El{ju!SC2;uRF}ZCt0w|&m%@K1!+*=*ztdn!)#Yp|r}O636@bv3 z$sN(5t?_EDvA0wn9ToC0r`8y)>@_&Znd|I1ng`fU)EG$zqS@o++61r@*bS38Coq{m z6&=YRue6?4=U&~ODkFmD!F&XQ(b%fV*2JoMbEI5fRj=&;;G3l-5J1@U~RhwM#Gp#sZ03H9TBv)Y`+trSW|mkvD*AV^`4JX`=?@m<9YfAUX)d zth{TYJYF?O5G~$3dGpQtg6*}jN-$Kx*#=`3KnTQ(N%GOY7Mfv0Fu`lHGwd3WxoMz- z7#k75l;!Sk(zg+r4&B!4A&t!J8`W6<-B z*$Ik^xoWI{MU3V1N19{f&B?~7!Eqt<=Yl3^j@cSwE41B zX|yV1J3wXLF?Drxob{^K7@4S`W-iy++r`$~vB`S7w!1u0E4MjtpY^)YY_!^C)YIjO zeGJ?lw^b>(;2ri{i4KOL>XW0DowYh&$JMC%lIlyVFR#MO`D5k1qm}V?b?Wl}ga3gt zEsrz(52|-py}4uR&S-A6HaZIS;m+s~(UW>GzcD$sqcTw$ox0+HXaTbhFm8Pxv|RvZ zM(Yk#0Jl~9nSdMyeEO@nI*Se!tXR1Rmgjh7VyYb1aQkBXJ=PTAXkp8ctFn^a*keOs z#^n~pC8oivT7fSBvE?g7DFyS97TOO2mhaCewC^>9cCksAXaP)0j;iNmKlMxrI*U(f zz?hRQkifWI0Uu1ROLqf3-><=ZzmjjhUo_@>JfL{KG?OW7&su8L%cI2{TiXtma2`|9 zar~WSjQA_tA_-igMz1Uq4)3)_0t;@Ew#unTmu;?rD-m2XF)lP1o>B?!q|`;Z*y=1K}T2LrOhwIwT--)!&25cOVGC|D`ql zUug6=m*?oV{i_2?7dIQb!9=1JuS0MFVT9MqkLIHsxA%=h;I?2AZDhGVUM){S@C2bv zZSPcdE(A`KJMm{Us|3Li_y`m2sVfdg>-z_}BqVh@RlG0;_}JjnM1!#j1OqG*3u+C^ z{bmYp`Bb#ja$%UBjCBArFrx*bn|bt8JvW*SA?=8?KU;++(;S*6fSrnNTsYM6v z9jk9_fddTmn-6>g)v>#R0bF=Km++0MubCl_K%av-eISU$pjjpos&k?vk{p$UqF&iV z8&VTZBU*ShG!3tT|A%zC7UB9rO{Z`xKEbsExE{oCjU#$!Ob8^FiRU(oBiL~!zS=03 zy(k{RP{c?SqRh%f%pyherGRoIrEshECIjrYD9eYl&S51CH&H>fn-gaHC#+Z@r;b1E z***)fj;qUPRx{y%tO?eak|gtOHGa`|Fp+_DLHNw*fXU z_HdvUF^Cyp*g!XNAcu_2W+9GV2f}TIg)&}gjDm6;-U|xZpu1>rKs2}3VEL>B?9tKu zr}3QE4Kc2Km_R%_WOuEyX9V1gmC)UdNlJZ?<9{CkYfd_v2Y7OWGGF#M1qs5+&e7&r zxz?D94s5kYr=o@Mq_TIsUK^>kA+*B=U|Dum+EY>AFn6?Nf{gn1imt**@Gz@3MxR7$1U2TumnVNhD2h^q$xKB8`)?ZpUDw{{KQzZQQFyVmB0yjCR-~5)uW?%qP3O>{RnXQg}|ZO&j}E| z4<4v!VoCZKnCz{C!wX)7fpz#h>=*O5N6WOWji5${nZC!Nd0c5gqL3|s=n3Qd(8}#w z$;n$WWe+L)2OO&}e2nPBY-)&(DV*V)CxBRK5f)60ODi@2gOB-(gCI*N#31~47!+~i zgc34pO14OC$7Zi&w|@qhXC{m&2xcZEt_}g?D!9a9A5aSup+NATBHg+CYUy0!4LYR? zPidtzdw4Pq*B36ue=?a+f#*yit3jiV@)O}I6tIhS)+dI?AO~2PXjNVFALI9Y$*e0`ZuD0g_63&(8O*n*XLI*y4r!hA!l9pW) zk3N)W1+#ZKP`41sg`c8GAiSo11b|5bZF0h|KsT02`Wimy(p`#{Wmu^2052 z$R)66;fGn1Mw4%vGQV{l4vqFqSW)49b(X{CHsZ{k&56oLxz)~T7FJ|13!>+)Ey41H zNJ^X=qvdvaFpxnjX$a=a8A>lgKd{x+KMIkMCd$3#ZR;VS?!TuBEdd<@C zhsJ2eU4C2L&tYx29k3L>@dA{d_{*l^Pk;=$l>Wm6fT{6pVhg4JLk47H9m_|Aw;Ag? z@+KetM4%Af1>n}|MMWaA50CTVE!xQZf{0(_pEh+4J}@VB_(-;5$w-~7K*A(y`3-*n z(<{s*4pJoWnZ)G;fJuVFP2zDb{o}BLr=}rHTS3i$gcbZ8Fr;%UxC!ymR*-X-S-~$L zqggCQSV1#;uw*OPp>`luY0zxI##6g89+az<@~G6TDXr8}2(Jf>z=%Bs|H&1f%^=On z2zZ^C0o&?Zu(MXFJ9hb41si*BxDZYH&toVdzb^&KgB#K9olb08y&1%8JN43?Ae}L zyBf5sm0%3&sK(0mpk8V0f=88`CgG2ElfNtP9j=#ISru!F+nd~GLGpKz$RQ0w?G+~d zbZQg!YhYL@nEVf$TvI9JVxDwsyfRYTSsR&pAugbobLzc>L81YKt=PMRSW-&8y}XAL zR;Wk4>=l+EVrwozx6uFsKq{v%d{GMBupMk{hA-q)atp@EJU@@3!4kKDBsP?CitPz5 z^#kGE(3cdjNLp5}q5VV(mf_z+1Cyx_aC99^Rd2EEqf#eP)jaYv0>WTl`AB|$%4BSk zds!IXfur|@&rR<#d^T^2$|5Dl7uI>x8fzMk!9S8+LdS&@#a($2})$PXk!Wa(WfzCe=2226&? z;RnGb3D?4W!w_D>g@=Jb+B$QDgSVz3PKSe<5s7f{V(78+aPT#Vj}8YpmsvEk3Enuv!7NEp*#T&L zB|O+eid0M)fXWe$K+Y{M%j%|jt=Ny3m-|rHC*;?ou zg5A=nyZsPby$B`#H3c3$Z<>|3m}^pVFS04cbof9_iK{>{w3WDej!K;UVUzD?F#lXi z{Ko`fC(=*_<6Y1q!gF6p{3Fm;SGQp1W`}Je{!WeXNq2BRD6m+ zA9l*CiP$?RC$ELcMi!u{< zTY8r=6NpPKp29Kh6KY?P2@EszDsoFwuShr4kG04xNtLcve&*cL9|1Ee()eF|o)&3j z!cA7_0&ePbfDP!%d(E3GaTE2VJngj*9}}p-F*8vDqPric{sa&ELPhUNma1;8#Byl- z4X5U(^to!@MqVUOR#uQmr&(uOgjlpXxLls8tg#hUvoUI2QlO zY%bvdc6gM6U}t?#0bDyOpL8DYM0_2`JJ~Di2$6wK?~WnjF#Z#s9Fh15&kg1YPt(gI zj(Eb^&Wn+Ac%pN?I?>rh51O^>Icv{QjN(3^JM!e_ribS^a}dywD3Bz*qj}3vY2{UT z9<$QmhcQLD4O-wzW1?BFlZGzVQLZciSZr>uG}(|ELgk1ELD=n{N(SP5H zsV-7v3aE4cSBeC_RM+B;NOhqa(Z>Rx4+zkCt?#6vM(4FOsS|mv8=%Kbc`b$_ zD`KzC3Y%CYZcDqZpP1C=tF!6)D<2Mg~GTAiT=ClCf%I2;b+{qSftJK-;Qg~)9xOAd9IWFyM7d z-P3*OfjA~c=K~{2XWH`B7MO@|C1XBPV!@p1XJnQM+d>Qf?0N+r-8IclwLv24nBPK! zY?PNc3r@-dv1}hvJOmFBe%XYZgqg=Rve!Sni2yJauuWg#AC57gUipVFCQ$JDhj;Sf z^ZSSQQX~2NLq1YgSI?qORv_UYYLN}=fMsD@p$||b@cD=L69A@wXe->abC8yQ81;L! zj-$}$gK0R^j-%#5!g0I~dd%rKavy`8e*7llqkTutU}i#|3~!viW0pc6*#V@umE72( z=Sp$^2MkT6-yg&0M2)Clq$6$ZMAuGJ*SiyeY<%B+v!xUa zS&d9;-s*&e^h@fs;5s?-oaH=41a4;4-?ph(IG>B2wEu3u%eDc+#?DjVGmWNJB4##{ ziQ7;s{bD?~?1+Aj#YPO+Cfi9c?_3u41OmWRpf+`d4e84TBy5OgNw^rfQ&h$1MFeu* ziqQ)Q0FwlT+YtNUAOzVZxkl*B!?|e)(*{H{AYnjeL64mqkf$L&+JJEGG6OOj-nb2j z-YQux4tfOTV6suWX|fX3;5Oej9I1kfM&Zl_9Pz5P0?a?i7%vBeS|Q;$qSF^P1Xk&~ z1!l!!)&miO-%E3&nvz>3Au+@Tw4?x7Kqd9rEa3BDAj$&XiO<~@Fyy!<_PI@oHt>__ zA;3?iv9sZKx5Cfbgnp$9J+>>-0|TA)Mn^Poi5nf0RuAvAG;efNyG&9#(j(8b>l?%T z`!??aD&oSCNVsLqR?uSK=4}eRcUKj4;!?;9L&M%}+k8w-t)p!lO_}fk?1@<+D;1Eq zZ&4&26VH`iVM&26b%>X6SV+7qU%{^C?NxaDBS1UhF!(Bczs~^dkUvwU@2{zmeBmu0 z$yP?D7PBQ^xF!z~qqu>DYeEvgfbEY(2NA^fg|`a{0CP4)yC&gRfSj}wGCvJ9+6mF5 zPBqfi-;a9xpQoMYy~(ilUX-D&IBmF@qv8g8z1yMk;h`&qh}XkcWl>~ zd?BZ^?0W2gcEW>Pk3ZwP9#$lsEVhzvZ(1`Y2;q%5N?%wLgQYtXKwI>6XMn@N2y0NO zi|q^dy;YPasP`_?vN`ZQDR~q;<~~ZiCBf6($Nh9~)r&Jrf^ArZgL0<=pWcj$Mfv1O zuA=X)dLxh_;V=2TnAZ^irYg0GExef5FrZ%fcpoEB@NQw;&xf~CPnmqYFHs};sKZCf z>Em(gWCapFo|fP6Ucj=j^wZBN68L<)M+pE^K(swAXbZzmKbh-`_WT}6LzwpbGy@Wz z-}9iyoSq-^OnL3gfeS3>k8_vVkUOB?OwM1*ja0(-N@=BS?{R<;*xqCCpG-l#w7osM zx2iLz#;|ET*>$9t0eO~dpvQ-~PDegwJIpnJc=d~g+?&H(h21}8-%6Bv`fGCv6%r?r zE@A+#(_iXsFE4~rlHTiUrVv|m#kh4mUom~*1u5jhc6h$*TuvqT`LaTQGQre3 zN7r$@OuhBoAfvDXy7%6EscJPe#ex(&@Zr>LZA24lC6cekcPW#5Ge$h+N$Ai;Fl4 zD9w_LvHU<{Cq_C0iZ6*R5?3w4zr!S`otQ`QIkgkRV!$43b!^;KX|Qj?4a3bsy9VMn z^7}(r{t;Sva*t{Y+l)r{UB|H}Tg3q2M_S#xZjXH9S)leiu^`Dq3Rw!xWCx(!mE_n~!KK`5fE1iby=ymvQBF;eC%m;?1aEjLR24a`3tD0?;dD+mBneUTdc z4%8Y1qLtIJQ)AU5#sgF7`@7 zKLOF|7c03pNyvh3lsY$MQi=4_*$lvyQ&ev~mqn?VBjrXZ?8_8Qw?@UZ65c3vX3Au+ z9cKL2@;SIOe#PD>wKE0H1kHDFd>tu2_11S+lqR~b70?EI%SZL$l;$-};zk?L z6$Ra|aI=beKjuQsEaufC41{ao1Zo)6YgkgPr0sqNtF!4^Q&ngIZr_^Alchtb0QpfU3xX!UZP`__-DmsS0 zu@Bb53%h_>qY{O^%5LqO^xr0hNW|}wT5H}V_2f!zSG5iI9BpQo9Br?SRf3_)M6Ck% zAMFdCIyta*_3AU#B~qP$Y9>C)nfPPH67KK0YpA(t>EG|pJomgm+DHxj^*YX>rG&#a$ z*i-T-!oemJC06!B8>2Hi#7OLmkQiBq5Q@4v>T*Cl9(H+CTAK*~GfuN9E;c1DVnDr0 zY3(3T@TRn$!H3VE(i*2m@};!+NZK*WbaND^PF5h1(jrBsfTI&HrAXjQX}y>LFa@NW zl-6;>+!1T>J=Rs+46i~LZ4P|zxHdW!u7~02^0~Xx5TmnKn$U^t)gtK8k-a)JrrV~h zTcZ$3@O|X1QCthLl*?i81|8tk#8r=Pje08-;6w+vMtu%Dug>*0wH0~9|zf!xe|Yt%FvU?yP5=#+?_oxFVn+KF=$ z_v23{lSb*xnVujc{idi6p_Rmhze1e)!e0o~q}Zm18q-aGgP2_$uUMy7U(ohvB zy}kwNRG4vG!+L$alL!D)q1tp6zTOE8s8_z;`2-4HUvDEHKEJPbB{h=I*W)8)b=xfJ zWCaqwo)*<`31C^+_GO(SfzQ{g5dfxuXseq42t~TD7ai-+Gmf&HooU$84xpxf!U3EM zJ?3%%nR_a34n=IV56BtIO!Rzs<;*zr zpyG1X9+sy}-gOu=Q`(xH67#UFbVEsW7fa{lH)Va6h)E>fmn^Aq#U)GfZ{@kL1jYk` z!yTHg4=eEAT|x?U_EzD<_@D`#JPN2UOR}wi@!V3+`nltBrEkD|a~ZC$5dfxMA`RD< zasdg|tXUC$5xK&sQ9u~}TLL+6<>YS&0Fwj-tLCGqb>q;>zf41w*2|jo3B7zD^w_Ch zUU;abmpNCNUj6{|+Ld0G9e`d|!jerdp9V-#diivGo~D=WAxt4a`y;k6W#R#FQ%O-9 z&}B2uRJd7Nm>XQEv3!3IOvb57#I_H)J|)2t{{2o%k+_3M?nOw&oF3~OZD295Vg>(L zmb`#3|NTSP0M$^&Bm!B38jC+w&1uA$o)KnHgXy_6cs z7ew)qY(-;gDAH2jOpM|N5|)}IegT&Hy##VzOZ_eaz?@C7mO5;}@N~lb?P-Y7c3BfT zVV5^UkGbr!yk`iJG=e3*nwe4F0&ko~*{t;J={-Z=6QfEsZKum~-!t?R>@NE~LqA1o zbd@T9gy_MNIY+Aew*aT*F>9*)+W^H=<;cg3_Y6&+{bF*39L|y_pM4k_76$SVfN)VX z^5my_^5jM_jx;`5n=88%9)bw;g$wbYOpXJrBX-}=G!xjMRu_rzRq{3OKU|ygMTGfsMp7j71I2WfL|B!Xc=>rihp{2~ItRGBuBMY{KV2GlD*?imCM-emaoe0VF{ zlIbi@of^sK$MKPJ`f;2(S%HKfr{y+053npO;}TIM@Fm0VBmhhS(RQJQMyV#71YrIairQ9e_8PoV%18f`o6C(n_h<@S`|x zUwFS5UaEa}FfMIs&%QyFCmn0@Teu=0)PzfZ3%=L)2YnR=i>p#o@R7IT=+2iAuYR#` zdvkPWrraO&(-bNs&Ye8M09t>F2oHP23aoA((XBo$^Me_YnZ5|7DX_ zM5gb~1telG&5!V1$eN;dyT3&s=gp!2GXY?dpy1eRv2!&!w!Hr-4PQC{)AUaSV6T84 zI}N~ogV^W*jI)*nV6TEV&HyY+DU$2}l(&)?TkE^Fl@}gCEAK<`d6CL{klihlS!plz zDQ)Ubp!~}EBvZUNc3CosbHwO;V?q37>*r-a%r5lvQUxB}GCkYP?u&qmP9UBObI+xw z&n5s&9Yw0?GZ>IC6e!A9)xgqCp_uUpdaq>Y!Rd%}1f4?T8jyzWJ8wDICBWyb3S zc;hr)=GJgQmjJyN$L|Z@EzpobkJ|^v035#rGTpkAQSTj^ddU=GdTgHS@}CD`thg>U zB_H`KGKilx#YnXa13XK}yhkHUn_cT)p*O>!UoX$kz&JgT3XW`mB`c*i`p&QD*GE zp3X>_vBRa7F$eVV484jRkkl(u9s02rIUuRZ)ymJD1G*AONacXG;`6jHA`@=10ts+a zRfaa8E5x~8;bv9NKEs8YSvjjm7ziJR%QPZ5WxKQ8!V7=kW|EcrCX-kH@D}o7YJEwM z_u`*H|HVIxt>_1@6WSHK`^VElt(>q9Q-&21;y;;-Sn&FvT?&F-|8r)imx#diKYjdc zdF=WhHl-<+i=V7l>>GgiJG)dwBNUDIDkNg#_>X4@RN_|wowt3W(ijb-XGdQGbTM*m zFu;F;GPa%!@K&G=>Qx8$b;fEjDrv=_T2k1(KKrQv2DMd0i^k8uD4=-@oY z5!6V&G#npEJC~U*Fyhq73MA5Sq{tL-9%C&<0$&<#6#-xhNH=M?e)<9`1X}Hm;H%;qA>g~NSmLv6cL{i<^*BBw5n3_2o6;!{_N-TMFAH2zwdK+=NElu}~)5jbr(0F}%z!akj`Ec;mY*PyG|E#FM> z-yx{5VroAmc$V*Cqn$(#mP9&EYqSAQOKaBC8czi%ep&zfa!Z9Y|ltP#|j$;tdy7a#s?1 z2_Qu!$d}@CDnZVapeT~GhcM*sn*$ZI%P!H~#*aW0BU1hf`Ve2@Nv$;@#N6(&SBSK$2L8fJd z6HmUgEyZ>0v{&9uu-6}hq05J8hO=aN`oskPjctn~t;X33}QE88-6Uccz zqNfr7CJD5eDJt!8f`5TIavx7h!<+V&G#?V)((%w^UT=xHbNrHrNkmBR6>%;zi**9L zaXL&{av!n-$S)}2vE6uA?&D=JG?n|f2cJ{952hdU zX68Qh2m|5sU=t^TB0QrwkeQKWeIRcn>jPOMSEk$5Ru&qr_$3x z`v~uYiGz>u9{eY>kANkD?^F=1MDV;$%X*w8f^15T5<&jXE)moS^{zyajpHv76sW{Y z1Q%_A4+I9+OpI10g3Xvj;f{X%v1Y{AI3vEI$eNZKfo0E*HT0~AFV|!Z39yRz9vZ6b zhI+bkqd6Er{oaM8;PQ!cf}vV{H{8&*6$<)F!IdR=P#!H;YJ&mP`&|xyUOHJDD^EQ5 zhDvKN*jx%OEd@`iOzaDWs?CY^%64U9EEsCm%Rot8_qTwT^(DT)Sb{>lHD?8vZQ8Uc zxU2!N4OSait_K%48#^md1vpX(phA!XVu@d63_dA%$u*a)SzTJQX7z?uo3Fe6`jrS@ z!k$WJuU>QJS?ktH4*um%5M}Y6Ll1z^7XHUV+wccmD8H9iD8ug}1h4y(>#|b?!R!7` z$MwXPldtBFi7+IN?Qe~8!L~Yx)%!^tvpeV~SltaYaiJ%#pv!+#@t-o2+IAB~=J;_1 z9^KX}XFRK3C|M*CzPG2+kM}Frm7O*g@05CE8;pk>o7G6!w7C`wY5GDY(w<_bNRW`YfLC6RBI%^XEX43+KJEkslrQZ_3fKGScl!hA}z-d}10=WMN8aGn_ z$8oeiScrHU(HqxFEPDIB(Bu32gN1(&7@2W^UE|lm2MgbY9dbRI?SqByAvlz;uJ0X0 z50?Bn^4lK)I4zr5^V@$5P&~hl+|2yJ!s)lpOwN$sS@POnhIS&a{df2?p4UDboa^0{ z2A;wJPaDmsjD6Vm(bG%$I`2T4v+$dUSzq`KfuMBe+?($*gqk7DFeuwavU|Pwh+(~& zEaT&DmF4B=628-|G&j*yepnBBj``0Lb4l{_3ch{|38UwM5%QL-1$tJ}V>BNrAz+T; z?=nk(?W_o=?6(R$x^sG+XoD_PE_>Dp_xbjM;Z@s_@}cGIh=f8UVn-9ZkTwkQ2wt808@?G0>SP5Hc1}xdco$$a=Fr4U(l@e9y`S%x&F|p}EMf!RmUne$I>?^EQ;L)wq z7!qZvM(2U63=%VJD{NA8OWSg_?V;FK(4+}3!Jd-a3J06Kl!)06Z3k$mLyUw2L}Fxl z9(L-zSGK$cXeay+Uln?V0oYp>nQZwUY9ya6=Oft)$kbdmXN9LzCPr}s30qDQzksy- zD+%PhG3yioV9us+TOM8q7|>SxWofw4R$J3LVYOF6k9n=OtU^aT4U^4RH8a_(;EmH{ zn^ovN{Vd|A#i%N~_CCX1h;n}x@vGP!kHL=OW^AN6Hr8yEpoFM|wJNqU`bVTjR|V%^ zCVH?W&ykS-4!~)t%$kt@2Y})UdE{fp&mvB{QDfqTjLwpc{{^%Y+4xW3&v-U|xj!3E zl$hs$P|^`ThGX}IzZED*@pOmlu&7wc(#)W?LAox|?Hfj*tf;nYa-uR^FYiiExtoRM zP+11+O_m16Gw$%l?mL#hk@!oxrzhQw{7s_sgpXT@R8kWA$i<4~;x3dB{fH#xGL0d(L{okNY}bEx=8IUTBH#3-gA zu*E<)R9XzeQvklOva_H9QpFIGwF5`4QOxUy{zISLg-mJi*JEqrcXsRa-M$zBV z_!LkfVLE&Y{o@3Hsm*NNEF$EOFrZ%L557a7;5B#u!iUel7w{-Gl8-ukBwKl8q)t{K zVeYi}hW7)Og_*l~{e*z{_5x-T0452FH+M&q%Ew{oW~HG^8#+z?grR#qu%in@7a&5~ z&~fH6L-z*cGmGJfjQ}&Nkn*Kn5!9!&Qa*ZkCSU~d+dBLw^VuIfA3SsPDx=?OF##wT zNPbhJ*PrFxf^3YXL(FA>EEXTt*o1iXi)GxKk7~@6&+?9>P$BU}h+zhRMd$(Cm>tA& zOzQ2Q#b%cnw*!u+W7gUDyvUgKY<0T^+>Wp-SKw-Y_#+wO>gyb^ z>#n0$R+xSb9@WFNtBv+(xm_kJkM);$ISxGY8GCB4!9E~)Het1+Dv|g+MuA5!n%)T3 zA`w-AJR8YI6d@bWt>{cY2Mxymut~QD<{o#iytiqrBmhi*%%-r2TbJho5|No^OE`cW zVnKZYJG<8s$axcyR}%mx35t)*`mD&zmKu7;_lh)}>F`YRAQ7G&4n1}eo`r~z4$nA; zS$J_IyusDnaXqr^0Cc(%9NQSU@{o7H&{Q7sE_`03PQS?F;V}DJ&dyq8G?#WiD=jVQ z7^G`GZi!X9V_h3`gQ6=e^;O(5sB2j3(BOcE4t4^DC014Djj%kcFy>}kuO zxsk98uY?}Eunhl!2x-f}dCe@ttKm&omO*v^mO+V7Hp_7E6528xhR=(%4EioTI0iVJ z+vB(I((`%zviq*B!I`u$%Kish<+1U4WiY7h9j}*bjq^5_>#YhI3LLHsg9Mhvbu>v+My%M?6?1t@9zs~5g82r51^K5<*7JZa zxy-``0>IRbqq;OqwVSNL%q2r{PUoam|N>6<-29c45Wei3n*c&biF2_=)hQD=RKL04uJ9$Cf`= zeD?(ynu_nfg3pVz;+qqeO#5ZIV!U%Q$9Pg;^gvx(_6z)$U5}K*#`k+DBlVxRjja_Q z7Q)qG5cop{9=&>o1c4MEr_lrWBTy)p2k`$008^uq9>9Mxpn^Pr!%xULg+mxXnAHO~ zk?P;)0f_$ddH^e_ac%+11VfOX%3jYJ}EX?d*O;N^IY;y$xV3MGC zvps)?wxrE~b^tU-5)Qz3m?XuH!-fxon;O~Q)MQZ$|E8utZq+0teeZ!FH1A^tjn&A`bn1HaWpYi zn{va%95Fgi(TcxpTl`ueY8Ns1s}*?k-08K&Vya22yT~RK^H*X4x88xXj|u4Kj-9y= z!1Qw&+V>IwrVb+w?K>HeZD{So6?wjk^c4aHZ$;@B`0!R7pXo&Ecd3zl6{UP6TT5i5 zPF5gcqhAVB(H0=}SYzlhpBAz|+ zM9Z9U&N6fM3h3Br&dhSsrB_wj)#hl>8n2AhcGgCM@$y7@tO9pt2Rm!+cC7&w7hIiY zXsJ|fH~^SIE!(O1PmYS6{+Xgx84*tw*poG->BU+Lwn|c}dM)#jA{HyzItN*qt)%p9 zM5|w{u4bZ~HvBYNGpE0d26id{p0;G98=hUM|WK&dbuf zlqHg84|s5OX>2f&R#)EPUn zqgVix|LUJp$!>f1iGg1Nfz5@OwJt?m1@uz|J`LwUNYWJWse%7iljMF|RvKLk*$B{e znnvN{*b|G?tONB&J7&WDEyr7>Ynj_{P|z74MU^RuqjgJA(VreT5hf7#d%QcJ{RDs+ zFpv@Du?(nJ5#?C~3f_ov9Une_M7fC?$rn-bk!;3ON(WiuBu&PEH%47oR40B(sFr&Wv!{ex$&om+kjG zh&1{T1>xa5yyO;?ugllO&QvLvo&uhR4)1h@c1GY92s=lJYXPT;K>>xIu zZ32>;&)9^$h;2Tr=eYUI{;+9zI}jt60l0+#Ftwjea$x}WG9cSjb-wxhDgp&>s$hx_ zpFdUbW@;o~s(_DV>zRzy$qFRQqn6@u4`5lCdHftj0-t$&kN_}AFx}=67a46HKbeL( zZ5}lz66W!l&|??o@m~=kZ5}zFnR(m+Z@My%vI8)WN_=bybeYHhhM_6*_<#7kNb`8! zu1b5j-rQ4}=*&8<%^drvfnr+@`9q&&v~g4e41n5hkw>BqQf*|dfbqoE;YXj;l|4LM zfk!W$A)${k_oO+TjWpx7&iX!^@!Zn%`Z?M_25i%B5D1XV1`ZGarivqN;3>I)gqGL5 z2~S2g6%_}XClMgw*@EP(4W*_&-!h5~ls0Mwv}6$C4yGhnrX z!kZDxzHqNVR;GpAPB|u$@Upv^sB9SBCpF!RzxM9MFj!pqmADv1u&`V@$XYGOccNTEdy{B9I3Yp47`*$MdniwD{O7XdbW=eBNQts zx;F(~B&fKa3JIE$A(xkly?`}MuTN8#hlwaw{jFxmLfEfmKvHo1%g{6j*AGvuf9XFE zZxm7y@e-*2uQ+y&Qp3LR`xz!CsE-rNMSU;tLs17L7q8Sqejrf?BsHy~bLKjrgHEQs z;Y09wk>2nV(MKAqjgB{Kjdo`a@tL_CVmVgVKJkFtaLX~=Zt=n9w54R*50y}}m3A^P zBAW=?UR!wOy!o^MQ4QNFl%MqF00OcQV1RBIml((E@Jpo{< zYMas`N3=Ej~t%{_&Fu0Fwm8`^P7xFEfXWygdzf+C|p9NVv#- z&|?=aatjgCE;8pdbJdQAHH^D=0Y<3<5wYG{X!A!KmYi>DHtaF<99Lumw&9@nx3$dsJMTOtxfah zb$6J5{I(Qy4gVMkn$bhMhc)e)fBgLnNDBY>JJ2)_*D*%66@YXjjv!uX!c%WyY5xj` z&*dWjJj2|Ci;Q#2#Q-n+rHd@ruhd3yQdNQOiFX2h#sD1!ax5dT98h6#uGqYS|1 z5UaPD9Aa#3+BUCq!yMudr=V*%#7NML{@5E>)1EoRKhJ=qaEKp;ra8ENcwz}lf0%fq zR&hkUghl<|ICd^?_zxK-CcI&sST5>&c`v@&gHPSZZ2D=gi*lvSqY4yd0kw z=?$N=hn>#su(WV>=3KEDrfW~wVXoCIn3N8L*5SW-YH;oWtG|`pGXM7ipmjDWwH-6z z|DL13qnFH(oUodA())eF01p?OANI88DEvr0$M7ngZc%>ZGobUhHS_wBPa^zG3SzG0qsRTB@J!bi_~mLc#-R&$1c3cJ&2I@A~}=4=Xg0K)GAJ!va{ zOd4*qmDjXRSo!;4th`oU9z{ny4HM5-IWzGefHzJPZ&ntrB9EevHAgG;Rw?-rgUn~r zF9kxG>fJt*KCqFQh>g!A6r?^~yM2fc7yi*us^K>5nS1{yrhv!p^WRP|FW)Kktwax& zXgW@*KLg;j*k(PYelbAtQ|icQeo8%c$|w)-MFY@3a||OBNtB3`;2x_+!*OUQ&QxE5 zKiL^Uqv}y@pd?SLZ^!G`hS>FM(u!qlt;|}u56A2a_lTio(!gzdf#8Vu45PL|x-O2R zU+uZlJ#$GKIJ0myB3zdUcR^iDtXRqk(VrfpE={)%G|HJuPNg4LzclZN({~B}y_v<( zb_|4r^-2XEy?#b`$$q{ja~u2Zb2#?_r4lZo&ry3f0brT}n;*hadpiTN-PoRe4(Ce* zM&3=!&v9&SGpuXm`5eweRR2D&S@i!Qv;PdA!}$p{P6wCa^Wk&4(wswCfrKlqms$8W zK)$eC+Pu>UA@#Y^vk3rGNVQK=)J+D&;c@C)IQoMlj*`V$X)~c6Z_Sy6_9fD5vIB62lsMTE z=}KXp3rJDvwI||pD!s;xr?}a`9>Nq812-910B$O&U<0~vyIkRBrPr=@p=PGn^aumt z7mop7dhz(ao$c029;d8iaSHx1S+7i0BxOaTk{QedqEWfJ3|Mg54O8g79aQbBF66;V zbp^Pd=S}XYE|A$Q&bEQ-q4EKCiyy(3-R>#F#lNCk5tn#cXh-wuFmZ4+ug8BfZ>TK- zh$kxuhV3T6wj&p>dU@2x@jfSZaVJh`Dq756#=bPp-c>CROd}MH_sq+{aZ3JA>~U1! z`X!*iR>hu;7(fQ>Tjjy#$(wK97Z_nduw!4a1>pvRi>sAJP=+&fS5_*)z?uyk&KBD! zM@QXsp&7i7GkA|;S6UViWf3EZ=^>&aSr$ECe|e>`Yvnc|mLS|vbzg1eRe0Ssl5mjG z@ZxH%ymCtumjaM;FnIX(*K7gW*0B|wPOOZSTX-vaFh0@TQLl`(g2@(p#rR{~nmzdN z?XL|MaJCKM>9(PLt#)ZJXf#W~n$@cZgYofFuy)N^58rPQ2GtH3@*);FJ>`wqBhAb^YIAJ{52Gd8jP2CW*n@TUi7 z$C$nKV4vY_nF(xr>|&qcO$t1^b${!&l1YjT`wNU2axujA7x+6Rer%Wgel@o=&192C z>@R52gdb)y2_+KtZvDab1bEWUerRL#xehTB;Vy~Me%Md=KA@cl9(|F~LkysU{e+)W zBl*HqK9csIq;n+wADgoxO#LP?is=v9Kq3etiC@5e!h!*U*uEfW9syv^ridU2m)le{ zXQHyRHaZo40q9BZC(KU6jSg!xtrKC*>tL*GVGYAEd<0B@+)qF}(bqp4pY@AX&0?Cr zhd0ic#@tUhh1^e&SKGE*C2*ZHZz7xt)G>WydlO-ay@^1LVecF~5xe6`=qT>P+c2^1 zf{O^=n!uGV6B18i3;41;|IfT|mzhc`Wt_rroG9@j^yt*&BEU zv=e&+Yw;)F8|cFK*)Y;Nv$HMIERvrpn-D zK!IFd!HXF{2VTM7Q6u@h0zOhsui#E%6jPhoVj#Q%Ee7EW0lu)*=qCu|yk&+TBLK|V zX#Lx})TreZME#!i?8t(CBn@fWUC>NOxC=Kyk9pk%=Fjjf=tGE*_82&enM!ZL8>h#R zB?~G$07pbgjxDjSOygrPG?fMY13ss+piCF{;C|P2GS!jX8}-CM!()3)SZN2q`liQMq#z@A9 z68l`}9M*=tu~oY90#C&7W;PL*0TmLa!>7=f5&)()vvsow^Oi6mdpFWHg?YXhdLDs- z_tMr4e0b|Bzf47SS5PDQsKZCHl}ASEWCarDPK$4NJYZRvxx0}ffiDQI5&$L%iZ^#h zlgh_o=qhRG(uPixKVj(RK#yG*y5}K6+R$<4GD9~H-Z%}N85%FyiZ?l_ba>Egz_%jX zmGPilt&~TlUQKDG^hEe-9Jeogr5HY4-vatKDt{akesi!GXH&UG5bANp3}n9bdgQwM~66H1?g)U{9@GWmh;`=o}r~?e1^s# z02>k4%ta3P-Qcq_5JH?9MndG`mS0@NHIvdTNxSL?5|umB7f^i3d}??UCPBrlReWA# z%(|L=6*^bIx-2d6$-3-1T0O~f7&)35BGox!be`iBe<^`w8=toUQL~Ao9XE;8=FJMc zhaX<=$d?jRO$MloY(i1-srC}=@KiqsUBLgasdo=dKkh?$>r7up0GLjfO=Je{lK$HIgqlBy9GmPJ;3;0>y|)bEilb$+Ej*ja01 z;g*a}GqhC7B0T7H7{4!^hyUa-{{1sWt1=?a7T5z3li_K)-?w0Ed7=!*Un&#IzcL>w zVllgPJd73BtmZmEHjC(VF{0Hk)^Ts5)1@jpohU;T3e|e?aIT|Z^Q@FfCE}8G48Rp^ zs<(@o@gvbxRE<21Kr*o}Q!?H96yptaOIN2%M#d#8`5fG#;3+y3bS}QmW5IF?nhBcU z!0~m&g6eIb2UksWUn`&?_Lh(8*QZR!rn;AlG8$Zw-ldENaj9jDFOJF3tB5b8Uda_- zNR6&me&+b%O@J8{U%U;Ur^Oe3ii+4rmIwiEsvOV;bnVx@U*Tq*4EV4MHC9xbIJ7Vj zwxR4Lelh^v>eQ0~*hrS}drt;nt-a@Dz;RY!RD%-=vR6@d7N$D7?NVu`G0fhvMZl-;b5?} z(w=zm1C3fUxcJI*f}sm9xp32EgTa<&t5vBrg3HUhE2HH`?VRA!>n^+M!fg*echk^d zuz8{~3dgQTn!%-INETMhr9hL}DF0_^?!=*t(t^tx8-t6RW8;(Ua=X@S0CNz$Ua!IV z;}JNWF*J1XWy=SHwX4^x4=&rZX%id^7#nZ4YLjE)xHoL3z>x5UH!1~iOkmAQeKg=N zb8=b&|C3ALZ}LiD_-lmVrwQbO?No2@(*y&O@lYG*I!u6z6wVSXNvO+`0UXO8N$jM( zOg~9*w9#3jJ}&=-MMn%~RmgV4E)EhbQsB|e`&S*>L}j@m>z1M;l5CKgkb0$rj)g2s z)wI%do=uf&vBbD9)Km!r?1^D#)h;eHxG2%Gp4s@U>JT51+9UDV4<`sV0ow7%&zqmR zkOA14yG+FsL)1vV{1hL__T z`i8kb)mp`t;VQP<)>_5<7tUaZU7A&BS8t zfWbSETsv$pG2a1$w-7y8g6TM5@IipnLYwt~!QTKBKVX22&VL`#^x8cphbRUqu{_qu zgrA3Y;-JC3_>+mQv74GPL=bY3v9+>f;XmP+ec{){&{Ak^Q85`U1Bw|yVuM~?9L#v4 z+@2n0)ltJW5w#^YDp^Qq_z3!ZhW+)scso^98yg_zcFNgE7NonK8x3S!gADNPIjsI_ z4F)S#@MIuaczdja5YiWNzE{%3{IuU@7A4!B3%}^s3OsuG^m(r?a#CkHjwVUWs1_^K z)f=9+JEfmHHbM_tnbhCjjnFv+fVqlo(hFB=76Y<3Lgz5aVUw|OHeO%?oj0>3VJU%x z7waViKu1`2UR%6@K*8%CpUH`qfBW`QY9ya~%ty-U9&?^%1rqMDUW4HQfMsFZx4S43 z__l9H2>??-w5O5(C`}gkI666l%5`k#meX*j{b$XKg#Y|AP?b6T=aBhRKL(F9ydCk; zE;MH}b6tKRRB);by-iX>mm2S!XpRMIu#R*KD>-iQn&ZJ>Pqi{pfrqtLu&cHk?)ZTF zQSc*aOmPI`a_>?anKBTnH~YskrMmgS6e=V(KR>|$TpP~nZ7=JPmC*OPx*4%G7mwS< z@Q|S|{8$RPupL%6e}q%Xy`^2^N&~(}j~b*gIkuxRfwk)VF>~Wl14(~YxMEi2dItC9 zS1ITwxcf7Xw_|HtyU&d7?dBZU?|0 z*vDaC!knzPYy1d`WD1m146=8%#%N`)JZZoRL%68`2C|+M8?gXmV6?Kc44rKZR?8U1 zV(WZ4xU?hsfubjiQjRV863E>7Z&l6AIB-w4bw6`EU&?c|8aOTA8k_wJSvMsx3J@hn_P*5ns`X#4@7Mcn)M zCU!nd0GQ!|O>vQqdOriQ(@~u#cK(?_!JF9mM?QT1#LmA_Bl!|Ld?dGy@=zx$kVx!k zAr9{YEDKBQ%vwbVh%d48CxT|CfE1qCSt3&zc+pZ)$GUDlbxMb`m?Z~Zi`>q#E2^uhBoQ2^$I}}s^&74NyuguIiT~tExAg2jryglqM#~jq z8v7;DauKpLTcYIx#H(K{?7yr;%MB@1NJMK-WdN>dO}+iINVFif=CX0?e2lR0?7)*! z$R#7OAxuu}P18@l;CCEKe`_OHwF_w_URmu9e#yp~ z{fXe0Y!8y~Pl$95o7ES7H3LON@QW15#Wug(h~QV+r(D6WbPyDSG6%np!z8HS_fPn| z$l!PFu1b5j-rQ4}$Wf|cf6X)zUa2m-4tD!Zhf;Mru(Lh^mz!g?PV9Tr2dOqPqBWi< z!DW%`QLD4cq#ZekNcJ!V9zAawD=dupCL`F{NGC=JJN`4CTY;H=4mO|vVbkn%m~`Ba z@`kLZ5ddaHVv|;ctS9FJ5@LW?eme&r7U! z$Nu`JG;HZ$OjAD*j4gy7I}gT25g#3lan`Z`;t+U)Hig_@&vId<>;ROtk{H`GxDLSG z4ntGQ`g!=gNM-#*WM2y|nZjc>!($cPvTIdq<2h7!N|l{sfUXt!8F58U&4QPJ?Zl6a z;KxKr4S%c?LtfMCd~a*AzY)?S&3n!~<|`EVv=%csX_2%AhsKC2tmj^{tXfyl*;Q)# zIobv6C{`K$J|IUfyYMaoz*LH)U3ePR&poDeV zwJl2oB^* zJA#sHVA8pa&lLoKskdy>ilF4uTtGr~Ykq{Aku^mHB~1c3uj;N70450vSKW!Agv$%9 ztZQl5(#l#>KcTEwL64m)>lY$EIw;|+Wy*RDyy;3=%ML(UD~ZXbtltPjQ_A|S_&iNn z+e4U=fb$fk9r92h;HD1$+JG)Ya-YJ@x-sNKF4WlJ@g7umsIS=?(MQT5cl)wLmfDh^ zA2&LQ*^vB)-IoxZ_TbR_SAe3O*bi~&{R;{_dd_}MY7z9HKA}gQa2Kccs8_ai{hpd0 zR|r{yzH1>!f-JVCPWWByiD`4|@cWVEEV#`l-`V*6tV8^S^(XP$4~OCZ5715+VBhET z{+j{VF=nR2@Q17=M)DPf@R4jKWokFl)c>BCj~hssdXo4B<$dBpq8v;t~ zqt_*=Ak1UtnZK|16rh)>-R&ivVq}Uh(%xcLV-+rZWic|GnpaI3M0Nj$u5r5Z;^FlvD5B! zqF*W%!$H-@>d#AD0-_jXwAa;o_WAvoqbp}8S(ARe{vrZ7*I@hqnEg95i<<2z2#@Qn z3OxFo>GzjiWSyqt_74Ja5^kZ-S^ES5U@Cr_1tKr=00Xj9Nyf1>+sQOuKr)FuZvQ<3 z3GYV0w+Vobug}IJRXAd6E+V(h;h{!fxI2Yh z*ba~1w>XvDRpI;R`2AZ_&`ogn4IFO=ch%dBr|Ff}iZTKK<#3FAJb7KpBs25m&*Rkn z*HfmO;OSSrJXLRtJq@o#q1bUif^bIpBiB(){Tt0m;YgYon(<-r5AE-48cdFuY@ ztZB~<9vpN=W)nCUnx>gRBYBiK8z3_p@cp`4>cIoDv6i5Wo%e-(h;$AosV_V>14YEa z1EfeUw)y2o96XRNkW8`ofyCCV^m-M8G9Ns+1SUak8*jnq)V4880rg;S_9DsSlvDRa z@S>AjXXQ+8Ny+Ovt+k#&OXpwYFh!rne+Doqn|Rx~6Oq2UUV%qbGbw!~$wwuwiawP; z2{efZ1>XG6O$2}$-rJNHS*tMyWM{29&;PubK*5{;xswl{KmT(tHIgr<$47GOFb{RI z0*U;O7Ur-HSQeK5d4M8;FaL8t0bmM9;rX9snRJyS^Yg(p?CH#p=0+m(a~<^9dFJPv zh>yh?)6GKXfnhIOz?QOA`JJNAC+C6-Y?y?JhAvmlF4`W~%08 zG<`(VH2F2XUSEg!KQLHa^_mL>*)C4O{t@x&7YqF_D<5<0nSLrHqPrs*fGZ!P-u_wS zV-Q=@p>f*)zI^(^!&1nF?Jys62&a-eA5-Wl{R>mDOfdC4j;k(UjvF~lT|yy5Rvbf6!?C> zht5kID&o}#VC;C&cy0x9`nlu4%#UI6aX-r&;{F=}U^-?tiA9L}gIqu&h|_!tzmF^` z>cGsL^#logLEIAv0FwlT2XWMa0b|M11-Ac}!h?to-ZU2y!P{q{$IgSd6Of8Jc;hT) zfyU>N+pgd(%V~bu0Vs7PIkq)$9ZuN@NKs1te0*M{Qs3e@vRYh`pJTwTv!Um@l-e|( z^4|_D?7~WHRp2wCcEZWM=Rxe-!yt#xpcl6R{8k8ojBee@WLtxZ zAm`T#e8vPhg7is)rGpk*;~UTO1vv+umD5PgAplJMW|LS1IkR#B2^FvT5*`5Xg{k=E z1ae*#e<}fBlAv%E?+kLd+|Ww>U6XX=rTBUg`0Idz_<%F z^L79|!a(?g)8PQ%apU{oGrlYN>Bp6Lejk5N)+e3sg5P8wY{ANQS+LWuypv`GF zOrc#ksM=Ru$is)~3OFct)#Q%q0{IPM@FT$k9jG2EA4Gv&i_#h^*Xos>mBwgI_Aa*- zQyVI8HM|Xo0Osiy{3mm2b`e1AQxFXI>j3wT&ZAW?kCt-coa3J0R3xUj(mAzQjH%I! zZtGd;i9zy`|AP=lOGvq0F$<`(RWWkg=GsK7EzdiSjZZXpL(!THaf8ixKV7iBHdYCS zDigIz3qQiQi7|RGxQz82lpCYLCGfHp46I$fW*xuD4kD5wy4J#SFBg_qE7o((=5`xU z%5e{RCa}PeS&JLr-&Ru8y}l#}Jjf_~RVje~V{{&bTJ+akCV91|0tZ&x1gFZaV6w$3 z5ZPC=Dtkw&<;Jc`Fi~y;A7w=vej^J$gtp+iq2Q8cy!rb9cN2cESvwdsn(*&nFb@BJ-I=Rb zuRe1yK)EQ%TWbHZC#fa$?Oa0NnpZ-@w;;svR~%?dNkr{A$aTH>%59fA z?}jn-#qy~LlnZ{~g4>u<&3IX&dUdKkzC6><(4I{7I&kHdq2#xyFEHM#Tiun>x`lXHGPdmg=M3E$h)~zy!Sdz$4i+!^DKxo09+Zj9c z7%U_EZ6p3CKs;BT@o@sc^j2*Sh!E~~49Jc;J1@mN=4=9I-(5IIFaVn_nU3O~LXG4r z#pEMthgrJA(&hC~Co7N$a7mFV;4Yj?C=&Q~@h&6)OabX8z&&Z0yU8t{iCV?2!z$A{ zOht1hDm!bVQ{m4+=;&zn{4^BlXjYRv5zT%Y#&Sfni=CQqDtrVL)Leet7ST0ATCS;B zNc$Oha7vA3|6nONv zGtj*^$VQb;Ei_0;`K7Z)2(MH;1fLXs*~I)VP$QQ|`Yi&$RPi>=g-7}g2GlE$^tS{G z-ort^=EGatEtx#h12*KO4j(D2b7@g0E0FL=wHSwAhv^lz;q_^`+rYyQ`WX33v6Qz@HA?RpwT6k97m$r8i+X)0xxoG30+Ym1eR7 z*yvEQWQ(I~qvJY2irR#EDn6$+VVH60!CBi2c|x=+i@83h#S}w!Z7xqB1yfB(sCCOg z&QoJ^>!|*=wRscBZpIMqJh`o=g=xG|fk*ewMAN8Lr)f}o2vb0Co?;tYCNuyym5{Xo zUE2NY3O8#T`(IqB?Zebb50v}a38C9QlyM`&y5|i{qzEbsd?dkjnKB{Y z*;ab~#?H7atTc(AwS8eH`+F63od9SjjF@jDppOA`un{mwjpW-1;3L^e&D4grwGTj{tCOo1%L>>5wJN8McOaWBv1GS55xNG&@Yf1 z0f?^Q6z~<#oPtM$8X;@j%#DCkyc+@SRtdJ&Gj9Xz0eno=Z*K!Ep|=6dG3-r%=U{g{ zW;n{;1mG~SbkOq%7UkOlxSi<1l0(N9z)Jv5%V^dufEGaUEdb;r-vXfLi98k?056|u zu?;#RP_hO2apZoM{Qv8qod9X$&v^cSRhIm}QSc?LS8h0E*}}IW9)00k1Uk|Wbcdk8 z5mu@-gV|xwwu=P+g|Z4OXL=u;-myx%+8l)fojkb;DCChN#vEKZAIY3_2X`gm>Zsl` zT?RH^;&e-oq_N>__L_|)Br^S zUw&#C0bmM@L?QD=lf3GPG2tDaz0oR>toU*Bq9sFMKQmA;bk>NQhkA z@{5bO08E-C8Ke1upI8jpgH4{zyDE(eo>CgdTG=i_ z<8yLsR!WTSMUGU@g8mJz$@MIK*lvS3&Hll6V#)p95UUCeL<=CSv5X z6nONynU@5MvnClR4|{12O++khZ(x6FHO%GCsb8Ti;_7m@Mh zxqw9Mr+F1#hHNV;_M0G(^X@b>2>_D>`z`icn!5HJ1q$`F8PEZs=13v{TnjyR9{|1x z@zMbxXFCf3&ww|$?#Tc!%Q<`50T>7+O}1rm6#={jhNcP>-ht1HG!W;vC(5-(7lvV7 zKEuF<>)If!poEgoq%m4#R=+S&$BbI~uo@k+1LzEDJM~C!9wJh%ZUnPXL%C*l&h% zu~R2G4CHZXn9~MQb0T3N?+4CwZy?V?ytIMj>}Ce?qsV!efiySkmtMuT)PmM{Wu&&V zHWG}NC(5wRR+$KP*4k~j5=wFYPj~3p2`g zlh=mvw$!yR@`5k#^rU#<~~?&?+O#m4d94aS>nooMbT@2Fue zzBck?cAZpZ6mKYy*M)Ua;dGX>b643u!wKq|2CW!96;rERUz3x&o9Wd|ffLVx=EP`a zLZ)f+-#K))k~NM?)}UNe?4O~)XP9K*!Z zox;u76H60VwfT#kES6Y$TG+T=*CDPV(L&;C)#=Y+LdWp3GXmxdD^@pNpnu5WZLDtu ztm8hkH>JIc05HQ;GLJEm3rIxjBt;4+o_`U6oHwQYLIS`fK{t_lKYfc1Q+4|KoF@YY zbhXm+({Q6>aZT$)EWQeQbj0FEBv-e6Zw}&VMBsc8vN&-Kyg~a+rl`#bd^K4v&o37$ zRh!@?l(xWShu5G&&UJ&%hXe-FqqIxsm)oWDY2(>t^q<16c}~{8GnBwLmZN(RDHe-q z^Oe+pg6P4LPDe@oR{>5-Zq}0e`v8iU)FZEXNqzd9Q6@xr{Y-Ohz!OBtNQq$BwL1R_ z?L>9h`|&3eXQP(kA{0z)ds1g0 zvkc02;gVjYuarq_A*HyPy6WEk7(-h-d?M--~ul2 z5=po0*bag4cIGPZ=$@Gq+Zfc^AGhf&1tP?Cz1R0zLI9Ym-6plzLt4y$Y>%t-L63QT*N{0fKZXc0yd4qJ8%Uhj%zZr& z-ZyZYqglQ0}o*b_8BAXmi=Hri* zz_V5O8DLU2@wPoXkzD$u0*_uj!|a(R9F<^Npoz%{75j>at{t;)$DvT=sncz;i&V-#Gax(Bq>We%Wz*ZCVu1f5Fz}-M8v-CB%5GI;&r`$zTD-z< zz@UZ207qU(aLt$fIg9`>Nl<(YFpyPkI0At~(q=#h0-7U%6_A383 z#}B3eQC6XuGK)m~a3ce7#SiN30s}84dy)ARWDr}MGU(R9u>4s3P)$J>+u`*F6^^Bc zem#o6UY&waf`0dK%p6t2>a7`R8T2!vGMFW{&PTtOr=V-o&&v;46}%(8OBvGPI>;DQ zT+N#HETsE-1|&sD_cdsmwpfio{wUPkag8oLT>7QvC;c8c`!FJrLp%3{|C(WjBDTXB z=3;|i4n%Axm2a-tP8v`}@XWE@!57i7-C_8=$k^@@7R=N}$MM>v&Lcbf+dG*eJ29p+ zu8Uqd(*hlZF-wu3F-xC;5f(1oU_6TkQ#?mWbZ4M>u*n;_2&%V< zM38y10-x!$w~9!OfNZZxf8%++&6@Lp4sl<|8>nq00L&=GrnZPJ*XIHfftqGfcqVeI zsLh&Z5XgBqYo0~`m?S7ZP&+l-a&v@fPf5d{4%0M05@FgB=&_41Z4V-(!!*uq78eBY z23I**XKL8;^*l;r!B}N4oc3(9kKEyBu+hqIeKJO9gX}l|t_a*m)S4WVil$R=rINx3 z5$y}_68K6}>aMHeesOJa#>oHmYC9SB5td9m?Ci4wDJ z4+v36mm^!>3hVY^1wP}p1jYRKLmk35fC#xv+t&yHQ?J{k7N+e>xqyUe)BFj)h^#8g zwEdPq&THC!Ljag0DBiTC)FE*3p$|{|G7Wj!u4!f@?Am?MV;6R9;l-9+G zO4hVzNvn1SBt_EdCTN<2>xU)dbNl05NOa)**06uS1Lw{|q_z+PUfFc>tN6JvwHWOEdL?x;2B!ry-H47dyK zZKDoZ5C~hvj>8S4$0H)cnIU#)ZhZs00K zm*k}K!301@C?5zbmcUp&287vf8{Yw9crS@hApknUcMel71jfb-^n`db8|x<$NO-Y6 zmjK9!wc8BZ3qZu5S`~%g25BrT{(L4eBX9h90|8)?p!oRn%#I9`Bhz|)+H~lMRI?`$ zk$w``)kQ?Q4-wLtR?d7D6@41zz?o@veP|i`5>A%v0Guo(Q?^*T(vkN7Qk0YRYJ6U# zlXZi~_6@TQ`<=DQXy@+MwqChg8kw#gui=j5TO%-lG#lHU%MV+YiOx*Rf-=q6+E%vj z0a@w7H+zQykKX&|;hSlWP^G9R__;K7&v6I9_96U_RV&$^&|D5n7(Me1FiQSubK-MA z%3LnorwIU4=i3%cxN!f#fNaD&-UR(2fq~ajf0qF03}xl2*)DRb3->z$124+IB>*}? zS@~)<#_BQc!Y$gAQz{k^03G3LcxpDr#tWAVcPfE|m&zv*02#5iZKWGXxNuryg&zmj z7UsfjCT8Sy;Vvcs%-Iz0!d=j%iE}t}PfVK_?aXOLC7ii81LL}I=7td=?aXm8V9wlI zQ6jo==41!p%qi)z1=Qut{S_cZIdjj#=S4bmm&4u8ZI&$q)7Tinv{~n#+XcBix8%rO zyJ;7>WjHz70B$*(*|780tX?gzH?%IyJ0b}z-7e~tZQ1Vu7Ixudy-a~eubn|Y7DbU{ z+UqEa#Ef*Yj914_$UA{Nx%{TL5&)*6CHQ3GPY9 z=>J1zN#B8Ten@`&ZIAH>YK&W!#Kwq@Y{7<6bD}*AR|8M9Z<=hj;S+3k;?N&7hqiUQ ziKR!1vH}T@MX&$x4S;-M9?Rm*#6t2NygG&eFiB9n$KolUCDapL{cvR3ENJ&cb0y)P zM8Ksk+>^D4kakZv&zXDj5@dfj?uqOG+!G~AwluojldAzK%01bJ&x>?Vh9;(eL(hXk z*AC0&ZimG)tlrQ|+sgBFBK2^;uZ^uetHACqT$xb?KBKnseDmk()+#1HQf=jF;!`e7 z-c7t`0d;bDGJiz?m0wFrA>$SQZ#!KUdk}^*oBvJz@?U#!kN#!lrnVOm6swr053(!lr5GnFXebZ zitKH(sK+bD)Y6O5ug5r&i`y(?YzZ}tKXJ^`kXtSdklrTFhp~o)F z&hrr=9UOD^GqbY_-gISlWCvh&lvHIiJFkbKDYNq?e4b`@>>*5P!Fh@z5&7K+z)gM9 z#Rhbl#P=xNtj}h>--R0cUQiFN&0SAhi|s>cA3Hidv&q{&6tijhzjbty3(J8OEBLqf zr0vT8wWBWri94}I;%i5rRp8N`GsGGp!I`ezW+q(84;qOZe8_jUoq0&jlj{oi8BW`P zT+8#YnoQxhu_uO~wRdxzi^nqm;cj4K`jZYZm37Pt+`!aIEZFzc+veMTm*@M({{!PD z47o3>{s#tNI|`ZZu3xZ)7|C~cJs-(dWTpnRIW9_A9wX-C1`;j_*0-KZT(M4!;QB7n$`*H|4A4tul29a4cWEyh^Jxt`D$mT|Npo5Ens$3 zRk}$?=bb=!(@CJhvkB=A36V#T@D7B8CgdT4z~OYC>OQA(`kdxGk~9hk;{&vOAT6k% zGAIZL4lpWwavd2_1P2{w{I1>^#w#KsGJ=;YDhM;&wf1|T+O@0d)Tz+$UA~W(0M;s3kUvQCwl&*m1*cJvG@lWz*NBL6m zsJI6yZN?LrH<1&VIi|HmE8x!iF!BQ*x-qu+S7YJW3<@DfB~3hSD56cV`@-q@LLpai zx94z6j59VSS|I~IFPxoTtQO!X&sEyEwrzs6c~hU>W{b1S`^9w=y$eHcm?PBEP|r}g zHq8BA&6S$h$`Q3rt(V0(BIfAM*n>!id*(LXCdfN?3_O*4+h;=o4TcK=r%)630@*Y5SWtEV5%D|j8 zA@d6ZfhqzCR#}}4bXd$u7qWQr-=jKUcEO}V0xsAsP-9XTjQEJu3wsqAk_i~9ZUTF^ z!kthrEY9ITyaGsah*6}+24P8#z1Er&F#F+kQv!w<&kkfc&cn%^vwWt}Hc+fj0u)hP zq=t@=WtCtEqngH*3iyl>Pskmc__#Y0{h)3umx1C{mpt5Y(TyO(oFfFef7gV`y+n%I z^g+vXCVm>r=qZJy>l4<1R1yKuDFy=7`s%W00JNGA>6}Vz)Uy)udI)A-Y~aB9=KKN! zK}?o)Qx#6cFjI~(?*wQxGt9ig&?75mzSlsY_9lDGJT4S7qpVE`itdQ&k{Ly%iUKHl zDAbq&MQ=ogB#P1jKv1*??xaFdUICz}7+3nx3`5bsho()hF&@C{S)yn@O0Dvvy|(f6 zU7f^J$xmuzUElUtmrPhOc1e8UaR=(aa5#PZ_g_LEEXe7 zAEaSed@e9$!s0D>JxeS;U%*B9g091zo&;zrlb`(wsARMg%13JKJvn-mhc+IbBt0-% zf*fe$JgNiiR?vTnz;;-W`*%-3fDM(l30P(D*CD978ibPwU9T_@sCL?ju9qbuVo)XZ z=8d5Wvr4euYGBS9EPl~Ipo$=Ss5(ByBo2Y7o1;2qhA63|07MNyjVU1NA!JBG6deKt zq6%;)6-4n00HVamiU(0Yho(&s^(0=;5~66*6_+!1V!gHcb}o6+)xt$;c#256TAH>7 zgfy3Gq2}lm{h*FbFR`)MX7KldAfIqaSF5msul_ojbe*v-At+5X5U3W}2uhO(QHOBU zF>qiF`4$=oVzR88s&FEPqjHRSZ{Tpt3P(>e^vH^%Cm0CS-eixX5lL6u6fmzITNTwM zGm1(T1yJ-kP+1BTJs%m8C`tzaLDA=#=`kOd5@QoTUICz}7+3nx3=8y{z?2C^$MAZV zD0(8CyXg+*>&Z^^Qqgi{qHvD2mKqh8hx>cHLwE$_Qm1tVx3-dH2JbxwJ9$9|wNHQ^ zQUqKd73BV>CQ!g7lo154dAjt7d|LNv5oc_+yp9vs@pT;ep$qeNkVc{i>sAASY8H)P z_60(ugIW8_r~kpgf@fPk{Vm$OwzwzO^64i`E!h_M(3W&N6H_{Ii5PCmVeEY#xXcVU ze{T|jEmitE1A!`n>~V8(q&*6WGM|lN-HeY?6#;zw5Y(6gAG_9T_(&B^@bMa`I5f&s z7g#UafM-NH+_*Z`itE%H?x>S5x_P>THJFBor-aS$x`88DhPp5Q19{l!zyjc%EJK}` zwwB0pFV>lza*RqZsx;m)Doc>B1#EhU9HWx($mWd*0eEC{0~aXQ$pU3^z_+u#)F_fu zz$VM^{4T>XLYb&V$l1YtQ95?a;r|BaLZ384;&Q}AufClkDOjj zf?7*L| zz@t(2N%?qUao#DH>J4dWI3~dfmhgQ~6Si|>79+-!Qt>e!1}Qy+ye0swZtuYuf?x*( zp&$}z%RXF&sbV=Sag4PSvCopZUm)}n`+%U|KqpLL@9*$>mSOMdd>rJ6OVajwqC_8Z z=xwGBfmcVmoUC(*zp&#xIAE~NsWl#+*UBRMvZLj)m4b0K;E9(`xF7jiz|6_pE1mF@ z2q^?2&nE~$SUN%6?PTCDhJL5h3COKFg~E}BrxPBJ5EqYaAEi|?>Oa#?gd`cn-4$*0 zK&rGIYOsFTdNS4hF{1miRadMxU>o&ZzJa-*QiZ1XKs6-r^TYoQxAXs7x1(8Tw_Tj=3TiiiPl-T0Fu+U5F#MX__2~%S0CcK_yVrwHe zqBQrDD?s+MRvKs~KF~*9;&DbhOFRq=q)vHRK9gf>84RuVRE(J#?hI%PLKaxW$8p2@ zj4;ClO6~)7tCli+qUcdPOO4$l$o<_cn{4NV8={Nf&vP+-b==$r}i> z^p`H`$3RxCL5Vf%^gRQCnpDs=!g6H~6Qa)L%APVXVdeTi3Sqcgdi;V z7I)tgSvBNVoloJI#N(>>Mu>|C);p+_!n109$+Bw9d(#puF%oHaN3a{v?j4lxkVKle zdq}KAnq0u;$0Pt7hixR&$!!sxjIEQmM!M{05#0^w^k1zy6?d~uV+kzFK3#@AN;ZQ2 zIYOlR2(nrUo-S)fSIN_5h%PY`FnRK5$I@l^T6 zYHgp8DtKBg^uCx#B&9Y8nvFLn^kAQ*)N+E{|JwU`wU_PXmEEK(bGz9huY~hosT|HL54(G@8^*AdPkb z)R-cT_7XBA(`Z!hB*TGGIJ+jIy8)ekz^YSm_id9n!yY9YL03hHR3AZBE5Q?IhecP(6K9AnF*7QAkViX~ zID0q-lMDjC4Ua}apprN{*pfKoVX8=!#d}y9lX%aAwf+}mI)Sg$?fp20L|7sWC6Y*O z_Hn}!VcZ2ulnCR_uTW6zMA&Q42~#5M4ZNOZB5b`#>vUwP*~x9C!PKTxC&5mP4!YF# z`0_IAhn0I7rNmQTA$P?@A&IZOHpZO;dT7oPU-JdI|HTQI_);ZmT1B=iTSdmD%w9lh zXKJNcKDHFZ(;7rrvqwD!0yXN;mB4ad2NNPa=hc4p=rjWh*6h(qwE5)Oqm8DPY}q5) zQn;bCNGC24%O1&b?HvSMW|lpwnM7dA9#stl>Hx_;d(@ZAkcH%q%2E9==Z>Ua0=c6( zP-BYR(MORXnLDCdCuxUya0lIl$lTE(nq*`G$-Gff%%_F9_HIEwy1g$jcDM@=zWNva z(sPOn-U^nP2>K=|=%TU*58xDR7|;{#*3R0X@B9K;2=$VXBmus^hsIh>vpSJ*EHLNx zUgT>5GX!t1{LYUfq!5S}e@FfEE zDDEEeXtb4@zR_(oYZVdRir+$p#6BIlDYkv;g-4_8lM;Ma)!=)yRvpL>lyEzv(x8O) z#@K1fniZ!y;JJg1x>IvUYi`}GH1N|%Tph;)5ZL%gfM3{xm!00O5U9V?n}(r&GHNAJ zc42i4m9y*usyxxSv`-9{UEl!BT?;!A+oy@UM`8rV&Ms_)PMER_RlJ^McHv?^Y_*RC za=27pyVCZun@y?n4MAp7XCTUAhK4S~QRC$x2R$(Px0R~RIuR1={WMaoHi}D~X0@=? z87Nhv_JKMqrr3D`Blh!Rq7%#cK^Q*qCY~NIvXsVEg51Avf~PcsDl#QGmc&<^DgQB7 zBPUPjpV1i}0ROP%s;;7&LB_4lw>2;F83Tdpt?Qa(d698Kq~}GZ(LrnIhI$A1=RbAE zzi!~e%J{tog0>jn1!kFnYjGJ^CV%VvK4ECy%I{+ag0}dbiUz^Ju)Gc&(;qs^&lotc zviy{Rpe>f$&zZe$V8NO*dxa3_^C;HNq_Z|BoH?|ma3r_PoVY|RXC@7&cRh43vz*xy zlL%}%v%?Go>Hx_;XLeFr=ncuD9URp&a~4f%Dv(8cA80N`7VT7INM_OKI3UTLD{x4J zWzmW;j=|s+fS)Obmp($nj={(QQzk!i5U*$HXPzk>9{y6ZZIAMVwmeGSY--=pau6Ed zB7wIR>&?~tfMf_%03;ah==d-OT1(;HH3hkU(*$(yxD-u}T-I-^J_({p>7B@e>b%ch_KZVtJ4Ox&)!Y# ziPB!crv2ON-PDQ*DFj|)^brE^A&e($h`VozcT>o%I*Y;)0bhXN+T$Z4#D&k{yQv;3 zr8nu_)P)gT29)}4%5I2K#a+v5Ct;x?-c4a$$wa;-qBFY4tt#a2rVfd&lE0h6sUPzl zzH4m!PcJiV_5O#EZ)OX{qdfMDRLV! zodCkRy<1~QguS{!i6l~+ecZ5DHyoc5y}IH4f>2QGS2zC*oiK&eKgH`=hSaAGyA`*V zZ@9Uka&5TnaQe6;;k4Fd>QH)Vs7I=`(}UkY8+Q|&t3Ai#=9a5s)RR{tzXP?z8_;^l z#$Jj1Mv(hAPMnyzMGV1@n(1*}xOhm9HkIpI7$~n}Y8vG)_jVy-ob;}sUuI2BzYc=4 zIdZzR*=vhe5)rWwP^!rL3u-H?!-pM{2y7wXA_IZy%Vr+}9vW}Lg``-!qxd(6e^MWT z@b4+mPm1vGIAlnMe^lEfMtK?)pC-l1D*!wYgGfi8uoUYSV9JCC=i~J(@!)jL3an@w z5E31^q_>$G5qjed&=uj3Ft3#(cEVE2WgQf%pqmt+uvL&xq=PJ4dQ9!0cEXah@*P5j z4}lrSR{*deMo~OicoLd6!NM=`dX})z zuPHG%)V%Dnv7wS%Xd53AZKM>^cxs?HIv!9c-3<*Q_6g;YLPzL*9Yg-a#ug7d!#_sQ zjT#FqUJ~RJX&Z`A(d>i}W6pUA!DNPkK((a0+*yb*H4za56R9k37og7!OqLp$vx3Rt z1_D(C*@H>=jyhpu$&4z8M)kyuDpE56RQWy3uoS3rIx-|th3cK4%8P938o!E)vz~)j z0H`8{Q#@4315+kcaq)VVsB)&zX1Q2Tmw-yNo+Hp~Y9u*18c9SK>-mw6L5(S3f6}`(*rysN zu-|}+Qw5W}0)Txnko2(_mSbE9OqpQc!RuMV{>FeFl?dx_rzgR?Bxl5J6sv{9$Nfa7 zUs)JP?Fy`m?+Pg0HiDMXDOg}-p1KFtXLQqfG-x}8qp(7dPo%@ItRi|7U52wkT8UhS zwFUy!8XE!WbV8Jo%itO~vbqd;%1vCCp>C?*<}$GQle!F7nc8W?WuVRL7B{Ab;u0~J zK~6RAG+;h6m*G~EWNa?O7Yzie2(ot>!Vj~uSpu{3aC1~|%+7<h4-X+j zGG{<_Pn?Hka3_`Xz$*afK@2HwYGE5??~Wa z^oizDI|e-#$AEVU7vUIDf2P6*#dzh4j_5D3QPE}&`2|7lUq6u+r!WzjKIE8+Vj}^f z4tmOUEjpIhabXG})X zUj$5j1p!=EI|T(k4q`|Yt$oBmpqfA<3VbLL5kmo~A@75ztgKMrYX;`5 zDDYJSfhvORQ9$1ZP(2+IU%}GSWph#-Zn+^1tLD5PBb5|E`^3CBooE>P;yiBijEY211d-nm|Q8yCt7Zbbw3CRGS}3h z+|=hl28p7Q8w>=h9W+A0rxFn{D3I#$u0u^_6_tF;z?>Bd9xxE7BFG*J?71mAddxQe z>ruR$ZNAh+z~)~DHKwrnKShS5&8M0sHvfHaCsjzoD*&4>22ebk{|9K=Wb^-s*R!6Q)_GvAX6 zEV=}_fAho%D@+0jqQ-8m(j`*s?D|Cq3{eeG{gb*zB}>-JPD zY4du-wRL;GHY~P1;QK`CgKv$gCENB?v?bkI#gtB5A_lW^V0-%jmzlxrkVyo#g#d#F z0#yXr!)$n_-7xPy{rnduk^juVdr4Gp%)l$P69C>xP-6<&T z0svkyr1Vi4wh-VZXxaq4U&QNK0`HkZqn9@Gu!DZtZ5wwJeLN6oHZ|;?5)Heei|l}{ ze0j8(U+P$~cfNsB_VqyUj&A(E!NyaY3BCIS`9%79AlPYYIkm5u_cjaI1ixtxGJ66f zln8qtGZ3hz)rh^{BSbp(c9Ee&`lD}`tlWS!B>SZgi)Rc>Sl9kNWguva>-If{*9|OK zJ%(4P(2{!$vo1`iQ`(YlW@AbxE)nw>0Nn zJ~{M$)6|kJSf?%NmMf-o;u10Fl|$S6FmRa}^#05w0vq)H)Igw$AbaQy->1nq^UUb` zlc;W((O0S^fWD(pV+!>B12QDhmnxm0Zw>CGLSJ41psyH9`fv)>pI9D0?JAOvWo?||JjKKvWlwS z9DIEz2qzJ~9%~>_&8HDxR}!L5;p=7t3s!vHK$}mFuLGu*Z1_rB(rr^r>BJ>s_$o)W zcNB1$8NOa^5`hh0uQU*-BFG+J!xwe5+8;BtzAvf=W@wcf2|(*Ys4)e!-h>QEXr=ll z(7Hd|Nd>LE0)SRAjP#Kh2CWZ3)26`oA-tX?v~C&Qj!SZKxUtNLJ2K$biltG$95%() zY-c4xS}PB!f%o)q;I%ePzNLT@HOW>xMhxEHEvk~OoTm%T2w&tZ1M-oF4qxIr!Wa3WOY%b?ibU{rwSho2fkybcf)MHO)qWQD3kDXf zQRe4p^O|J%8Y`3;VkBFErAy~-Q%kleleVN=m6+0rOT;izj$!X|;4(9ee8MCG8%92E zAW%h+Jx1;yijj1RnPbaGqxd#Mq0~bF3WuP^6j1mZWJp3G)iQy?BHRguLiH5D#b=Yv z$ecR7X)Fzu2A$D-Ee{)%xix2~)M%6{bdL%c|1q8vQ^Wf!w%_f&!q|w8Eub54g4u$J zXl;o=|0D$(Jo_*DP_0=TxLCy!PW6%y964fUZZ2qX)%k%cXGd$zf=9tyVVVa!?OnZ# z+~yK$1KZ_&IB=<_7=HBIV#ENax7Q(40S186D2=#I-K~|}x+Bn{$GcvsmLUf-l_nVJ ziRe_|(6@sL0Sr9jNq*w)e&K8isrr_OV3cBAs;>}kXXz;I_7+EU2A{)o_V%ZJ2p9Ij z6jV^$p%amgm=<|+G_r!z#t1e8GViDShR9sp?Y8hLg>HKaWP`OOllr=d?&wmtYLOqc zw;;Moe$*aLwU}qNO^;D4JF|`36>cHzTt7>3AAw%q`nnc|es;q@%zlvA6d zU^?8~NVVXW+YVO}ZHJ<^m^x|+U!<)z6Mj0+9Q84tsM9ZsnL|L}UeJg-JrbU(aJL|z zNZX<4LI}n&9Y2@n2Ox$-!OJ5C0u_6W!OM3N5i$2%YRLNsR2GrO-O47?4889QUQ+js zq)!1%&UjC~+N=$_7q#qX{aXWb)(;P#F%YOC$lg5<-ws6^KxQxfS5fSny>zLLfS3Li zs4<0?KIsz8OQ*^vPUW3Yaj2Ib=lld-0RVv*Lpp+lC9D<#QzjsA@Ol&w=uN0&16@-F zQr|s;8!+$Z_$Q8UoiL2IC4#rE!E(M{ANL-d0$lZlv9`-S*+!Lk z4+Endj*RzoR5}fG&<-k{3p{|&cak9Yui5EowGgqfmq7!nl=caImga&&@9WaqB)Urn zXF?2@((*Q9O+mcewMFHo#9tSAhTPHL0Vy{y%A$|y9VkJwiQv;U5U8`x2%mXE)T!Lx zRR$KUxxdS4^T~66pD?v#%l*-obR!s3I&q1Zb734h88{bzXA*%e_jk8}Kovpe&V{!H zI52w-cSiAM_8g?F1D?b2P-9Zhp*YR^4cH>WC&KBmXgU`#3qah46QI^qZUe7CR2v(b ze+^Ajw_(OmvqH{fXXyM}ykl}4RCJc3xW{u=gC6!99UE%Ydx`C-_rmf9`U7xw+~tVP z9_phH^^u1d7?0;UoMY@iv)EmnP0^{iq_}Y1Ma_ZYEZrUGDelTI_}v;5*7JqDTjKSy zw2JK!VJW>op+363KjJ?Ml80M+WOg1<{2xI<_;rEbw%nKES^ff$4oK~I-94e58uz>D z-CjeFTig-Jl3(i-LQ^jKM#okas)OiPK~AwcWaJdIHW{R_K`3e6no_OaaL%a}AR~SH zj?rob+_qA_Jm&CS5}h@8u%ojXla!lil5$|o*+kXpHk^F9&*@olA^Um5zgY@O}GJH!_>vJ~XKJ3sPw>AvJWUSukTk349 z!XP<%#ZsqI?Q?LOMrXy5N4{gJGdkMmEMI=?)9=52`HJI~!o}q)`AW}~>AdjvM~a2(cG1UaTNaWAc*m#)gxilb>o=a^^pHT)fhf;lA|bw8YPj4NR$Hh^ zrT#&5gm+k2%{}YS+!PG(PK5a?4CXZ26CTs?pF$lZxp+!!UFZ(`YG?_xv09M(AKm#N zVUatDkhFMrPm|)faLhM#QJpLLnk)?h#A(HQRUz?S!U}2TZf`Shk`scDe*}V7 zi`3&yg)B75S^G0a$9idM+Es@Yit!a_82a!BLk;Sq%FysSp)1}bkK{0p_|?Td_t^%R-BcQP=!V4{IH z8FZ-p))xh;;4pTEpvl{H0J;FtBFOsJKtji<5;&d`H*j2E9WD*#%g#o(OtxdM!xt&e z8MSJ2lml=lsuGCj?Td_edwb(QiNeGQ=4!QyK80U?N*?wft`u^$B6-(ha@oS1Bzc(T zF-ge!WQ#4{Iv-5J_(Z;sIWmklrIDV&pxdr_fwNSGsHsvfiQz-c)2i5GN5^{R=^ZV| zJGV9Iv;%JKc$Dg$Ov26qIZ-TP1#ZJW$ZJlH-k{UYtVqIHlsPkK(LdIruJUx zJod5yBi25y1|?b(;ZwKw1_-j%gV0zvTTH2nfW`a;)R@L%?vKKh7L#h4Sj=Ctf!_Af zCcFZ$m|_6MvzV)ZDU-!qjn|_rrrv}qUF;`YYQ_^4z?(?2>V#p|{7k`{w$yBW7;EJ9 zXa|h>(MF@Vc~j(zh$CX#@Xe5koz~wN&x4?fCqTq0U+vOy7yTY$aR`?^t$X+;e*-Z9 z5{?)C>gJ5Sfw)+Z`yZJoZy-?M8N7hFRCJZ9EiS^H3mzqCT}sLu#hQXIAodB-GEaYm z-q(@%$~O6ANNnU&d;Oq)4%(@Z>eIk>s}Z+`RM!y#{RKy?uW`O)YRMK-(Ux>WrdmLK zX0VXzV}@43iI{g_6n+NY!6OFdtZUI9HV~-2$v&j=t^yX!`2X!F=FIpng&n~E^P$GX z_|Fsh$fyGTbhZ=le-GRV4VTnJ{=wEnexu&EX7i@lY5W&itK2o$)A)7Cb58UwnqOqRm`i=hT>>`fzidq_K7tA+Ai1sE{XF?Jstb;skT z@Slg)XbKt3#`$B4$W_sQr-_#Gs+eYGRKV9lDtdv|5l)oMeQijbJij*B1G) zOwJDQJ;e*#G-pnn4FW`FauQLLN& zO{t22zj++gnAqPW9x?q!;X&j`=9{Rdi5qY{+==CKF4|CqLo37*VF%XzI`xJ->g0=V zzQ7SZ;wfQ zPltCOc?ue9HMuPUAgUCuBm*>)wbMMxpAb;e%^0la87ZdW4ip4GaU zN{W7oQSW!MR+v4=t?K!P+kQHGy1kbp#D&k{hA1ylDg8Hh4(Je8-2Q{)hA8yYfZ)bN z?eB+jh-)9(0i`Y`1Yt@QclQftRqDv{5C{hAN+$CCBRZpt+^Ryp8_J8(TI9Q-;M9)@ z^SmrojChrcGs{m)Dw z=d48z!I*eD6Qd~>#?7Ls713WH$m?ME=nq|%kApB;y)tVc{Cxv~>c;6JXMylP5+Xei zPP(q{SB8eIoc_W<5R+5gaD)@Fpj3`1?_p>(v!HbHkU?3tp!B~ZM6eTr(nG>hW%_tG zN2aeu@o$byr9J|Y>77txn#i;pRUji%s%{cYeHAqiY2CJ0LhuT}vk;?5ABbTHb~G?$ zLabs^+D_HSHYwJY9wg7)_J$2dQa#ycEn-D=j7_39fZS66)Otbg ze{uo=6jMMDn6lg@dKhGp2%iQG1mOmp;Zu$f>G-5C3+VB#P;<{ymMr0}3jV2M>Xil- ztclw9(&m#VYCmRb$(E?4E$LPzrgY*GF-(+$*t;0G%nTFnF^Ry2iFX+YR1xe1Ok89& zLLuv@zY@i_84INz0$6wk)R+bfA4QHN7E(16EL;nBLa|U?7!YIgXZCJB#*<VtweZO!(zVXUcZwq*-F-rPK_(}EqolnuyeXoK64={u0or}z$J^eMhom~{&> z*wRZj>BD+1rLocc;MV-G3wxNctx4H^)(o7)!0)pyOL5%d9%sAI=|J`jn_>e1e;VBq zc)Yj-X(#*h2Aj1SY@n56*ZciB{7M-%UK;QBXVhJC>O+0ppAWlr!3L=1dLQhFRB6Bm zy5RA=3s0i2k6%B|-r&sZ_h+&ULA3_-GjW&idIQd|gCDbLGdZYxEBu_rel}}m_%*jt z9n1|tAMq|U*MA#%|_0x z3|0&9)VM#h*%<0Qwzpn_zZdE^b8f9xt>ucapHu6e;%z@^1!JV>Ni@5{oSw+br4h$L{x@8jr()U`O0t;1}sRt0KccWm2rO$ z*x0LDE943;e!vaQ;D);W{XmPQ8L)b z!H%w_1{tEe;_klrfiiZ4aXFn&h~g4|4s-^$DkGZ#K&5lpW4WOcZ2AGa1^e?x-O(KM z$%UyjNCy&L8GubNayYhqr`TwW)>kcCwtf3{*!Hebgl#aYwc%w2ciS>}vc7EG-wP?Q zMx@9!+!2s+1Ee|wuJ;~t+uDu+0LM;G#j;s4YJT z`lZtfG=}yk2h>|(--T;o1XN*j$p(mrPWNkJkW>dtl_5|ypZ~j~MW{Ci^yhZNQ$-6f zCC8wxq6^>7UhD5Q2;0zY&AG6}Mmd)+6lyLp0N41txRq_=0E+$$Y6)QK!6+(K3MClV zjU4^>mgsywGz6ofL3V_O5i(RCzZ`6pcC`Wr=a9=#+mQHytAtAha(y~pq<{B#HzHn* zLs4{#1I2racNHHkKH|-v23O}{@!dI4dfZ_$*mh*WmK7sA|P&ECS$Oo=YMy@C){YAIGcu#-v(SE{0KWV<7 zG~G{{?I%t4ljizKQ~jiwe$qrgslLBiJOC>sy_yZZI-a-iE@gM z7oYVe6L2w;VEM-YP8KIR%Q7v3L}Vf5PI_ zsZgAW#p77~7z;8S_r%e;91DvC$OAi92!lnpViy8F!Pit_FPI!I!oCb(v1K|G7ho}Y z1{Bk=_%arEV)22QP+W_}%d?<(6^qMeLvbY*WP*Ml=j+p0*kpqb#FCBIsR1(9v`c2J z$>oAQU~-u^7y7XW7SrZIF&m5fv3LNBHM>Hw4vRx~gW?D*ZkP|nO;{}49g4+R5OXz* z*6RaU*yMr_#FEQsr{sboB4Xx{N4RvbA51#;VsE~I#T|P>aSs;n+zX16u~>*kdNCHn zNZ*ZrJ&uK~|M~f;I|gi}$l-}k@ZMuDSnp>pg}%(g;&)iQh{a8PP~3vW>?5Jr4U6lrxB-i0%b{3_ z#UofehQ*gwKye2aTUJ7G0T$nX2NXZVV%^bDY{24oSiFb@ak|FP2fKkdV#QD&fjkgP znpbqn+JQ?29xwzh;NaQ^mHH%?F7}E^_q*7)A7JsVW1;vC7DLBDu@#G_vG^?(-(3a8 z53pGAPAHDS;z2CFjm7immg4sCWG{H@$ivOzW67#x$UwH4w+o3p!llE{ae-w8%dkr; zv6y@!6w|P{2aEf$c<3Z39>!wPDNr1Q#r;@3fW^b7Lh*epZa)o*uVUe!4#jm?;+#$vYm$*-2Pn_(S$VAjv=Lh{Nn)tPwXMc5nA^3sABz zvxmDbdAKW+hr5Y*xZ8+_-xZUc06hHS!^1B^JX~Sp;R+lN-!FRj{;}!LRTBgxW}OQ= zPLfmzrXuJSOycn8XmG4vq0d2@1kwZ}1J$y~Igm&9Y`G|&o~hM1lebEUcGv2Md|a)8 z3BbKt>tc5%`LiI!G+1q70%_czJyd}kd`FtLko2MFkyqP7={hy8xADMAe~h1UB1dW z@Z1BP9`@T=evCMh;KT%Vzy|y0;>Pw`J>qo=c{BJqfE`<67_-6Wz`K@-rrp$ a@3>5fYG;efB=<6_fcZq0dZS>|_x}K>T~Ry$ delta 1113 zcmaLWUr19?90%~7>uK$#4YEJe+%PCgmID_=EhnYXKdb{`K7>iky!mUXlg&X=R``;( zVSn!QJVh^oAdFZjdr=TVvDeyTV9BJXdI$tTiSF;5*>+xf`Eu{w&gXp3IrpX)D!-hz zKix5L*=@_%>l|js&T{jNqymt5j2Vu?hH+nrz>uMDUltB%6!QFZ!-c^LnpNSfRgv&gX337X<;!g9t={s>yu-e zlaKdMJD&?u2mdgp?f-XMslS(cTI$oPZYcWLDD{v~c50N)YvsSJe$FUB#9^BCtaZeiTSh+{-C#xW8Y zQyA|s7BJ?mh$r>_P@ge4G+@M1*5?;qzG^*XU@%BCSYoikV1tQSnV6A@*_fD#iCLJK zfeD=nnZ=>(cH#})MfmTxwDB*=tyW$D diff --git a/docs/build/doctrees/pyFTS.models.ensemble.doctree b/docs/build/doctrees/pyFTS.models.ensemble.doctree index cbefb4f5ac511c32582c76dcfacc025f7eea0729..e6ced6cdf5925be5a4503211d2ae1453e79393f5 100644 GIT binary patch literal 88527 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 z�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 delta 199 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

9Okr0$ODW5_CL)36ejOqJ^ci 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 B3CjQg delta 9328 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 diff --git a/docs/build/doctrees/pyFTS.models.nonstationary.doctree b/docs/build/doctrees/pyFTS.models.nonstationary.doctree index 2f878ac0161921d53e8550f99db66f3761cd63a0..f67feea8ca9f86cd480dd97784d9dc53e4d7455e 100644 GIT binary patch literal 212200 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 delta 8228 zcmZu$dsvlK)@Q8)$`Q^14u^9;90)}Lxud3*0fLuQl6i{CTcBO&tqi=BLt~+(m13f= zy31}*qtn&VO34{Zw6UzQ31>dj%CB;I^0U-L^U<+%{MOq0yyxN*f4uuWd+)XO`mNvE zYp-{6>_TGC*|^x&xV5+?Hn2XiF)3%!nuTiyHO93K)EhQr=#$s4=-1Hb=dQr?HDcES z^oza#7HAMB7T^HAbz>aOi5IUNpn=-~TH}vcVqzLS+BZ6^&C$Cz#I9?>SUhYI0fbk% zJsu0Min%6ukACRQH{^-wu~3I8Rvj9P`gD?{#o9%4k^wWUqIfEnSu9r42#uyjuNJV1 zQGH+%7Vz{dNB+?VZigzpxg!_K>1o$9e&@t%ta|Oc<6#9O2^y4j7egE+?(B#Bh z^v(?dy?tdOTqECl_9jNJr?1*R6_&B|>c9BmajCbc|5(xPf)bNfWEGwNLN7eV{i34| zuR@DeU*vXUyj5hD!gZOAeY8~&6GJm&V&*sIG(Ia)5FpaI01H z)PYY-NPtr8wu;sSD1_a-wzzi*7Qp**^>SM_?z4*KAy}5Ug|uoPDE(q~BJ{vkf-%tY zHM>l$@Rn6SeWpUZV}W+0_x<(tqBjx7h>Qx%6^V#G7U>Kpy#&PMJK-AkMyc4A0%c(5PQ81sll8G9PD@9WXR!m6D@v2Xt}xSk(9pBw z3LC62kK-Q9j$j3OIna^Q4f^?uKnr zh}|_eNxExx630!XyADLSYf0E$O-U+p4!U8X`A6lmW720uV)HP(S+N`jQq%-};Cp@Z zoA<&cX+--lNHG7xf?kcx?0hs^)K|bbu<57&63{cYq@XoffE|6@-ZvBmbK99q*c0?! zJF`U7)zBAzA#>+I4xUdE&<7{MC?3+wH}y4-Operi!B4yPhGf0?u_8U|-3*bu8WV72 za!8nzT%~tk+ZVr262$@UL!b?DA*{0(O!>#iENucv+*m@-~hY$->Znd-82}a`2A!>agQO1)Wa0x zOUZhzmYcYep()!s_4e)4pqGW2-jno_q4%B}sdhx#02m2BQr}QqnJnpDMv$ZFHK&Ak zLnkX%+qR8-&55BP8i29a5o-n!#S?jgsP};n$E7Hasm;$Jj;WO#SIa3KIpDy`6n)X= zt5k425SE-1l%!Th2enf2{*WY8>Ra{(^vNS*MMfUdt8g|*7WqYRD|&2V|3xT7hfRhE4x-6fIs8+`hs~yU`g0R6 zv;8VQQuNxMX*kX%;7$^&w(0xNO;NG2rUZs#rA@DxGz4iePL;o;Tp1hM)G~{(UT-+$7EM)$^UmhPS6Gt{PGeuC5oPw2!!U z6u5ClswB*tDhYF>UP;(OQfD0V`K(&)W>;z`SzE-Y$Dzr*ng=~vd#YmXii|B$y!Zq; zdqt{basw$~CSPJPua-~78%$E#l1y$R!Ey$O%b^6%r%E=@Diz;_RTylNeQLkCSdEH#GLEUtv@0qHP#fNFS69Q+ z29p=7;SL;06$2f=!|Ywpi~%d)@9c`U8oQ#cp2mqb`YCC<-p;gHhS@{Qjkj}If~|JN z+d{j+TdCMO9lNTyI>JJ`o!%2Nq%oIF%$PqjT${J$2$%?7 z(f%wZYU3a9ejJuYRH`DrG)>U>Ct~kbd=ST^sY1S#)u|Y%P80hdCXpLiq|6dE zqGvSuMaLspOEvoG6RCRgaVOj<-&&hpI5SOL--^|+I5hTf#F#Ah*HedGZ~Dv!>-3)E zL*SLr)OC9Ci9DD|&w+aD_Sh@d_?aM3nY|(2;&X)7=}i;0kK+^O z0o>)$vK%V6*q$JPUcL8BrSLw9?_;l`EN&TDG1eh>-)Kiy$1=A`(Me$ zI)}`WqgkKg?IykX(lmV7A@>?Qr1zYgDv}??5#pg0ScMB5a;uGY$gMU?&%Eqm?-XXS zW7JL)q|0#8O<~i^9m+);p2A1WZz%g;3)(+@CGJc36ZNef(Go*{G9m6H0ZxcJc&=Bw zi7cgr*xQa1@PEjoe6;nDm7EZ%ZCiyU+{%RbsY52j9S)Tcx6?FEh%rv3@lu4w0ph3C zI1sH)DRC(*5z2pma>)FbSk6+0kM>_Kz#&eR{)SV_CmDJD^gE-)f;D);V4!_1zJ)i? zXB6eX3C^yTbvOa=PWnv@%ydcyW;i*b@nNS*iY?T8ybRmaoEE3bi9AWmwM=k^Oqfmv zQ%-!tDR~m6evm1vQb|?odYpY`pcN0ADf&koG;=uw7DdHt4reV=Mwu~ z#A?h{z1g8&tph8u(j_`Qrd$a1#&uHf6g9Wb=#|bnAGX%)lFn&ysRQFdnny*Mbj^jA za6Ha)N!OfLt~v9YuF+j#*O=)&=$f<2HD{w1W7quIrJ~_&Y9pfIA^74-7XmfyQ7w6q?6ndDb$KZ0Z22#{@m;MHzNj) zzJasxF1G|a%iY!XCT0UZOus4YTgX^SJP)`P(sinLwb3h~&LWF~Q0KcPmD_?)-;RKK zc{7g1%@QEaa?2>6;r=avpG5$i&#G0F*SjUa`l!Vi;PD{9QwBhF^cQiyHx4&G`dt@D z^f!+FOG=IoPR<8UzKyRLhv;qZ;60Ekc4b43-tl}QCV9lI9ZzsmbB9OY5x>WuK{ zl*mzevOd5)!O!G59(j-USZF@Z@u++>$|HG-GLCtIKT2`_Q10Y6^`%T3ZzPs@)FJx< z_YWoHlCXXrgRtNMTS9n^jFidP6<3KQ9Xen?^QZ&%OOHHY;jmm(-Jl&(%TBa;@Tf-} zuzx2t>VPfrbkP9|fTW?~R>-#eC%nQwk33rA!ApyJw9D+|V$rn|cjG>fykOhWjobL0 zZt4m{{gx~TkVKJ@P zE1frm2jnfo&HNU;MUrVNaSxWmjj~r>y#>6|eIBpjzQQc_oH~K$l0k+Ki`h8kL!UR| z1b#xnTv>=7$NmVSSoY|Kk8NAAU+mVTafJHy_(`vX*Z2p zPP;^-tkV;jSv51$BkS~l?>9GVR!}gwTc6p79~rx~?Nj^!hx=q{i$i>Z^4JD3_%nPR z$N89f%Mel-Tx6_IczSR?%n%LNf~shzs8=p&>wMx^4~~Ne!lQGdMxWe|v*4-l=(5l# z)QQe(fQ#9<#K`4j#BAbeMew?u9js=r_o=2&}mm;4LF2UV)J!v!|Wh`q~ zky7H5nXx2lJ@)p$efs`+E<76Ynf$hiAEX5+H?|ds(}PTYG3@|eFrQ^vk9Niv`mi|V z6YZbVhs7yh*Mx&u4CWNSoRZ{MA-MGrzD$F1t3CS#KF;sF)oQ-PwOHy`EEM|HbwJT@ zQ>=&(P@MdgMz4yvqm@J@*(j(vL zMrn|TPP<>7uPbP-svojN`AJN}D!+6wF7wMeqR=nBo9ma}{pKVNbytx&hGQ$(H09XA ze(Bi3k;cj}{u?bpj@|25QOs_jqvP{$aiQUcM~+}SejRkfmwqw!-*^O1D)3*1^_>WU zH>FGPmlgP5gW$cY*O|^PfnUSmqclkHBhwZ5t7&c&_)|gfL((PqFBSL$5#UcnfIkri ze^7xx7-_5oe?Kij;OC}Cf&cmcaFGGN;~1{SC(~67EJ@clJzp7fu1=_&*^DZH;qytpx4g}{fZcel|i&$1|K>4Bp`4}5o}2iB)6`oC2kAba?3uQfeP z|9UdTpkJ_AivGpvlK#b!hDr~30@4HNfhZ67PT>;61D~G4HCPr<9w-WkXL|7@jt)rR zMS&3T%76lXD~(X>-$Z(;*s2XE;LWP{KBHFxkCK+aR|ORHPtm+6>Z=0^`0{|Hz9=Ap z=LJH*UDafY0lbpUQo!>?b3K$>@*@qE!1pNNABTV&2_=!DL?slT7;_F6iUj}zMe+bs zqBwsJhno+wDvx#`VB{CyKSRpp)k%5uokxFD4&8Yi?{Dfb_bSn!LZWy)AU+&mdXd_$ zyRuCaA>NW9wI_(vcSDY7x*y`jiGiloJh63<$&T?EUF!y!zC)ap(e+TC=>^jx14%;b z&tesgqqJ`N7pe9hKfd6{=luAT?qsx2_;HjU-|^!zKQ8j)1m#QZ2Y!4;=4t!*af~0| z^CQ68ee{^$W}e+}-yQRQ-*m@Z{x`11>((?@l-I~LYvg)0a;+MiHh>Ayc3{~JwPM)&v{|HDQ5 zg)WOVzFOBDbl0fy#jRGt&f&X2V Bm3ROE diff --git a/docs/build/doctrees/pyFTS.models.seasonal.doctree b/docs/build/doctrees/pyFTS.models.seasonal.doctree index d7dcea0723b843083a00c51cafa068a0ef277b8f..5983cc98ca3c9835f5f1ef4b5881f2ca8b364ea2 100644 GIT binary patch literal 179836 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 TbelaIB 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 delta 9427 zcmbW7dq7sjw!mFWP(VQB{XO^|;87tIQP6zg+k6E=T4tDlh0!h(MY4w}=A$$-aVw+c zRq0roN{XiBBP;7zK2BEWk~hi+9y{ICGOJUXmUpe0{e635bpE*fF?%z6)|%g}wPx*^ z+28f+A@7RT0TqEOu{I#0UXQ7-4Jj%~cxpwb68F6;#JY6o07c@3BjDBDp9Sh!^+6&$ z91}#lZtz5qH?l>G61(Qs^BPn2ZS{fZj1-5u!C(2Bvk6`h9}j{cff=v~ocbpxZV{hl zz-^F6&6CBlJP5^XYr6}Xa6c5vho#3MG%TC7LrKdLhgJ|NmiK@@@CZNE-$}mtVMI?T zg86#->1h4?*jT8bJGa;#17UolzmtDcd%ZFzA2!glsO6&*pqg$xdf}!%qJJ%P#nMPI ztri@xR#tmFu|%nZ&4$AxMdJ+UE1WwZ$W}^lIZjY zQk3xa#td{viS3n`FS_PKmRLU!+KLVXpbK`3674>M46mCNE32pTtuv>5Qn5cEG2`&5yH!deEijN4S&=r50gKl{#Kf^M z3fCD(FOll8@Zb9Op8`bGN6^jtlBu+&8I&p$Wz=2dtW^qSl~qcjd}5%~TTue;h6RSR zcHIs6c)_6fI$G@4$XRE`lLvn_jPkXq^J+6BXHAmb_rNhcCrOgd{i)Q-Ek|3(KfSV} z2NPnH_q;I{@0Cq}c?KWliV%@{FXUj)7!^_7WBdtYs5n_b({cPn%9FRnsIclD;}5H$ ze0x(^b&2u&&|N?Yqic)|tFBflX}AXsuqjrshQdF91&No6;5M9R(9N;Z?U@9G#h0uQjT>O8 zxIP(r;wb~ne5{>p2JDatcK87}fFCNR5B*9>N-{yLa%Etw#g&ge=nu7IjY7>4tGpN& z%c0hQDY5LfOi!%eYsq|jlh-0+{a#Cbn1U=iR(dVkDkT}R4Td}`!-OZHjreH_%rcDA zb{0g7?T^4ne88Z&FIGI+0QprqF>X~5Tdh(O z;wuB<8!Lpg(8WiaTBzU&GQ{gMVF=zZn66pOL{H_+3m1)#(Sjm8PEEgSW`|*Me{|%} zCMMa+DM(A8IPf^s;1vaY#VRj>)8kZFWyV>;ih!Rny*Uv_#i_6w7Uy&1e7wg%8pa%I z2{FDIq(O21*pf&eKS@Y^W)sqoI2mO_tnw1+DFbP)73uRiP;MZ-y_S;J{0f@5 zMAu`GFLLKX8NO89dWngLsCf{lL~_Tw^zv&i`|pFrl%G1qORshED<&z) zRb+4#Te%)x;?GYVpQrrvq~gMv@#8RcZfK$oK~8o6FT-3!2u@g)oUoQdcl^wtd(Z5r zz8Sg$imr`+A-W_^yt^FY#rrx%{X2^F9jgw>devb4&B{7yB|K+Dy{!uF$0(cfYg?P& zuWQvihb$Q)I#yFfr6OtdNQnhiBC%iQGM5S!n-U01=U7;2N=4fU%hDM>ffrlM|y z%@TD#u5LOf*S<(|vOpnXzD>p2-IC3L2XDwyd&)3m%d9T5=(bT@D8K##_rZww{X@g?gV3m?g zCk>`XE7ORVt;^*Q@x#lM7k)9oezfrt{wTJxE06tX>I}61(PQ74B=2sZRr2?W zBuTa_k9D@Q$B?#@pZp^&bR=&ujcvB5bY;t(yqg2qnfYe$_^p zjd=Xl<4db=`oOj{T*^JogJ3Obeqz2;C%jo1uUJ06CC=$P4^f_4|aLfC|4GtV8^KE87Y84T*&!LH679@s%fSnQDJ4qxt|S-;XDY&&V~DI9w3`~j%5 zX17>38SPl@P$v%y9sZLCyJ-6c9A*WuH92f2JuuD_o^gnXT~HLXpR4TJUeRs@B#6+Yw8)6NbQ3wOgTzW3gqBD&PU9dL@TwLMI5c89 zc)p{!k%-}~0w42q?(ESQT}TSlE>Q=f@=b`xa>jD&mo7vGmnqSyPSI!wCr+g&TRR5W zwTG4JV9lqR>J!`Fss6izF6EQ7yXcZUcLkro1(vibX?^dCPFlWG&%4wO*C=s^LAILZ zn2avYQ7rqAQ{=sZF7cPQX)jYF$CggrZf@G`YQ{+n_IE4)%T*BloT4@tyN8~zctgM- zvib?9UYQY#UpQs*ATLw$2ph>EXiRszOfp~5m^pcTBik9tBk&+CM${4Dri1W2-XP8% zG+nMa)f<6QaE2&2NN?TH_hATxi+1B7Gwd28Ddk}aLVq8oWBUX-zdQ*tdYlPj;@@B_ z_EojF`fJ-9qUkwS)#fIs`8_GYKfkG}@eu7dN@bOr-?=1g%x@>(rZnwd24p3-Ps61N zzJTnC5eaI_K9?Y4@*0_zV)AD)f`7_JB$(kCM)$^)x2ND$}4v4*a7tJ~rXpc^@_ zd$q%{=yAz66FOaj9&QseBJm+ib4jO$IbA*ot&2+}MqwUixm5aZ@<^ZCP>f?-ey@yn zsT^A5l0F{o@;hV{-5Ob5?9C(uF({=h6q}+C;%n z?BpqFrSe370`=w6E)1=XS#9ESIR)#flWj$69NvdpU80h%A$8n@rejHrxDk(?#Vzp| zj(c1(ukPZ`jJ*1uOXbx~)LxzF64I4;JWrZvswIcjn|;0Jl1I8-?N|_eimUC~moAl( zj@oex(sNF%dmOle?>VtP?j#4aa7%;Yb(enTpZTIN0e51YTiPwkE$2pCzNpN4ofWHj z6z-OR+|w;>mf>cby@%;;X)032ruxNis^mmAkup}U+cZ`<-5bWbY8vZ=2j>JA^CP=< zpIZ%Lxfg3Q3%QQ^rv#Np(SCDsYd+x#?{K^oA9KrG?8|uNtjVDn{aZ6$SP~}S45#pJ zz*Kym#+8lk$fv2dXUW5wk&hR-RX(QcYf0D*>3aDrz1tV6UVLe}oXlaS<>}Pte@@GL znnLdW6UYRSIuDXWVHN~ZPX3^2pSxwBzMMQ={b%IlLbuGxVON{@kq_CwBX?3x{=qFX z1qDcB$H8K42VCz97Of*r!XS?dmH>}_K1&A6IMFW!TZ^|kVOCgxM|p?r8takK(a|HL zqrHct;|0+^1$(2{BSVB#aERP+`({&ek{KccNRw|q#j;j4pMca+qJt*=F#QDTj_3D&)(|&K9Ua z)u=&jHU@RDD@E5vHK;N*s41T226c!u`3ALswW>jt@}L}I*^jhQJ(-S+gTLTscI|Tl zJq_K$wW(&?&pcv#H|!i%%2jF}F7Sw=anOZK!xs2STA|ckJ)T<}<6HB|JPNopQ z-HJ8h;|wgtHeTh))?R;Qh)C;!Z2(028nAPIOGZjJ6+JK|%;xpu26!1)uecE|&h(&M z(~%$9wZC``+LmV1M6aR^;3`FHBWdziU$5Ff4DhnUe7GzsaUZ-Dm$T;xHxY20fjUN_ zzA4)F!EAiQEB&Q;rN1WgMfq!t*;%ny2H{fblhXQg)F%gFa29sQXT35A$I!)QgKTri zmLS|nntc8$X06I!xzYe4q95i5@8@b-#QFw5+H6*53_h2u)ZmGS2mc9Sk*n&PjGZOr z*q8UmD&L$NI{=IDf-(HBy>;IXKsz8N%Ax8i5PaF$NPp(M#RdTR(~;-Exnqpy{X&NgeKqD0e1SIxnn^U4KsT|EU6 z1V2iR$VxM4*}yC0-otQ5<}|MR|7G$;i87NX7;D#stjVDny{k-4w*2CJzBoA?`}tG( zCK_9FseD7CO67EYaRkmly2?~ut-6U=r|8$vg_8IBM71tnIg(sMZ;2}-=`Hc;pQ!%G zP)*nJQFsvPDpeo-kE##cj#;ewx7+E(a{W(KUolkEwIUlIM!HJX|5mDl{nTqXsm#tVs0HRC=0Jb z8yMsl_Prd_lO&t5d6*|*f{ho|v_$oyI@cspdG<_AlC!5Q$(rgb^H6YpqY1KIG~9vZ zu$a5f#Dz(!uIE^ch6?e?UQ1@H9E+);t9S%zV$T!l`)FA#6Y)=DadFVA{LHRxkfYGI zpJ@~JwAs2kNhP;=T&3pssw6qT_a&+1_O?U}HgfUPNn-A!m>Om?U%g#uy-6cFoFwEv z=kL^_5Mm%fuF_itQNtyj^Ezrg3 zO&ChQxwyCqUkdt34dw^s5?01- z8EQC-@Q+C7M+;Q&4;!?}T=35Zv>jaV7kce?F8JfPHj)eeCaqO*!JmY+vs~~eS*;6w zfYbPEr}hLF{CQD3#07uP(<13RiWWDA%ZXg@H!N*47yKbf`XYh%por_6N9msM8(oJ zRNzFnP(V;DRBeT7Kx$P|-wz5(>lLpcptTl@lveu^_5T0<&zVOu6v1`ZU3aa^V$ICi zXYYT1`+t1@fA-ng+?Dv+-;&xoSt={&8o+i7?GctDUKMPs_WqGM;+SClv~llTCV!-L z`ubG`J3UQ4t8c6?ON}#$KR?dq^}DLc(^$7uo9M}t-EQdgjhM=s7Wrmc+dEfwT6}#w zHcfRYSHXYT(V?7d+w|?~YVYEp|7NdJj7^aYgqYQs$ziugX5QS6Nu+}L}EiJbw*Li~h<+@t}L6<|hxxU7w6cv{^l)8GC0$&Xc z@O62`$u_NIbg4tBs=wK#6uaF;u1;UVf=*w?H^DS87N{BD2-K=hT~}(psZSqJu1PH4 z!mQdtTY?zd#b)+YaSaBs}|= zgWqftckg2re6>kqYYOpl-CAa2jiO;Ivqz5;>jts;e5XmwTE`0cLndw8=gsiqkix}vrpSl>n)N0Td z#zU7}Ahd()!|ErPw6+sJ;D=3G%E`t2m`PiHaxy<|5@)N}1pcl`TbG(6j=?(lDU+DE zot5@K2y)bWq(srSolOvR&#)Qi)qhbd8-l{yZ^#u}XR^L?&!O39>O;B(qXKXQ=~nr6 zZG*qjzt~fw#4tdwPGVLQ8C(uWu9nv zGaE0@6U(N}j zC`Yi7BS;S*UucHe3|}b2naLnZo;LFlvo?KrYhnkf@&}~K?Z^I&Dq(Gz{Cjy?>(7?) z`}4HrA6pYQ;b>TiNZZ8<#G&u7Y5a*i&9kMD@5}n`c>uz!KjC^ff=TM%R zuWj?C^Ft=l{Wch4{~Ihjb%O4F6z|yClrP%nvkY#g-jFn)_t1C+I*QN*4f$Go_dGH1Ayy>@ZebpNN51G*SZQhl3Zq5co-ZEX!mi`% z@-ujA8-s?CQdxXvcxqHFngv3$P6#K9Z`}O)xt`FQTh}}M(JOG zjKWgI@~7EEmL%GrV>#kzG6)`4APFVq91JBwfhpU!vlBSf;EPmiK}hfy`9eIzu1zY& zrYzN6KZ)astj zhT&Am$WseM(F1Huo{FlX(Ay4@4W%s#uWfpP5qe4cXnA|}<-PhS+sU6O!0-}PFR=9W zt%I~@pGZi01-oUd0B_=1mM?>hosbZ;)-7rLXn_p0qXiUba0!9N-jN;F+vBxkt_1!H z>ecs*IIKYDeHytq;YLWpr$t(kI3XJll zvoFN{w^;_oTP=Es;m5M?Of$vXZ0hXB&cpcheBt^9`zUD<;>c1L!c7RV1!ghpakd%0 z_d+F?!IE0(_DVB3!MHB=J-8|DpSXtw@i*Fk=N@(~-v)yr#u7K<7=R#41~Ky`)=#Y6 z%Qo^|W(qaqKB)CEGnN3N?MYV2pE1jDi@potCjN8~9HL=O7C&UB^nTKe5eK;fl$E2o zKTYAU13nD8sKLbV+(JS36|C^{W`r{^PTg;&s5@ttQMcJF{pdb368gO_GbPtZ=lfwT zh95nK>!RS>2r7W!b6RBZU2c)-ywXDHyxbB_=T}%L`m7cs`e15^zVVpPH=uw}2+oBr zx_FyKjCq#*DCs6_%2F3tNc)&-L;4&q#<#M*+-8x+cyB+u9e<-S)^xLa-flr{Cay#Y zXba^Pwne=CYu3!~vq-+`v`}hXYY{(xj!ojbsQJ-w^Ni=&_55XOex929tp#~ai!{%% zN&L8limrDpWR*{-CtPCD#X&B77f_%ZFu>$@LpzpU1FU41{#L^-lX;?5nq#F!nq!4U zH%G1s%|L-|wuTLIcUWUB77T2$>}A%PI0m|a)+$BOAD})ly~4Kg3M&M5wmAL@o55#T zWdKgYUJ?!jcDA;4Q?c0fDr8XADl=%cRR(soRZM>k@&;UD23>3wZybV5xX>z&zsBz3 zoz!_PbzW-~dtYY_94@i*nowtL*VIvB=K&b-3=Q}t4fv&1wEl+O$>9E!$l($PoCptSzhRVi=J5o+0MrRNewtNs&ec|J)|*ybKJrM5?hJC- zk{cX0$s=x?Ox)lO(TkKoB*(MzTWX{ z%D#)gF+c|%W3zdhohp)4`(CJNIpd0*=rPqE(pQdM9Dk3^;x4oWT^*WWvF5(nKu#iHiZfu7Gw z-SN|~qzUux`8iJ%6F!8;sdICoN|KKXi4Li=cn7&{9|!5|G)_c`^ea#&QkKO*I?H#U z&Q^=EKd~}C${|&T@~5{_f>d#r|h9hWG?i8CC!G3aY^S+vxoRB zhb;8{4#`#3*dtp79HAnF-{z1!)#8vm)#9K61TK*nnjMk_svVLA7CU6+@h}P75h-jM zf0DZHFuGFZ0rMkcoQhO}43PI6$QbN>k;{1oC^{mVlEa;Iz>grBPJ>P%n%G(D4el@b z<*!h8>!FbGDXZZLPU-nP&M98MiiM2i6jMH9<$S19I)9uqWRDD|c=j`R$a6TQmqeiyh=YrG?!a7Pr$WPJhmB z<p3)b#*C}2)2PyhLsrhiY+4luBpP}ZD!_7%w0%;_;q;}$5q#Y2l51VtSIXm1O zPSep)q~^xENONOcq`60Q&5d?R&D~3yTjwOrJrbe0ong&sy5_XVrAo~OTvBt*E?sj( zx2J4kCg-c<*5i!s7|L2Y;?W7KB@BhAxJ9Ql?g39=Ch zbAtYw&W@4V#CNi?Q)j~#HgvXy#*wWIb*TvI%Y{WbpJElRC7=&N56 zz}-Hj;g%`0uTvVr+g1Ukwth)djn~+|y4Yc>I@63TzXxcQTV2Qqts#5^Lim6#+FZzY z>6P9U4K=VMdQ$`v?ayaMC1PJ|XNNrzz`F8$Fjr|^uRtVwmA$Pjje*MJh-aXe*_ynbpg;@tp_*x^u~a{#XEL> zQL#fQaxZWw0ng3eu~T5X7Y0`QYrL|TRqE5?I|!S{qF@Efl3EDu+76fN8{BiZ@dcNp zl$7rCEwuK$3x$o;DzN{1q0Q>_Sc^8S9Q$VU*5_|s$Y8BuEb3u|C8s$Pnr6ZOs2V$c zLaSg`@lzE3AL`+M(k0#)#invzD9PeWY94tK@PQ6K3xP|~U0<3++g*}wP0(8mMTD-S z*Pca!hZbs?r8aIUl=Vu*&_a~2mcagIXo`6B7(*IeM2jj%QA4!ftSR9`3uS?m*$Zca z?r;cET>Uz`jL#qdQwhKV9l+E}0kA9#U@8H~?*(8;3`a*W+QUzm@jDB}EZhnqEbDbF zZI^;&YZyx#Vae%*B{eF(07ZuQ{3fRGeWa2ug7Ff;7~d5GMxqg%hF!u9(YEn-`M^D20sK9d{0o}f26>tQks`n*8(!2Pw0yo~{$zd@;Ps)N^g^>qQoQ@4b2LwFc9 z27L9+a%3o($X9x`o~7P^E4dQsuu_@ruk|VcZ==)i4Jg=@TqzSxr83>K!e84|tJF2& zr1-ipBqyMC*Iw3|T&Yu3r7}^e@dtuRvp?wTJ)@D;;T_{5uhJCoE`gENy$8iyUF4wX z&~L3&JW6yEzQ)w2fLE7cyxzv-N{rP?3DY4V;x#S`Ra@T_Y-kF?8&FVZtpW<;;Q8uetE?OQxnv(KisP`NhFyc%(|ZmJ=ml>5A~gW9;;Fq* z$?8ymngWs4tH@o!a=upK`YSgTu1}&eV{7&Omm84_8y;F)H{2JYaaciNVp*y zhO;PCW26?zEIy(al#4Bbrl8D1K8aw?CYYlq#en%Wil9YdfRhMdb}xVzSp?lm_?ijd z_X%G`a}0bJtnWn_UGsU-g(6FqXm}MW(d0$6MRpOoM+x0CI=V+M1>NgmbdM4`enggP z`YVp8XrU7AbP<(kr;1{gXb0R>qWz&rmS|79Wr_AUu;2Mhv;!C;dWl9cDG9R6O*>Ov zA<}?|l?<6%EEzJtSnjU?!@&kzQlX@VfHxSqQIIPMF`Ebx?txyT4tEhd&Z#oS8mx$2 zfffD18ZUfDJ#n1piT<0=mYeKz2u$m`EncGbx$!->vp*?HR_o^ z%%m5f*5^?qJ^ODjCTi^k=VGb#D8W2JFh3@kqmRUZ`8BBZpJ9MU2w-+EfEP)vgG;1i z3@DLmR7&XiazIJ%40S^iejyh~;+Ehc6yh1+`V zd3CX5)+b9Ov;L|?XI8m$9lsfhPjOcq&lO$)r7&tHbVuxtGS=qO^> zdLiywGmDn*Li&rPC*f*njG`Z9; zcon1(tv1K9^zR`bP?PX(kL+^g*V+rduqG+PD5a7}MwHT@p{=Xn`)u1RMu4$!`xH5a;?7io^iU70|08IzbeklO9 zg#ok^fEbF3@pzHLe@P(r5Qvuv#P~fiKz!{i_*NLq9s)C>mo_do3!WjE9}~ zGwOV|NgQ@59i&i;ICl@kw3+VJCgJYDr2{CE`(u&6KL$4W?K zY72h+8lZ0sd=qNEBdN{<+orcPcmwzs9qNuUk&^=FBT#0QlvgEXRY^HjQbv^= zU)AKx!4ZHWkix6t2bRNb%|U*Wq7Et-o>V@X4=mriDV0CM zI5cb<%(KMefqYaV4)kSr+@`S)Zxj6o@oPf2mk$cxZWAn*!C$lV6-pYf4R!fx8XpC6 z#ep>brrtOPuiqQYcc)36#KCc770)Ci44joKc`!vT1} zSe*(-LsdLROIBNeMr^?k19c0YY3zYocz(=gio3g5c_j|eh2Dq5@BpQ{0?vu4cw|o< zi>`nNxX2X_;IC8oVVI)gA8_y#Rf5_(ox#^$fqis|iFgPG&mO5C;Rl|mQNM)KCn}!M zP}kuHo;V=q!reO+%O^uN-;8f72)b^Y*`epXDf0D&elWv$n+=+I3I*WX67_L-7FO}0 zTrGy$O~o2g`mT!Qmx`ehn&^Fu&}bdup4+S*#Z_KJ`06tor5w!s7nJz-lD*wS`HPHq zmBRs?T;VKy?E_M&+vvYQ#$7ZQNjUxrYfu4!@bHvoXFno8p*8O0%7@x`4@HZj` Z|3(fjj8k7L7nUr38Q)bduFT?d{~HAlznuU8 delta 4663 zcmaJ_eOQ!L7UvvLm;{0p6$V2XW|((|kMXlytJ`z3_nTW-T|uK^2wYqd&a}t60if{Pidrvk$6d zowktDaErr&RXOrlvj#ly#QHk${>ETU98AR)KD-8U@F08ipZn;$ zLy!}0Ryk;k7wq_|!)nGmFA02Fg2Dq0_?1G-;b3i}1OXew-uRWU0 z$&|`H5FIl@4%2kxrIVls^OV;5cvhOLCF^QngrHaq6?(yUC-mW?6oNOT2N6t96XZ08 zYuIiO!@Q7>!)W|Y*lv49ySO#r;#Y6Nb5KXE^)L%wRwu0W_K4aiLUuEc=Inxp;5}LQ z;oIrf0DCgLO}+*gBu_1kJ~$lEiLgG;j)Z;G(f}UZlWwJce*h{xsUvyII z6v)6xr?tg0;F8jSJruv273hUoZ+c>g6Z(a@0aT zq_W6=k>XB5qSZvPlz0-d@I@`PJEYwIa~MsR4?{1jd{q*@!QVR5D{G}E@<`_5FCO6{Mn^hy3FW(0k2@YOOaFRQsm5VT}4i$LrBr7-!mgb&w>zO zB`%t<6Wp}y1UzbUvkar=%Fv-b{41zKM+P0O2fKCdXd1=tf-D$L@ByT7DX`rr;&yX^ zi&NKb)omO|Z~Ys_!6YTHz5(KKVusWO{-NTp`L)B3QW(Z70jqg$4;+_a?H-#(N#DQ> zSRB$@sPz_RQ0q5Pj{GQk^RLot{uWlij*#B7N-yeJ@wLdGKwq4MVRZZ?+>X2>CbnK> zV&f_B)4cbYo95m9@TflcXa?PL8m7skXua1(Ye_+xb#8AYj8Us=y{f+9jTzRG0t1F< zQD06EMov|%l1@A_VO+8Lx>dzWc1y*QSUh(BtyFgg)&}G9{2fEd(Bip^5UmbvB z+$tn*ck7TG>DI}d?e2(@T(?fmxS zpr2$b$xwy2%Z}=Ze1kVCN*BYT(TgRRRTcPD_ zK(|7Cu+-Xhf5yLy5!DIp37KDE(1*W53DreIciXG7o@DMfbg9Ux=d7OaD@?!@hJw8q z@G+SS?1_kX<7WyyY%{F*+{q$(2mLY$Y!vqfSGINy*pG$|?y~{F+T;*j0?#m((nR+1 zXu#qcxXTa43tMM8#tZs zXc;)sBb5Qid!+Nh_1caVv=eH3wrO!IC{Fo(z~J*$6*=A+3YBw5JgSPcvKChnCP#8E z=2Az>aM&ujHjmD^&$J+?f|Q%*qp>iU7DHoj7GChExW{uIdiM@)QJA42^k6IwMf9q$ zKPNZVWPq2xjKu=%>s4{y%d2UN^XfS7Dye9@(W_}2;tkT4gAraG=L5ZpxpN-H+;^TJ zbDqQqZ-_47c_7ZudUPE++xbSy*I8Z~a2@u=az2JZ+3%*p>##oP=dhmm1g`LEKbLyx zm!8;)>$G=E#k}^e)=RMoxBz!*@3sfL+v=rL2{;N5>E+i$%PV{H@~3+FqtLRa59Z?q zy?idT{E000$W+KhW-8?PwY25eVDI1cCJH@orl8l?wyr8EO#NAq+6Ud4AuK6?r884u zxzww$T;vU5Nu98)4Pja3)mT<__FrN7K&HlWIv>N0^?u4d4+&hVkGsil$K~{c9Sdv~ znG9Q!S;jJLzT{c*q(D^ldU9n^r*GTmCSWRm+rBdar-b{jHK;lt2hn}`_#i%}wU>9* zp4LUXxd=T_*mR}{k0ZX5*>tEFH-|@VV-<5tCizS8ro2S?%;_z|Xz6-xmEk2$2Xn6s zr6O7)!%`WlWY{Rf1|BM_ZF34|7tftvUi@$^e~g>kGU-AoBP=%al)XG2B04K9%xcA@)~1MS;`|Hze)DhfjLH)KW-}&>TH-N@#?QnQjLvE* zpNTsG^=cvwosABqy?z5sq!(u6BOP0}%|S<$81~z%xl2j~{vSd&dL1E#pbV#V$So{G z2OFj>W%z!_;_C8%UD{j;Yv}e0OtCAJ!UZaYQnJj3$q=|qI6qNMIrdiS>aW1a8O+*3)+eJ{`z2*nHGP(3U_rfu%p93T$;I^EmTL$DxFhYJ2tYq`@?0G4^1zw SH5f}3 diff --git a/docs/build/doctrees/pyFTS.probabilistic.doctree b/docs/build/doctrees/pyFTS.probabilistic.doctree index 898db382c38b2cddcd7f93461cf4ad0916163fc1..3b647e7e30c211afd5c3533605e79764994af645 100644 GIT binary patch literal 75882 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 Q?e=H|u?U~GnYEbs|6MJ@p#T5? delta 210 zcmaELf#tFyTLbIV69Nny+4izd{=mY`Xf&CTU3>Cx)_$(U4B6T#8X5AjQzo;&H)Twm zZ2LYJq-658_W^7f^E0F}=1zWiKueYn$eNYGn8BPOouQQ><1JB|gwQ&@M21n3F>(7e z8OC!=Od0pKXUa3qX131Qk+C%+H6tmbE~7eQdd8HD4H;`odpPqFb5lzy3sQ@xfNb93 zmyzn1QRkO2-7jNNavigation

All modules for which code is available

-
  • pyFTS.common.Composite
  • +
    diff --git a/docs/build/html/_modules/pyFTS/benchmarks/BSTS.html b/docs/build/html/_modules/pyFTS/benchmarks/BSTS.html new file mode 100644 index 0000000..ea190d2 --- /dev/null +++ b/docs/build/html/_modules/pyFTS/benchmarks/BSTS.html @@ -0,0 +1,220 @@ + + + + + + + + + pyFTS.benchmarks.BSTS — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.benchmarks.BSTS

    +#!/usr/bin/python
    +# -*- coding: utf8 -*-
    +
    +import numpy as np
    +import pandas as pd
    +import scipy.stats as st
    +from pyFTS.common import SortedCollection, fts
    +from pyFTS.probabilistic import ProbabilityDistribution
    +
    +
    +
    [docs]class ARIMA(fts.FTS): + """ + Façade for statsmodels.tsa.arima_model + """ + def __init__(self, **kwargs): + super(ARIMA, self).__init__(**kwargs) + self.name = "BSTS" + self.detail = "Bayesian Structural Time Series" + self.is_high_order = True + self.has_point_forecasting = True + self.has_interval_forecasting = True + self.has_probability_forecasting = True + self.uod_clip = False + self.model = None + self.model_fit = None + self.trained_data = None + self.p = 1 + self.d = 0 + self.q = 0 + self.benchmark_only = True + self.min_order = 1 + self.alpha = kwargs.get("alpha", 0.05) + self.order = kwargs.get("order", (1,0,0)) + self._decompose_order(self.order) + self.model = None + + def _decompose_order(self, order): + if isinstance(order, (tuple, set, list)): + self.p = order[0] + self.d = order[1] + self.q = order[2] + self.order = self.p + self.q + (self.q - 1 if self.q > 0 else 0) + self.max_lag = self.order + self.d = len(self.transformations) + self.shortname = "BSTS({},{},{})-{}".format(self.p,self.d,self.q,self.alpha) + +
    [docs] def train(self, data, **kwargs): + import pyflux as pf + + if 'order' in kwargs: + order = kwargs.pop('order') + self._decompose_order(order) + + if self.indexer is not None: + data = self.indexer.get_data(data) + + try: + self.model = pf.ARIMA(data=data, ar=self.p, ma=self.q, integ=self.d, family=pf.Normal()) + self.model_fit = self.model.fit('M-H', nsims=20000) + except Exception as ex: + print(ex) + self.model_fit = None
    + +
    [docs] def inference(self, steps): + t_z = self.model.transform_z() + mu, Y = self.model._model(self.model.latent_variables.get_z_values()) + date_index = self.model.shift_dates(steps) + sim_vector = self.model._sim_prediction(mu, Y, steps, t_z, 1000) + + return sim_vector
    + +
    [docs] def forecast(self, ndata, **kwargs): + raise NotImplementedError()
    + +
    [docs] def forecast_ahead(self, data, steps, **kwargs): + return self.model.predict(steps, intervals=False).values.flatten().tolist()
    + +
    [docs] def forecast_interval(self, data, **kwargs): + raise NotImplementedError()
    + +
    [docs] def forecast_ahead_interval(self, ndata, steps, **kwargs): + sim_vector = self.inference(steps) + + if 'alpha' in kwargs: + alpha = kwargs.get('alpha') + else: + alpha = self.alpha + + ret = [] + + for ct, sample in enumerate(sim_vector): + i = np.percentile(sample, [alpha*100, (1-alpha)*100]).tolist() + ret.append(i) + + return ret
    + +
    [docs] def forecast_distribution(self, data, **kwargs): + import pyflux as pf + + sim_vector = self.inference(1) + + ret = [] + + for ct, sample in enumerate(sim_vector): + pd = ProbabilityDistribution.ProbabilityDistribution(type='histogram', data=sample, nbins=500) + ret.append(pd) + + return ret
    + + +
    [docs] def forecast_ahead_distribution(self, data, steps, **kwargs): + + sim_vector = self.inference(steps) + + ret = [] + + for ct, sample in enumerate(sim_vector): + pd = ProbabilityDistribution.ProbabilityDistribution(type='histogram', data=sample, nbins=500) + ret.append(pd) + + return ret
    +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/benchmarks/Measures.html b/docs/build/html/_modules/pyFTS/benchmarks/Measures.html new file mode 100644 index 0000000..4266854 --- /dev/null +++ b/docs/build/html/_modules/pyFTS/benchmarks/Measures.html @@ -0,0 +1,663 @@ + + + + + + + + + pyFTS.benchmarks.Measures — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.benchmarks.Measures

    +# -*- coding: utf8 -*-
    +
    +"""
    +pyFTS module for common benchmark metrics
    +"""
    +
    +import time
    +import numpy as np
    +import pandas as pd
    +from pyFTS.common import FuzzySet, SortedCollection
    +from pyFTS.probabilistic import ProbabilityDistribution
    +
    +
    +
    [docs]def acf(data, k): + """ + Autocorrelation function estimative + + :param data: + :param k: + :return: + """ + mu = np.nanmean(data) + sigma = np.var(data) + n = len(data) + s = 0 + for t in np.arange(0, n - k): + s += (data[t] - mu) * (data[t + k] - mu) + + return 1 / ((n - k) * sigma) * s
    + + +
    [docs]def rmse(targets, forecasts): + """ + Root Mean Squared Error + + :param targets: + :param forecasts: + :return: + """ + if isinstance(targets, list): + targets = np.array(targets) + if isinstance(forecasts, list): + forecasts = np.array(forecasts) + return np.sqrt(np.nanmean((targets - forecasts) ** 2))
    + + +
    [docs]def rmse_interval(targets, forecasts): + """ + Root Mean Squared Error + + :param targets: + :param forecasts: + :return: + """ + fmean = [np.mean(i) for i in forecasts] + return np.sqrt(np.nanmean((fmean - targets) ** 2))
    + + +
    [docs]def mape(targets, forecasts): + """ + Mean Average Percentual Error + + :param targets: + :param forecasts: + :return: + """ + if isinstance(targets, list): + targets = np.array(targets) + if isinstance(forecasts, list): + forecasts = np.array(forecasts) + return np.nanmean(np.abs(np.divide(np.subtract(targets, forecasts), targets))) * 100
    + + +
    [docs]def smape(targets, forecasts, type=2): + """ + Symmetric Mean Average Percentual Error + + :param targets: + :param forecasts: + :param type: + :return: + """ + if isinstance(targets, list): + targets = np.array(targets) + if isinstance(forecasts, list): + forecasts = np.array(forecasts) + if type == 1: + return np.nanmean(np.abs(forecasts - targets) / ((forecasts + targets) / 2)) + elif type == 2: + return np.nanmean(np.abs(forecasts - targets) / (np.abs(forecasts) + abs(targets))) * 100 + else: + return np.nansum(np.abs(forecasts - targets)) / np.nansum(forecasts + targets)
    + + +
    [docs]def mape_interval(targets, forecasts): + fmean = [np.mean(i) for i in forecasts] + return np.mean(abs(fmean - targets) / fmean) * 100
    + + +
    [docs]def UStatistic(targets, forecasts): + """ + Theil's U Statistic + + :param targets: + :param forecasts: + :return: + """ + + if not isinstance(forecasts, (list, np.ndarray)): + forecasts = np.array([forecasts]) + else: + forecasts = np.array(forecasts) + + if not isinstance(targets, (list, np.ndarray)): + targets = np.array([targets]) + else: + targets = np.array(targets) + + l = forecasts.size + l = 2 if l == 1 else l + + naive = [] + y = [] + for k in np.arange(0, l - 1): + y.append(np.subtract(forecasts[k], targets[k]) ** 2) + naive.append(np.subtract(targets[k + 1], targets[k]) ** 2) + return np.sqrt(np.divide(np.nansum(y), np.nansum(naive)))
    + + +
    [docs]def TheilsInequality(targets, forecasts): + """ + Theil’s Inequality Coefficient + + :param targets: + :param forecasts: + :return: + """ + res = targets - forecasts + t = len(res) + us = np.sqrt(np.nansum([u ** 2 for u in res])) + ys = np.sqrt(np.nansum([y ** 2 for y in targets])) + fs = np.sqrt(np.nansum([f ** 2 for f in forecasts])) + return us / (ys + fs)
    + + +
    [docs]def sharpness(forecasts): + """Sharpness - Mean size of the intervals""" + tmp = [i[1] - i[0] for i in forecasts] + return np.mean(tmp)
    + + +
    [docs]def resolution(forecasts): + """Resolution - Standard deviation of the intervals""" + shp = sharpness(forecasts) + tmp = [abs((i[1] - i[0]) - shp) for i in forecasts] + return np.mean(tmp)
    + + +
    [docs]def coverage(targets, forecasts): + """Percent of target values that fall inside forecasted interval""" + + preds = [] + for i in np.arange(0, len(forecasts)): + if targets[i] >= forecasts[i][0] and targets[i] <= forecasts[i][1]: + preds.append(1) + else: + preds.append(0) + return np.nanmean(preds)
    + + +
    [docs]def pinball(tau, target, forecast): + """ + Pinball loss function. Measure the distance of forecast to the tau-quantile of the target + + :param tau: quantile value in the range (0,1) + :param target: + :param forecast: + :return: float, distance of forecast to the tau-quantile of the target + """ + + if target >= forecast: + return np.subtract(target, forecast) * tau + else: + return np.subtract(forecast, target) * (1 - tau)
    + + +
    [docs]def pinball_mean(tau, targets, forecasts): + """ + Mean pinball loss value of the forecast for a given tau-quantile of the targets + + :param tau: quantile value in the range (0,1) + :param targets: list of target values + :param forecasts: list of prediction intervals + :return: float, the pinball loss mean for tau quantile + """ + + if tau <= 0.5: + preds = [pinball(tau, targets[i], forecasts[i][0]) for i in np.arange(0, len(forecasts))] + else: + preds = [pinball(tau, targets[i], forecasts[i][1]) for i in np.arange(0, len(forecasts))] + return np.nanmean(preds)
    + + +
    [docs]def winkler_score(tau, target, forecast): + """ + R. L. Winkler, A Decision-Theoretic Approach to Interval Estimation, J. Am. Stat. Assoc. 67 (337) (1972) 187–191. doi:10.2307/2284720. + + :param tau: + :param target: + :param forecast: + :return: + """ + + delta = forecast[1] - forecast[0] + if forecast[0] <= target <= forecast[1]: + return delta + elif forecast[0] > target: + return delta + (2 * (forecast[0] - target)) / tau + elif forecast[1] < target: + return delta + (2 * (target - forecast[1])) / tau
    + + +
    [docs]def winkler_mean(tau, targets, forecasts): + """ + Mean Winkler score value of the forecast for a given tau-quantile of the targets + + :param tau: quantile value in the range (0,1) + :param targets: list of target values + :param forecasts: list of prediction intervals + :return: float, the Winkler score mean for tau quantile + """ + + preds = [winkler_score(tau, targets[i], forecasts[i]) for i in np.arange(0, len(forecasts))] + + return np.nanmean(preds)
    + + +
    [docs]def brier_score(targets, densities): + """ + Brier Score for probabilistic forecasts. + Brier (1950). "Verification of Forecasts Expressed in Terms of Probability". Monthly Weather Review. 78: 1–3. + + :param targets: a list with the target values + :param densities: a list with pyFTS.probabil objectsistic.ProbabilityDistribution + :return: float + """ + + if not isinstance(densities, list): + densities = [densities] + targets = [targets] + + ret = [] + + for ct, d in enumerate(densities): + try: + v = d.bin_index.find_le(targets[ct]) + + score = np.nansum([d.density(k) ** 2 for k in d.bins if k != v]) + score += (d.density(v) - 1) ** 2 + ret.append(score) + except ValueError as ex: + ret.append(np.nansum([d.density(k) ** 2 for k in d.bins])) + return np.nansum(ret) / len(ret)
    + + +
    [docs]def logarithm_score(targets, densities): + """ + Logarithm Score for probabilistic forecasts. + Good IJ (1952). “Rational Decisions.”Journal of the Royal Statistical Society B,14(1),107–114. URLhttps://www.jstor.org/stable/2984087. + + :param targets: a list with the target values + :param densities: a list with pyFTS.probabil objectsistic.ProbabilityDistribution + :return: float + """ + + _ls = float(0.0) + if isinstance(densities, ProbabilityDistribution.ProbabilityDistribution): + densities = [densities] + targets = [targets] + + n = len(densities) + for ct, df in enumerate(densities): + _ls += -np.log(df.density(targets[ct])) + + return _ls / n
    + + +
    [docs]def crps(targets, densities): + """ + Continuous Ranked Probability Score + + :param targets: a list with the target values + :param densities: a list with pyFTS.probabil objectsistic.ProbabilityDistribution + :return: float + """ + + _crps = float(0.0) + if isinstance(densities, ProbabilityDistribution.ProbabilityDistribution): + densities = [densities] + targets = [targets] + + n = len(densities) + if n == 0: + return np.nan + + for ct, df in enumerate(densities): + _crps += np.nansum([(df.cumulative(bin) - (1 if bin >= targets[ct] else 0)) ** 2 for bin in df.bins]) + + return _crps / n
    + + +
    [docs]def get_point_statistics(data, model, **kwargs): + """ + Condensate all measures for point forecasters + + :param data: test data + :param model: FTS model with point forecasting capability + :param kwargs: + :return: a list with the RMSE, SMAPE and U Statistic + """ + + steps_ahead = kwargs.get('steps_ahead', 1) + kwargs['type'] = 'point' + + indexer = kwargs.get('indexer', None) + + if indexer is not None: + ndata = np.array(indexer.get_data(data)) + elif model.is_multivariate: + if not isinstance(data, pd.DataFrame): + raise ValueError("Multivariate data must be a Pandas DataFrame!") + ndata = data + else: + ndata = np.array(data) + + ret = list() + + if steps_ahead == 1: + forecasts = model.predict(ndata, **kwargs) + + if model.is_multivariate and model.has_seasonality: + ndata = model.indexer.get_data(ndata) + elif model.is_multivariate: + ndata = ndata[model.target_variable.data_label].values + + if not isinstance(forecasts, (list, np.ndarray)): + forecasts = [forecasts] + + if len(forecasts) != len(ndata) - model.max_lag: + forecasts = np.array(forecasts[:-1]) + else: + forecasts = np.array(forecasts) + + ret.append(np.round(rmse(ndata[model.max_lag:], forecasts), 2)) + ret.append(np.round(mape(ndata[model.max_lag:], forecasts), 2)) + ret.append(np.round(UStatistic(ndata[model.max_lag:], forecasts), 2)) + else: + steps_ahead_sampler = kwargs.get('steps_ahead_sampler', 1) + nforecasts = [] + for k in np.arange(model.order, len(ndata) - steps_ahead, steps_ahead_sampler): + sample = ndata[k - model.order: k] + tmp = model.predict(sample, **kwargs) + nforecasts.append(tmp[-1]) + + start = model.max_lag + steps_ahead - 1 + ret.append(np.round(rmse(ndata[start:-1:steps_ahead_sampler], nforecasts), 2)) + ret.append(np.round(mape(ndata[start:-1:steps_ahead_sampler], nforecasts), 2)) + ret.append(np.round(UStatistic(ndata[start:-1:steps_ahead_sampler], nforecasts), 2)) + + return ret
    + + +
    [docs]def get_point_ahead_statistics(data, forecasts, **kwargs): + """ + Condensate all measures for point forecasters + + :param data: test data + :param model: FTS model with point forecasting capability + :param kwargs: + :return: a list with the RMSE, SMAPE and U Statistic + """ + + l = len(forecasts) + + if len(data) != l: + raise Exception("Data and intervals have different lenghts!") + + lags = {} + + for lag in range(l): + ret = {} + datum = data[lag] + forecast = forecasts[lag] + ret['steps'] = lag + ret['method'] = '' + ret['rmse'] = rmse(datum, forecast) + ret['mape'] = mape(datum, forecast) + sample = data[lag-1:lag+1] if lag > 0 else [datum, datum] + ret['u'] = UStatistic(sample, forecast) + lags[lag] = ret + + return lags
    + + +
    [docs]def get_interval_statistics(data, model, **kwargs): + """ + Condensate all measures for point interval forecasters + + :param data: test data + :param model: FTS model with interval forecasting capability + :param kwargs: + :return: a list with the sharpness, resolution, coverage, .05 pinball mean, + .25 pinball mean, .75 pinball mean and .95 pinball mean. + """ + + steps_ahead = kwargs.get('steps_ahead', 1) + kwargs['type'] = 'interval' + + ret = list() + + if steps_ahead == 1: + forecasts = model.predict(data, **kwargs) + ret.append(round(sharpness(forecasts), 2)) + ret.append(round(resolution(forecasts), 2)) + if model.is_multivariate: + data = data[model.target_variable.data_label].values + ret.append(round(coverage(data[model.max_lag:], forecasts[:-1]), 2)) + ret.append(round(pinball_mean(0.05, data[model.max_lag:], forecasts[:-1]), 2)) + ret.append(round(pinball_mean(0.25, data[model.max_lag:], forecasts[:-1]), 2)) + ret.append(round(pinball_mean(0.75, data[model.max_lag:], forecasts[:-1]), 2)) + ret.append(round(pinball_mean(0.95, data[model.max_lag:], forecasts[:-1]), 2)) + ret.append(round(winkler_mean(0.05, data[model.max_lag:], forecasts[:-1]), 2)) + ret.append(round(winkler_mean(0.25, data[model.max_lag:], forecasts[:-1]), 2)) + else: + forecasts = [] + for k in np.arange(model.order, len(data) - steps_ahead): + sample = data[k - model.order: k] + tmp = model.predict(sample, **kwargs) + forecasts.append(tmp[-1]) + + start = model.max_lag + steps_ahead - 1 + ret.append(round(sharpness(forecasts), 2)) + ret.append(round(resolution(forecasts), 2)) + if model.is_multivariate: + data = data[model.target_variable.data_label].values + ret.append(round(coverage(data[model.max_lag:], forecasts), 2)) + ret.append(round(pinball_mean(0.05, data[start:], forecasts), 2)) + ret.append(round(pinball_mean(0.25, data[start:], forecasts), 2)) + ret.append(round(pinball_mean(0.75, data[start:], forecasts), 2)) + ret.append(round(pinball_mean(0.95, data[start:], forecasts), 2)) + ret.append(round(winkler_mean(0.05, data[start:], forecasts), 2)) + ret.append(round(winkler_mean(0.25, data[start:], forecasts), 2)) + return ret
    + + +
    [docs]def get_interval_ahead_statistics(data, intervals, **kwargs): + """ + Condensate all measures for point interval forecasters + + :param data: test data + :param intervals: predicted intervals for each datapoint + :param kwargs: + :return: a list with the sharpness, resolution, coverage, .05 pinball mean, + .25 pinball mean, .75 pinball mean and .95 pinball mean. + """ + + l = len(intervals) + + if len(data) != l: + raise Exception("Data and intervals have different lenghts!") + + lags = {} + + for lag in range(l): + ret = {} + datum = data[lag] + interval = intervals[lag] + ret['steps'] = lag + ret['method'] = '' + ret['sharpness'] = round(interval[1] - interval[0], 2) + ret['coverage'] = 1 if interval[0] <= datum <= interval[1] else 0 + ret['pinball05'] = round(pinball(0.05, datum, interval[0]), 2) + ret['pinball25'] = round(pinball(0.25, datum, interval[0]), 2) + ret['pinball75'] = round(pinball(0.75, datum, interval[1]), 2) + ret['pinball95'] = round(pinball(0.95, datum, interval[1]), 2) + ret['winkler05'] = round(winkler_score(0.05, datum, interval), 2) + ret['winkler25'] = round(winkler_score(0.25, datum, interval), 2) + lags[lag] = ret + + return lags
    + + +
    [docs]def get_distribution_statistics(data, model, **kwargs): + """ + Get CRPS statistic and time for a forecasting model + + :param data: test data + :param model: FTS model with probabilistic forecasting capability + :param kwargs: + :return: a list with the CRPS and execution time + """ + + steps_ahead = kwargs.get('steps_ahead', 1) + kwargs['type'] = 'distribution' + + ret = list() + + if steps_ahead == 1: + _s1 = time.time() + forecasts = model.predict(data, **kwargs) + _e1 = time.time() + if model.is_multivariate: + data = data[model.target_variable.data_label].values + ret.append(round(crps(data[model.max_lag:], forecasts[:-1]), 3)) + ret.append(round(_e1 - _s1, 3)) + ret.append(round(brier_score(data[model.max_lag:], forecasts[:-1]), 3)) + else: + skip = kwargs.get('steps_ahead_sampler', 1) + forecasts = [] + _s1 = time.time() + for k in np.arange(model.max_lag, len(data) - steps_ahead, skip): + sample = data[k - model.max_lag: k] + tmp = model.predict(sample, **kwargs) + forecasts.append(tmp[-1]) + _e1 = time.time() + + start = model.max_lag + steps_ahead + if model.is_multivariate: + data = data[model.target_variable.data_label].values + ret.append(round(crps(data[start:-1:skip], forecasts), 3)) + ret.append(round(_e1 - _s1, 3)) + ret.append(round(brier_score(data[start:-1:skip], forecasts), 3)) + return ret
    + + +
    [docs]def get_distribution_ahead_statistics(data, distributions): + """ + Get CRPS statistic and time for a forecasting model + + :param data: test data + :param model: FTS model with probabilistic forecasting capability + :param kwargs: + :return: a list with the CRPS and execution time + """ + + l = len(distributions) + + if len(data) != l: + raise Exception("Data and distributions have different lenghts!") + + lags = {} + + for lag in range(l): + ret = {} + datum = data[lag] + dist = distributions[lag] + ret['steps'] = lag + ret['method'] = '' + ret['crps'] = round(crps(datum, dist), 3) + ret['brier'] = round(brier_score(datum, dist), 3) + ret['log'] = round(logarithm_score(datum, dist), 3) + lags[lag] = ret + + return lags
    +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/benchmarks/ResidualAnalysis.html b/docs/build/html/_modules/pyFTS/benchmarks/ResidualAnalysis.html new file mode 100644 index 0000000..53b4bb6 --- /dev/null +++ b/docs/build/html/_modules/pyFTS/benchmarks/ResidualAnalysis.html @@ -0,0 +1,221 @@ + + + + + + + + + pyFTS.benchmarks.ResidualAnalysis — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.benchmarks.ResidualAnalysis

    +#!/usr/bin/python
    +# -*- coding: utf8 -*-
    +
    +"""Residual Analysis methods"""
    +
    +import numpy as np
    +import pandas as pd
    +import matplotlib as plt
    +import matplotlib.pyplot as plt
    +from pyFTS.common import Transformations,Util
    +from pyFTS.benchmarks import Measures
    +from scipy import stats
    +
    +
    +
    [docs]def residuals(targets, forecasts, order=1): + """First order residuals""" + return np.array(targets[order:]) - np.array(forecasts[:-1])
    + + +
    [docs]def ljung_box_test(residuals, lags=[1,2,3], alpha=0.5): + from statsmodels.stats.diagnostic import acorr_ljungbox + from scipy.stats import chi2 + + stat, pval = acorr_ljungbox(residuals, lags=lags) + + rows = [] + + for ct, Q in enumerate(stat): + lag = ct+1 + p_value = 1 - chi2.cdf(Q, df=lag) + critical_value = chi2.ppf(1 - alpha, df=lag) + rows.append([lag, Q, p_value, critical_value, 'H0 accepted' if Q > critical_value else 'H0 rejected']) + + return pd.DataFrame(rows, columns=['Lag','Statistic','p-Value','Critical Value', 'Result'])
    + + +
    [docs]def compare_residuals(data, models, alpha=.05): + """ + Compare residual's statistics of several models + + :param data: test data + :param models: + :return: a Pandas dataframe with the Box-Ljung statistic for each model + """ + from statsmodels.stats.diagnostic import acorr_ljungbox + rows = [] + columns = ["Model","Order","AVG","STD","Box-Ljung","p-value","Result"] + for mfts in models: + forecasts = mfts.predict(data) + res = residuals(data, forecasts, mfts.order+1) + mu = np.mean(res) + sig = np.std(res) + row = [mfts.shortname, mfts.order, mu, sig] + stat, pval = acorr_ljungbox(res) + test = 'H0 Accepted' if pval > alpha else 'H0 Rejected' + row.extend([stat, pval, test]) + rows.append(row) + return pd.DataFrame(rows, columns=columns)
    + + +
    [docs]def plot_residuals_by_model(targets, models, tam=[8, 8], save=False, file=None): + import scipy as sp + + fig, axes = plt.subplots(nrows=len(models), ncols=4, figsize=tam) + + for c, mfts in enumerate(models, start=0): + if len(models) > 1: + ax = axes[c] + else: + ax = axes + forecasts = mfts.predict(targets) + res = residuals(targets, forecasts, mfts.order) + mu = np.mean(res) + sig = np.std(res) + + if c == 0: ax[0].set_title("Residuals", size='large') + ax[0].set_ylabel(mfts.shortname, size='large') + ax[0].set_xlabel(' ') + ax[0].plot(res) + + if c == 0: ax[1].set_title("Autocorrelation", size='large') + ax[1].set_ylabel('ACS') + ax[1].set_xlabel('Lag') + ax[1].acorr(res) + + if c == 0: ax[2].set_title("Histogram", size='large') + ax[2].set_ylabel('Freq') + ax[2].set_xlabel('Bins') + ax[2].hist(res) + + if c == 0: ax[3].set_title("QQ Plot", size='large') + + _, (__, ___, r) = sp.stats.probplot(res, plot=ax[3], fit=True) + + plt.tight_layout() + + Util.show_and_save_image(fig, file, save)
    + + +
    [docs]def single_plot_residuals(res, order, tam=[10, 7], save=False, file=None): + import scipy as sp + + fig, ax = plt.subplots(nrows=2, ncols=2, figsize=tam) + + ax[0][0].set_title("Residuals", size='large') + ax[0][0].plot(res) + + ax[0][1].set_title("Autocorrelation", size='large') + ax[0][1].set_ylabel('ACF') + ax[0][1].set_xlabel('Lag') + ax[0][1].acorr(res) + + ax[1][0].set_title("Histogram", size='large') + ax[1][0].set_ylabel('Freq') + ax[1][0].set_xlabel('Bins') + ax[1][0].hist(res) + + _, (__, ___, r) = sp.stats.probplot(res, plot=ax[1][1], fit=True) + + plt.tight_layout() + + Util.show_and_save_image(fig, file, save)
    +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/benchmarks/Tests.html b/docs/build/html/_modules/pyFTS/benchmarks/Tests.html new file mode 100644 index 0000000..9871753 --- /dev/null +++ b/docs/build/html/_modules/pyFTS/benchmarks/Tests.html @@ -0,0 +1,266 @@ + + + + + + + + + pyFTS.benchmarks.Tests — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.benchmarks.Tests

    +
    +import numpy as np
    +import pandas as pd
    +
    +from pyFTS.benchmarks.Measures import acf
    +
    +
    +
    [docs]def BoxPierceStatistic(data, h): + """ + Q Statistic for Box-Pierce test + + :param data: + :param h: + :return: + """ + n = len(data) + s = 0 + for k in np.arange(1, h + 1): + r = acf(data, k) + s += r ** 2 + return n * s
    + + +
    [docs]def BoxLjungStatistic(data, h): + """ + Q Statistic for Ljung–Box test + + :param data: + :param h: + :return: + """ + n = len(data) + s = 0 + for k in np.arange(1, h + 1): + r = acf(data, k) + s += r ** 2 / (n - k) + return n * (n - 2) * s
    + + +
    [docs]def format_experiment_table(df, exclude=[], replace={}, csv=True, std=False): + rows = [] + columns = [] + datasets = df.Dataset.unique() + models = df.Model.unique() + for model in models: + test = np.any([model.rfind(k) != -1 for k in exclude]) if len(exclude) > 0 else False + if not test: + columns.append(model) + + for dataset in datasets: + row = [dataset] + if std: + row_std = [dataset] + for model in columns: + avg = np.nanmin(df[(df.Dataset == dataset) & (df.Model == model)]["AVG"].values) + row.append(round(avg, 3)) + if std: + _std = np.nanmin(df[(df.Dataset == dataset) & (df.Model == model)]["STD"].values) + row_std.append("(" + str(round(_std, 3)) + ")") + + rows.append(row) + if std: + rows.append(row_std) + + for k in range(len(columns)): + if columns[k] in replace: + columns[k] = replace[columns[k]] + + columns.insert(0, "dataset") + + if csv: + header = "" + for k in range(len(columns)): + if k > 0: + header += "," + header += columns[k] + + body = "" + for k in range(len(rows)): + row = "" + for w in range(len(rows[k])): + if w > 0: + row += "," + row += str(rows[k][w]) + body += '\n{}'.format(row) + + return header + body + else: + ret = pd.DataFrame(rows, columns=columns) + return ret
    + + +
    [docs]def test_mean_equality(tests, alpha=.05, method='friedman'): + """ + Test for the equality of the means, with alpha confidence level. + + H_0: There's no significant difference between the means + H_1: There is at least one significant difference between the means + + :param tests: + :param alpha: + :param method: + :return: + """ + from stac.stac import nonparametric_tests as npt + + methods = tests.columns[1:] + + values = [] + for k in methods: + values.append(tests[k].values) + + if method=='quade': + f_value, p_value, rankings, pivots = npt.quade_test(*values) + elif method=='friedman': + f_value, p_value, rankings, pivots = npt.friedman_aligned_ranks_test(*values) + else: + raise Exception('Unknown test method!') + + print("F-Value: {} \tp-Value: {}".format(f_value, p_value)) + + if p_value < alpha: + print("\nH0 is rejected!\n") + else: + print("\nH0 is accepted!\n") + + post_hoc = {} + rows = [] + for k in np.arange(0, len(methods)): + rows.append([methods[k], rankings[k]]) + post_hoc[methods[k]] = pivots[k] + + return [pd.DataFrame(rows, columns=['METHOD', 'RANK']).sort_values(['RANK']), post_hoc]
    + + +
    [docs]def post_hoc_tests(post_hoc, control_method, alpha=.05, method='finner'): + ''' + Finner paired post-hoc test with NSFTS as control method. + + $H_0$: There is no significant difference between the means + + $H_1$: There is a significant difference between the means + + :param post_hoc: + :param control_method: + :param alpha: + :param method: + :return: + ''' + from stac.stac import nonparametric_tests as npt + + if method == 'bonferroni_dunn': + comparisons, z_values, p_values, adj_p_values = npt.bonferroni_dunn_test(post_hoc,control_method) + elif method == 'holm': + comparisons, z_values, p_values, adj_p_values = npt.holm_test(post_hoc,control_method) + elif method == 'finner': + comparisons, z_values, p_values, adj_p_values = npt.finner_test(post_hoc, control_method) + else: + raise Exception('Unknown test method!') + + rows = [] + for k in np.arange(len(comparisons)): + test = 'H0 Accepted' if adj_p_values[k] > alpha else 'H0 Rejected' + rows.append([comparisons[k], z_values[k], p_values[k], adj_p_values[k], test]) + + return pd.DataFrame(rows, columns=['COMPARISON', 'Z-VALUE', 'P-VALUE', 'ADJUSTED P-VALUE', 'Result'])
    + +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/benchmarks/Util.html b/docs/build/html/_modules/pyFTS/benchmarks/Util.html new file mode 100644 index 0000000..966cb9c --- /dev/null +++ b/docs/build/html/_modules/pyFTS/benchmarks/Util.html @@ -0,0 +1,1419 @@ + + + + + + + + + pyFTS.benchmarks.Util — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.benchmarks.Util

    +"""
    +Facilities for pyFTS Benchmark module
    +"""
    +
    +import matplotlib as plt
    +import matplotlib.cm as cmx
    +import matplotlib.colors as pltcolors
    +import matplotlib.pyplot as plt
    +import numpy as np
    +import pandas as pd
    +import sqlite3
    +#from mpl_toolkits.mplot3d import Axes3D
    +
    +
    +from copy import deepcopy
    +from pyFTS.common import Util
    +
    +
    +
    [docs]def open_benchmark_db(name): + """ + Open a connection with a Sqlite database designed to store benchmark results. + + :param name: database filenem + :return: a sqlite3 database connection + """ + conn = sqlite3.connect(name) + + #performance optimizations + conn.execute("PRAGMA journal_mode = WAL") + conn.execute("PRAGMA synchronous = NORMAL") + + create_benchmark_tables(conn) + return conn
    + + +
    [docs]def create_benchmark_tables(conn): + """ + Create a sqlite3 table designed to store benchmark results. + + :param conn: a sqlite3 database connection + """ + c = conn.cursor() + + c.execute('''CREATE TABLE if not exists benchmarks( + ID integer primary key, Date int, Dataset text, Tag text, + Type text, Model text, Transformation text, 'Order' int, + Scheme text, Partitions int, + Size int, Steps int, Method text, Measure text, Value real)''') + + conn.commit()
    + + +
    [docs]def insert_benchmark(data, conn): + """ + Insert benchmark data on database + + :param data: a tuple with the benchmark data with format: + + ID: integer incremental primary key + Date: Date/hour of benchmark execution + Dataset: Identify on which dataset the dataset was performed + Tag: a user defined word that indentify a benchmark set + Type: forecasting type (point, interval, distribution) + Model: FTS model + Transformation: The name of data transformation, if one was used + Order: the order of the FTS method + Scheme: UoD partitioning scheme + Partitions: Number of partitions + Size: Number of rules of the FTS model + Steps: prediction horizon, i. e., the number of steps ahead + Measure: accuracy measure + Value: the measure value + + :param conn: a sqlite3 database connection + :return: + """ + c = conn.cursor() + + c.execute("INSERT INTO benchmarks(Date, Dataset, Tag, Type, Model, " + + "Transformation, 'Order', Scheme, Partitions, " + + "Size, Steps, Method, Measure, Value) " + + "VALUES(datetime('now'),?,?,?,?,?,?,?,?,?,?,?,?,?)", data) + conn.commit()
    + + +
    [docs]def process_common_data(dataset, tag, type, job): + """ + Wraps benchmark information on a tuple for sqlite database + + :param dataset: benchmark dataset + :param tag: benchmark set alias + :param type: forecasting type + :param job: a dictionary with benchmark data + :return: tuple for sqlite database + """ + model = job["obj"] + if model.benchmark_only: + data = [dataset, tag, type, model.shortname, + str(model.transformations[0]) if len(model.transformations) > 0 else None, + model.order, None, None, + None] + else: + data = [dataset, tag, type, model.shortname, + str(model.partitioner.transformation) if model.partitioner.transformation is not None else None, + model.order, model.partitioner.name, str(model.partitioner.partitions), + len(model)] + + return data
    + + +
    [docs]def process_common_data2(dataset, tag, type, job): + """ + Wraps benchmark information on a tuple for sqlite database + + :param dataset: benchmark dataset + :param tag: benchmark set alias + :param type: forecasting type + :param job: a dictionary with benchmark data + :return: tuple for sqlite database + """ + data = [dataset, tag, type, + job['model'], + job['transformation'], + job['order'], + job['partitioner'], + job['partitions'], + job['size'] + ] + + return data
    + + +
    [docs]def get_dataframe_from_bd(file, filter): + """ + Query the sqlite benchmark database and return a pandas dataframe with the results + + :param file: the url of the benchmark database + :param filter: sql conditions to filter + :return: pandas dataframe with the query results + """ + con = sqlite3.connect(file) + sql = "SELECT * from benchmarks" + if filter is not None: + sql += " WHERE " + filter + return pd.read_sql_query(sql, con)
    + + + +
    [docs]def extract_measure(dataframe, measure, data_columns): + if not dataframe.empty: + df = dataframe[(dataframe.Measure == measure)][data_columns] + tmp = df.to_dict(orient="records")[0] + ret = [k for k in tmp.values() if not np.isnan(k)] + return ret + else: + return None
    + + +
    [docs]def find_best(dataframe, criteria, ascending): + models = dataframe.Model.unique() + orders = dataframe.Order.unique() + ret = {} + for m in models: + for o in orders: + mod = {} + df = dataframe[(dataframe.Model == m) & (dataframe.Order == o)].sort_values(by=criteria, ascending=ascending) + if not df.empty: + _key = str(m) + str(o) + best = df.loc[df.index[0]] + mod['Model'] = m + mod['Order'] = o + mod['Scheme'] = best["Scheme"] + mod['Partitions'] = best["Partitions"] + + ret[_key] = mod + + return ret
    + + +
    [docs]def simple_synthetic_dataframe(file, tag, measure, sql=None): + ''' + Read experiments results from sqlite3 database in 'file', make a synthesis of the results + of the metric 'measure' with the same 'tag', returning a Pandas DataFrame with the mean results. + + :param file: sqlite3 database file name + :param tag: common tag of the experiments + :param measure: metric to synthetize + :return: Pandas DataFrame with the mean results + ''' + df = get_dataframe_from_bd(file,"tag = '{}' and measure = '{}' {}" + .format(tag, measure, + '' if sql is None else 'and {}'.format(sql))) + data = [] + + models = df.Model.unique() + datasets = df.Dataset.unique() + for dataset in datasets: + for model in models: + _filter = (df.Dataset == dataset) & (df.Model == model) + avg = np.nanmean(df[_filter].Value) + std = np.nanstd(df[_filter].Value) + data.append([dataset, model, avg, std]) + + dat = pd.DataFrame(data, columns=['Dataset', 'Model', 'AVG', 'STD']) + dat = dat.sort_values(['AVG', 'STD']) + + best = [] + + for dataset in datasets: + for model in models: + ix = dat[(dat.Dataset == dataset) & (dat.Model == model)].index[0] + best.append(ix) + + ret = dat.loc[best].sort_values(['AVG', 'STD']) + ret.groupby('Dataset') + + return ret
    + + +
    [docs]def analytic_tabular_dataframe(dataframe): + experiments = len(dataframe.columns) - len(base_dataframe_columns()) - 1 + models = dataframe.Model.unique() + orders = dataframe.Order.unique() + schemes = dataframe.Scheme.unique() + partitions = dataframe.Partitions.unique() + steps = dataframe.Steps.unique() + measures = dataframe.Measure.unique() + data_columns = analytical_data_columns(experiments) + + ret = [] + + for m in models: + for o in orders: + for s in schemes: + for p in partitions: + for st in steps: + for ms in measures: + df = dataframe[(dataframe.Model == m) & (dataframe.Order == o) + & (dataframe.Scheme == s) & (dataframe.Partitions == p) + & (dataframe.Steps == st) & (dataframe.Measure == ms) ] + + if not df.empty: + for col in data_columns: + mod = [m, o, s, p, st, ms, df[col].values[0]] + ret.append(mod) + + dat = pd.DataFrame(ret, columns=tabular_dataframe_columns()) + return dat
    + + +
    [docs]def tabular_dataframe_columns(): + return ["Model", "Order", "Scheme", "Partitions", "Steps", "Measure", "Value"]
    + + +
    [docs]def base_dataframe_columns(): + return ["Model", "Order", "Scheme", "Partitions", "Size", "Steps", "Method"]
    + +
    [docs]def point_dataframe_synthetic_columns(): + return base_dataframe_columns().extend(["RMSEAVG", "RMSESTD", + "SMAPEAVG", "SMAPESTD", "UAVG","USTD", "TIMEAVG", "TIMESTD"])
    + + +
    [docs]def point_dataframe_analytic_columns(experiments): + columns = [str(k) for k in np.arange(0, experiments)] + columns.insert(0, "Model") + columns.insert(1, "Order") + columns.insert(2, "Scheme") + columns.insert(3, "Partitions") + columns.insert(4, "Size") + columns.insert(5, "Steps") + columns.insert(6, "Method") + columns.insert(7, "Measure") + return columns
    + + +
    [docs]def save_dataframe_point(experiments, file, objs, rmse, save, synthetic, smape, times, u, steps, method): + """ + Create a dataframe to store the benchmark results + + :param experiments: dictionary with the execution results + :param file: + :param objs: + :param rmse: + :param save: + :param synthetic: + :param smape: + :param times: + :param u: + :return: + """ + ret = [] + + if synthetic: + + for k in sorted(objs.keys()): + try: + mod = [] + mfts = objs[k] + mod.append(mfts.shortname) + mod.append(mfts.order) + if not mfts.benchmark_only: + mod.append(mfts.partitioner.name) + mod.append(mfts.partitioner.partitions) + mod.append(len(mfts)) + else: + mod.append('-') + mod.append('-') + mod.append('-') + mod.append(steps[k]) + mod.append(method[k]) + mod.append(np.round(np.nanmean(rmse[k]), 2)) + mod.append(np.round(np.nanstd(rmse[k]), 2)) + mod.append(np.round(np.nanmean(smape[k]), 2)) + mod.append(np.round(np.nanstd(smape[k]), 2)) + mod.append(np.round(np.nanmean(u[k]), 2)) + mod.append(np.round(np.nanstd(u[k]), 2)) + mod.append(np.round(np.nanmean(times[k]), 4)) + mod.append(np.round(np.nanstd(times[k]), 4)) + ret.append(mod) + except Exception as ex: + print("Erro ao salvar ", k) + print("Exceção ", ex) + + columns = point_dataframe_synthetic_columns() + else: + for k in sorted(objs.keys()): + try: + mfts = objs[k] + n = mfts.shortname + o = mfts.order + if not mfts.benchmark_only: + s = mfts.partitioner.name + p = mfts.partitioner.partitions + l = len(mfts) + else: + s = '-' + p = '-' + l = '-' + st = steps[k] + mt = method[k] + tmp = [n, o, s, p, l, st, mt, 'RMSE'] + tmp.extend(rmse[k]) + ret.append(deepcopy(tmp)) + tmp = [n, o, s, p, l, st, mt, 'SMAPE'] + tmp.extend(smape[k]) + ret.append(deepcopy(tmp)) + tmp = [n, o, s, p, l, st, mt, 'U'] + tmp.extend(u[k]) + ret.append(deepcopy(tmp)) + tmp = [n, o, s, p, l, st, mt, 'TIME'] + tmp.extend(times[k]) + ret.append(deepcopy(tmp)) + except Exception as ex: + print("Erro ao salvar ", k) + print("Exceção ", ex) + columns = point_dataframe_analytic_columns(experiments) + try: + dat = pd.DataFrame(ret, columns=columns) + if save: dat.to_csv(Util.uniquefilename(file), sep=";", index=False) + return dat + except Exception as ex: + print(ex) + print(experiments) + print(columns) + print(ret)
    + + +
    [docs]def cast_dataframe_to_synthetic(infile, outfile, experiments, type): + if type == 'point': + analytic_columns = point_dataframe_analytic_columns + synthetic_columns = point_dataframe_synthetic_columns + synthetize_measures = cast_dataframe_to_synthetic_point + elif type == 'interval': + analytic_columns = interval_dataframe_analytic_columns + synthetic_columns = interval_dataframe_synthetic_columns + synthetize_measures = cast_dataframe_to_synthetic_interval + elif type == 'distribution': + analytic_columns = probabilistic_dataframe_analytic_columns + synthetic_columns = probabilistic_dataframe_synthetic_columns + synthetize_measures = cast_dataframe_to_synthetic_probabilistic + else: + raise ValueError("Type parameter has an unknown value!") + + columns = analytic_columns(experiments) + dat = pd.read_csv(infile, sep=";", usecols=columns) + models = dat.Model.unique() + orders = dat.Order.unique() + schemes = dat.Scheme.unique() + partitions = dat.Partitions.unique() + steps = dat.Steps.unique() + methods = dat.Method.unique() + + data_columns = analytical_data_columns(experiments) + + ret = [] + + for m in models: + for o in orders: + for s in schemes: + for p in partitions: + for st in steps: + for mt in methods: + df = dat[(dat.Model == m) & (dat.Order == o) & (dat.Scheme == s) & + (dat.Partitions == p) & (dat.Steps == st) & (dat.Method == mt)] + if not df.empty: + mod = synthetize_measures(df, data_columns) + mod.insert(0, m) + mod.insert(1, o) + mod.insert(2, s) + mod.insert(3, p) + mod.insert(4, df.iat[0,5]) + mod.insert(5, st) + mod.insert(6, mt) + ret.append(mod) + + dat = pd.DataFrame(ret, columns=synthetic_columns()) + dat.to_csv(outfile, sep=";", index=False)
    + + +
    [docs]def cast_dataframe_to_synthetic_point(df, data_columns): + ret = [] + rmse = extract_measure(df, 'RMSE', data_columns) + smape = extract_measure(df, 'SMAPE', data_columns) + u = extract_measure(df, 'U', data_columns) + times = extract_measure(df, 'TIME', data_columns) + ret.append(np.round(np.nanmean(rmse), 2)) + ret.append(np.round(np.nanstd(rmse), 2)) + ret.append(np.round(np.nanmean(smape), 2)) + ret.append(np.round(np.nanstd(smape), 2)) + ret.append(np.round(np.nanmean(u), 2)) + ret.append(np.round(np.nanstd(u), 2)) + ret.append(np.round(np.nanmean(times), 4)) + ret.append(np.round(np.nanstd(times), 4)) + + return ret
    + + +
    [docs]def analytical_data_columns(experiments): + data_columns = [str(k) for k in np.arange(0, experiments)] + return data_columns
    + + +
    [docs]def scale_params(data): + vmin = np.nanmin(data) + vlen = np.nanmax(data) - vmin + return (vmin, vlen)
    + + + +
    [docs]def scale(data, params): + ndata = [(k-params[0])/params[1] for k in data] + return ndata
    + + +
    [docs]def stats(measure, data): + print(measure, np.nanmean(data), np.nanstd(data))
    + + +
    [docs]def unified_scaled_point(experiments, tam, save=False, file=None, + sort_columns=['UAVG', 'RMSEAVG', 'USTD', 'RMSESTD'], + sort_ascend=[1, 1, 1, 1],save_best=False, + ignore=None, replace=None): + + fig, axes = plt.subplots(nrows=3, ncols=1, figsize=tam) + + axes[0].set_title('RMSE') + axes[1].set_title('SMAPE') + axes[2].set_title('U Statistic') + + models = {} + + for experiment in experiments: + + mdl = {} + + dat_syn = pd.read_csv(experiment[0], sep=";", usecols=point_dataframe_synthetic_columns()) + + bests = find_best(dat_syn, sort_columns, sort_ascend) + + dat_ana = pd.read_csv(experiment[1], sep=";", usecols=point_dataframe_analytic_columns(experiment[2])) + + rmse = [] + smape = [] + u = [] + times = [] + + data_columns = analytical_data_columns(experiment[2]) + + for b in sorted(bests.keys()): + if check_ignore_list(b, ignore): + continue + + if b not in models: + models[b] = {} + models[b]['rmse'] = [] + models[b]['smape'] = [] + models[b]['u'] = [] + models[b]['times'] = [] + + if b not in mdl: + mdl[b] = {} + mdl[b]['rmse'] = [] + mdl[b]['smape'] = [] + mdl[b]['u'] = [] + mdl[b]['times'] = [] + + best = bests[b] + tmp = dat_ana[(dat_ana.Model == best["Model"]) & (dat_ana.Order == best["Order"]) + & (dat_ana.Scheme == best["Scheme"]) & (dat_ana.Partitions == best["Partitions"])] + tmpl = extract_measure(tmp,'RMSE',data_columns) + mdl[b]['rmse'].extend( tmpl ) + rmse.extend( tmpl ) + tmpl = extract_measure(tmp, 'SMAPE', data_columns) + mdl[b]['smape'].extend(tmpl) + smape.extend(tmpl) + tmpl = extract_measure(tmp, 'U', data_columns) + mdl[b]['u'].extend(tmpl) + u.extend(tmpl) + tmpl = extract_measure(tmp, 'TIME', data_columns) + mdl[b]['times'].extend(tmpl) + times.extend(tmpl) + + models[b]['label'] = check_replace_list(best["Model"] + " " + str(best["Order"]), replace) + + print("GLOBAL") + rmse_param = scale_params(rmse) + stats("rmse", rmse) + smape_param = scale_params(smape) + stats("smape", smape) + u_param = scale_params(u) + stats("u", u) + times_param = scale_params(times) + + for key in sorted(models.keys()): + models[key]['rmse'].extend( scale(mdl[key]['rmse'], rmse_param) ) + models[key]['smape'].extend( scale(mdl[key]['smape'], smape_param) ) + models[key]['u'].extend( scale(mdl[key]['u'], u_param) ) + models[key]['times'].extend( scale(mdl[key]['times'], times_param) ) + + rmse = [] + smape = [] + u = [] + times = [] + labels = [] + for key in sorted(models.keys()): + print(key) + rmse.append(models[key]['rmse']) + stats("rmse", models[key]['rmse']) + smape.append(models[key]['smape']) + stats("smape", models[key]['smape']) + u.append(models[key]['u']) + stats("u", models[key]['u']) + times.append(models[key]['times']) + labels.append(models[key]['label']) + + axes[0].boxplot(rmse, labels=labels, autorange=True, showmeans=True) + axes[0].set_title("RMSE") + axes[1].boxplot(smape, labels=labels, autorange=True, showmeans=True) + axes[1].set_title("SMAPE") + axes[2].boxplot(u, labels=labels, autorange=True, showmeans=True) + axes[2].set_title("U Statistic") + + plt.tight_layout() + + Util.show_and_save_image(fig, file, save)
    + + +
    [docs]def plot_dataframe_point(file_synthetic, file_analytic, experiments, tam, save=False, file=None, + sort_columns=['UAVG', 'RMSEAVG', 'USTD', 'RMSESTD'], + sort_ascend=[1, 1, 1, 1],save_best=False, + ignore=None,replace=None): + + fig, axes = plt.subplots(nrows=3, ncols=1, figsize=tam) + + axes[0].set_title('RMSE') + axes[1].set_title('SMAPE') + axes[2].set_title('U Statistic') + + dat_syn = pd.read_csv(file_synthetic, sep=";", usecols=point_dataframe_synthetic_columns()) + + bests = find_best(dat_syn, sort_columns, sort_ascend) + + dat_ana = pd.read_csv(file_analytic, sep=";", usecols=point_dataframe_analytic_columns(experiments)) + + data_columns = analytical_data_columns(experiments) + + if save_best: + dat = pd.DataFrame.from_dict(bests, orient='index') + dat.to_csv(Util.uniquefilename(file_synthetic.replace("synthetic","best")), sep=";", index=False) + + rmse = [] + smape = [] + u = [] + times = [] + labels = [] + + for b in sorted(bests.keys()): + if check_ignore_list(b, ignore): + continue + + best = bests[b] + tmp = dat_ana[(dat_ana.Model == best["Model"]) & (dat_ana.Order == best["Order"]) + & (dat_ana.Scheme == best["Scheme"]) & (dat_ana.Partitions == best["Partitions"])] + rmse.append( extract_measure(tmp,'RMSE',data_columns) ) + smape.append(extract_measure(tmp, 'SMAPE', data_columns)) + u.append(extract_measure(tmp, 'U', data_columns)) + times.append(extract_measure(tmp, 'TIME', data_columns)) + + labels.append(check_replace_list(best["Model"] + " " + str(best["Order"]),replace)) + + axes[0].boxplot(rmse, labels=labels, autorange=True, showmeans=True) + axes[0].set_title("RMSE") + axes[1].boxplot(smape, labels=labels, autorange=True, showmeans=True) + axes[1].set_title("SMAPE") + axes[2].boxplot(u, labels=labels, autorange=True, showmeans=True) + axes[2].set_title("U Statistic") + + plt.tight_layout() + + Util.show_and_save_image(fig, file, save)
    + + + +
    [docs]def check_replace_list(m, replace): + if replace is not None: + for r in replace: + if r[0] in m: + return r[1] + return m
    + + + +
    [docs]def check_ignore_list(b, ignore): + flag = False + if ignore is not None: + for i in ignore: + if i in b: + flag = True + return flag
    + + +
    [docs]def save_dataframe_interval(coverage, experiments, file, objs, resolution, save, sharpness, synthetic, times, + q05, q25, q75, q95, steps, method): + ret = [] + if synthetic: + for k in sorted(objs.keys()): + mod = [] + mfts = objs[k] + mod.append(mfts.shortname) + mod.append(mfts.order) + l = len(mfts) + if not mfts.benchmark_only: + mod.append(mfts.partitioner.name) + mod.append(mfts.partitioner.partitions) + mod.append(l) + else: + mod.append('-') + mod.append('-') + mod.append('-') + mod.append(steps[k]) + mod.append(method[k]) + mod.append(round(np.nanmean(sharpness[k]), 2)) + mod.append(round(np.nanstd(sharpness[k]), 2)) + mod.append(round(np.nanmean(resolution[k]), 2)) + mod.append(round(np.nanstd(resolution[k]), 2)) + mod.append(round(np.nanmean(coverage[k]), 2)) + mod.append(round(np.nanstd(coverage[k]), 2)) + mod.append(round(np.nanmean(times[k]), 2)) + mod.append(round(np.nanstd(times[k]), 2)) + mod.append(round(np.nanmean(q05[k]), 2)) + mod.append(round(np.nanstd(q05[k]), 2)) + mod.append(round(np.nanmean(q25[k]), 2)) + mod.append(round(np.nanstd(q25[k]), 2)) + mod.append(round(np.nanmean(q75[k]), 2)) + mod.append(round(np.nanstd(q75[k]), 2)) + mod.append(round(np.nanmean(q95[k]), 2)) + mod.append(round(np.nanstd(q95[k]), 2)) + mod.append(l) + ret.append(mod) + + columns = interval_dataframe_synthetic_columns() + else: + for k in sorted(objs.keys()): + try: + mfts = objs[k] + n = mfts.shortname + o = mfts.order + if not mfts.benchmark_only: + s = mfts.partitioner.name + p = mfts.partitioner.partitions + l = len(mfts) + else: + s = '-' + p = '-' + l = '-' + st = steps[k] + mt = method[k] + tmp = [n, o, s, p, l, st, mt, 'Sharpness'] + tmp.extend(sharpness[k]) + ret.append(deepcopy(tmp)) + tmp = [n, o, s, p, l, st, mt, 'Resolution'] + tmp.extend(resolution[k]) + ret.append(deepcopy(tmp)) + tmp = [n, o, s, p, l, st, mt, 'Coverage'] + tmp.extend(coverage[k]) + ret.append(deepcopy(tmp)) + tmp = [n, o, s, p, l, st, mt, 'TIME'] + tmp.extend(times[k]) + ret.append(deepcopy(tmp)) + tmp = [n, o, s, p, l, st, mt, 'Q05'] + tmp.extend(q05[k]) + ret.append(deepcopy(tmp)) + tmp = [n, o, s, p, l, st, mt, 'Q25'] + tmp.extend(q25[k]) + ret.append(deepcopy(tmp)) + tmp = [n, o, s, p, l, st, mt, 'Q75'] + tmp.extend(q75[k]) + ret.append(deepcopy(tmp)) + tmp = [n, o, s, p, l, st, mt, 'Q95'] + tmp.extend(q95[k]) + ret.append(deepcopy(tmp)) + except Exception as ex: + print("Erro ao salvar ", k) + print("Exceção ", ex) + columns = interval_dataframe_analytic_columns(experiments) + dat = pd.DataFrame(ret, columns=columns) + if save: dat.to_csv(Util.uniquefilename(file), sep=";") + return dat
    + + +
    [docs]def interval_dataframe_analytic_columns(experiments): + columns = [str(k) for k in np.arange(0, experiments)] + columns.insert(0, "Model") + columns.insert(1, "Order") + columns.insert(2, "Scheme") + columns.insert(3, "Partitions") + columns.insert(4, "Size") + columns.insert(5, "Steps") + columns.insert(6, "Method") + columns.insert(7, "Measure") + return columns
    + + + +
    [docs]def interval_dataframe_synthetic_columns(): + columns = ["Model", "Order", "Scheme", "Partitions","SIZE", "Steps","Method" "SHARPAVG", "SHARPSTD", "RESAVG", "RESSTD", "COVAVG", + "COVSTD", "TIMEAVG", "TIMESTD", "Q05AVG", "Q05STD", "Q25AVG", "Q25STD", "Q75AVG", "Q75STD", "Q95AVG", "Q95STD"] + return columns
    + + +
    [docs]def cast_dataframe_to_synthetic_interval(df, data_columns): + sharpness = extract_measure(df, 'Sharpness', data_columns) + resolution = extract_measure(df, 'Resolution', data_columns) + coverage = extract_measure(df, 'Coverage', data_columns) + times = extract_measure(df, 'TIME', data_columns) + q05 = extract_measure(df, 'Q05', data_columns) + q25 = extract_measure(df, 'Q25', data_columns) + q75 = extract_measure(df, 'Q75', data_columns) + q95 = extract_measure(df, 'Q95', data_columns) + ret = [] + ret.append(np.round(np.nanmean(sharpness), 2)) + ret.append(np.round(np.nanstd(sharpness), 2)) + ret.append(np.round(np.nanmean(resolution), 2)) + ret.append(np.round(np.nanstd(resolution), 2)) + ret.append(np.round(np.nanmean(coverage), 2)) + ret.append(np.round(np.nanstd(coverage), 2)) + ret.append(np.round(np.nanmean(times), 4)) + ret.append(np.round(np.nanstd(times), 4)) + ret.append(np.round(np.nanmean(q05), 4)) + ret.append(np.round(np.nanstd(q05), 4)) + ret.append(np.round(np.nanmean(q25), 4)) + ret.append(np.round(np.nanstd(q25), 4)) + ret.append(np.round(np.nanmean(q75), 4)) + ret.append(np.round(np.nanstd(q75), 4)) + ret.append(np.round(np.nanmean(q95), 4)) + ret.append(np.round(np.nanstd(q95), 4)) + return ret
    + + + + +
    [docs]def unified_scaled_interval(experiments, tam, save=False, file=None, + sort_columns=['COVAVG', 'SHARPAVG', 'COVSTD', 'SHARPSTD'], + sort_ascend=[True, False, True, True],save_best=False, + ignore=None, replace=None): + fig, axes = plt.subplots(nrows=3, ncols=1, figsize=tam) + + axes[0].set_title('Sharpness') + axes[1].set_title('Resolution') + axes[2].set_title('Coverage') + + models = {} + + for experiment in experiments: + + mdl = {} + + dat_syn = pd.read_csv(experiment[0], sep=";", usecols=interval_dataframe_synthetic_columns()) + + bests = find_best(dat_syn, sort_columns, sort_ascend) + + dat_ana = pd.read_csv(experiment[1], sep=";", usecols=interval_dataframe_analytic_columns(experiment[2])) + + sharpness = [] + resolution = [] + coverage = [] + times = [] + + data_columns = analytical_data_columns(experiment[2]) + + for b in sorted(bests.keys()): + if check_ignore_list(b, ignore): + continue + + if b not in models: + models[b] = {} + models[b]['sharpness'] = [] + models[b]['resolution'] = [] + models[b]['coverage'] = [] + models[b]['times'] = [] + + if b not in mdl: + mdl[b] = {} + mdl[b]['sharpness'] = [] + mdl[b]['resolution'] = [] + mdl[b]['coverage'] = [] + mdl[b]['times'] = [] + + best = bests[b] + print(best) + tmp = dat_ana[(dat_ana.Model == best["Model"]) & (dat_ana.Order == best["Order"]) + & (dat_ana.Scheme == best["Scheme"]) & (dat_ana.Partitions == best["Partitions"])] + tmpl = extract_measure(tmp, 'Sharpness', data_columns) + mdl[b]['sharpness'].extend(tmpl) + sharpness.extend(tmpl) + tmpl = extract_measure(tmp, 'Resolution', data_columns) + mdl[b]['resolution'].extend(tmpl) + resolution.extend(tmpl) + tmpl = extract_measure(tmp, 'Coverage', data_columns) + mdl[b]['coverage'].extend(tmpl) + coverage.extend(tmpl) + tmpl = extract_measure(tmp, 'TIME', data_columns) + mdl[b]['times'].extend(tmpl) + times.extend(tmpl) + + models[b]['label'] = check_replace_list(best["Model"] + " " + str(best["Order"]), replace) + + sharpness_param = scale_params(sharpness) + resolution_param = scale_params(resolution) + coverage_param = scale_params(coverage) + times_param = scale_params(times) + + for key in sorted(models.keys()): + models[key]['sharpness'].extend(scale(mdl[key]['sharpness'], sharpness_param)) + models[key]['resolution'].extend(scale(mdl[key]['resolution'], resolution_param)) + models[key]['coverage'].extend(scale(mdl[key]['coverage'], coverage_param)) + models[key]['times'].extend(scale(mdl[key]['times'], times_param)) + + sharpness = [] + resolution = [] + coverage = [] + times = [] + labels = [] + for key in sorted(models.keys()): + sharpness.append(models[key]['sharpness']) + resolution.append(models[key]['resolution']) + coverage.append(models[key]['coverage']) + times.append(models[key]['times']) + labels.append(models[key]['label']) + + axes[0].boxplot(sharpness, labels=labels, autorange=True, showmeans=True) + axes[1].boxplot(resolution, labels=labels, autorange=True, showmeans=True) + axes[2].boxplot(coverage, labels=labels, autorange=True, showmeans=True) + + plt.tight_layout() + + Util.show_and_save_image(fig, file, save)
    + + + +
    [docs]def plot_dataframe_interval(file_synthetic, file_analytic, experiments, tam, save=False, file=None, + sort_columns=['COVAVG', 'SHARPAVG', 'COVSTD', 'SHARPSTD'], + sort_ascend=[True, False, True, True],save_best=False, + ignore=None, replace=None): + + fig, axes = plt.subplots(nrows=3, ncols=1, figsize=tam) + + axes[0].set_title('Sharpness') + axes[1].set_title('Resolution') + axes[2].set_title('Coverage') + + dat_syn = pd.read_csv(file_synthetic, sep=";", usecols=interval_dataframe_synthetic_columns()) + + bests = find_best(dat_syn, sort_columns, sort_ascend) + + dat_ana = pd.read_csv(file_analytic, sep=";", usecols=interval_dataframe_analytic_columns(experiments)) + + data_columns = analytical_data_columns(experiments) + + if save_best: + dat = pd.DataFrame.from_dict(bests, orient='index') + dat.to_csv(Util.uniquefilename(file_synthetic.replace("synthetic","best")), sep=";", index=False) + + sharpness = [] + resolution = [] + coverage = [] + times = [] + labels = [] + bounds_shp = [] + + for b in sorted(bests.keys()): + if check_ignore_list(b, ignore): + continue + best = bests[b] + df = dat_ana[(dat_ana.Model == best["Model"]) & (dat_ana.Order == best["Order"]) + & (dat_ana.Scheme == best["Scheme"]) & (dat_ana.Partitions == best["Partitions"])] + sharpness.append( extract_measure(df,'Sharpness',data_columns) ) + resolution.append(extract_measure(df, 'Resolution', data_columns)) + coverage.append(extract_measure(df, 'Coverage', data_columns)) + times.append(extract_measure(df, 'TIME', data_columns)) + labels.append(check_replace_list(best["Model"] + " " + str(best["Order"]), replace)) + + axes[0].boxplot(sharpness, labels=labels, autorange=True, showmeans=True) + axes[0].set_title("Sharpness") + axes[1].boxplot(resolution, labels=labels, autorange=True, showmeans=True) + axes[1].set_title("Resolution") + axes[2].boxplot(coverage, labels=labels, autorange=True, showmeans=True) + axes[2].set_title("Coverage") + axes[2].set_ylim([0, 1.1]) + + plt.tight_layout() + + Util.show_and_save_image(fig, file, save)
    + + + +
    [docs]def unified_scaled_interval_pinball(experiments, tam, save=False, file=None, + sort_columns=['COVAVG','SHARPAVG','COVSTD','SHARPSTD'], + sort_ascend=[True, False, True, True], save_best=False, + ignore=None, replace=None): + fig, axes = plt.subplots(nrows=1, ncols=4, figsize=tam) + axes[0].set_title(r'$\tau=0.05$') + axes[1].set_title(r'$\tau=0.25$') + axes[2].set_title(r'$\tau=0.75$') + axes[3].set_title(r'$\tau=0.95$') + models = {} + + for experiment in experiments: + + mdl = {} + + dat_syn = pd.read_csv(experiment[0], sep=";", usecols=interval_dataframe_synthetic_columns()) + + bests = find_best(dat_syn, sort_columns, sort_ascend) + + dat_ana = pd.read_csv(experiment[1], sep=";", usecols=interval_dataframe_analytic_columns(experiment[2])) + + q05 = [] + q25 = [] + q75 = [] + q95 = [] + + data_columns = analytical_data_columns(experiment[2]) + + for b in sorted(bests.keys()): + if check_ignore_list(b, ignore): + continue + + if b not in models: + models[b] = {} + models[b]['q05'] = [] + models[b]['q25'] = [] + models[b]['q75'] = [] + models[b]['q95'] = [] + + if b not in mdl: + mdl[b] = {} + mdl[b]['q05'] = [] + mdl[b]['q25'] = [] + mdl[b]['q75'] = [] + mdl[b]['q95'] = [] + + best = bests[b] + print(best) + tmp = dat_ana[(dat_ana.Model == best["Model"]) & (dat_ana.Order == best["Order"]) + & (dat_ana.Scheme == best["Scheme"]) & (dat_ana.Partitions == best["Partitions"])] + tmpl = extract_measure(tmp, 'Q05', data_columns) + mdl[b]['q05'].extend(tmpl) + q05.extend(tmpl) + tmpl = extract_measure(tmp, 'Q25', data_columns) + mdl[b]['q25'].extend(tmpl) + q25.extend(tmpl) + tmpl = extract_measure(tmp, 'Q75', data_columns) + mdl[b]['q75'].extend(tmpl) + q75.extend(tmpl) + tmpl = extract_measure(tmp, 'Q95', data_columns) + mdl[b]['q95'].extend(tmpl) + q95.extend(tmpl) + + models[b]['label'] = check_replace_list(best["Model"] + " " + str(best["Order"]), replace) + + q05_param = scale_params(q05) + q25_param = scale_params(q25) + q75_param = scale_params(q75) + q95_param = scale_params(q95) + + for key in sorted(models.keys()): + models[key]['q05'].extend(scale(mdl[key]['q05'], q05_param)) + models[key]['q25'].extend(scale(mdl[key]['q25'], q25_param)) + models[key]['q75'].extend(scale(mdl[key]['q75'], q75_param)) + models[key]['q95'].extend(scale(mdl[key]['q95'], q95_param)) + + q05 = [] + q25 = [] + q75 = [] + q95 = [] + labels = [] + for key in sorted(models.keys()): + q05.append(models[key]['q05']) + q25.append(models[key]['q25']) + q75.append(models[key]['q75']) + q95.append(models[key]['q95']) + labels.append(models[key]['label']) + + axes[0].boxplot(q05, labels=labels, vert=False, autorange=True, showmeans=True) + axes[1].boxplot(q25, labels=labels, vert=False, autorange=True, showmeans=True) + axes[2].boxplot(q75, labels=labels, vert=False, autorange=True, showmeans=True) + axes[3].boxplot(q95, labels=labels, vert=False, autorange=True, showmeans=True) + + plt.tight_layout() + + Util.show_and_save_image(fig, file, save)
    + + + +
    [docs]def plot_dataframe_interval_pinball(file_synthetic, file_analytic, experiments, tam, save=False, file=None, + sort_columns=['COVAVG','SHARPAVG','COVSTD','SHARPSTD'], + sort_ascend=[True, False, True, True], save_best=False, + ignore=None, replace=None): + + fig, axes = plt.subplots(nrows=1, ncols=4, figsize=tam) + axes[0].set_title(r'$\tau=0.05$') + axes[1].set_title(r'$\tau=0.25$') + axes[2].set_title(r'$\tau=0.75$') + axes[3].set_title(r'$\tau=0.95$') + + dat_syn = pd.read_csv(file_synthetic, sep=";", usecols=interval_dataframe_synthetic_columns()) + + bests = find_best(dat_syn, sort_columns, sort_ascend) + + dat_ana = pd.read_csv(file_analytic, sep=";", usecols=interval_dataframe_analytic_columns(experiments)) + + data_columns = analytical_data_columns(experiments) + + if save_best: + dat = pd.DataFrame.from_dict(bests, orient='index') + dat.to_csv(Util.uniquefilename(file_synthetic.replace("synthetic","best")), sep=";", index=False) + + q05 = [] + q25 = [] + q75 = [] + q95 = [] + labels = [] + + for b in sorted(bests.keys()): + if check_ignore_list(b, ignore): + continue + best = bests[b] + df = dat_ana[(dat_ana.Model == best["Model"]) & (dat_ana.Order == best["Order"]) + & (dat_ana.Scheme == best["Scheme"]) & (dat_ana.Partitions == best["Partitions"])] + q05.append(extract_measure(df, 'Q05', data_columns)) + q25.append(extract_measure(df, 'Q25', data_columns)) + q75.append(extract_measure(df, 'Q75', data_columns)) + q95.append(extract_measure(df, 'Q95', data_columns)) + labels.append(check_replace_list(best["Model"] + " " + str(best["Order"]), replace)) + + axes[0].boxplot(q05, labels=labels, vert=False, autorange=True, showmeans=True) + axes[1].boxplot(q25, labels=labels, vert=False, autorange=True, showmeans=True) + axes[2].boxplot(q75, labels=labels, vert=False, autorange=True, showmeans=True) + axes[3].boxplot(q95, labels=labels, vert=False, autorange=True, showmeans=True) + + plt.tight_layout() + + Util.show_and_save_image(fig, file, save)
    + + +
    [docs]def save_dataframe_probabilistic(experiments, file, objs, crps, times, save, synthetic, steps, method): + """ + Save benchmark results for m-step ahead probabilistic forecasters + :param experiments: + :param file: + :param objs: + :param crps_interval: + :param crps_distr: + :param times: + :param times2: + :param save: + :param synthetic: + :return: + """ + ret = [] + + if synthetic: + + for k in sorted(objs.keys()): + try: + ret = [] + for k in sorted(objs.keys()): + try: + mod = [] + mfts = objs[k] + mod.append(mfts.shortname) + mod.append(mfts.order) + if not mfts.benchmark_only: + mod.append(mfts.partitioner.name) + mod.append(mfts.partitioner.partitions) + mod.append(len(mfts)) + else: + mod.append('-') + mod.append('-') + mod.append('-') + mod.append(steps[k]) + mod.append(method[k]) + mod.append(np.round(np.nanmean(crps[k]), 2)) + mod.append(np.round(np.nanstd(crps[k]), 2)) + mod.append(np.round(np.nanmean(times[k]), 4)) + mod.append(np.round(np.nanstd(times[k]), 4)) + ret.append(mod) + except Exception as e: + print('Erro: %s' % e) + except Exception as ex: + print("Erro ao salvar ", k) + print("Exceção ", ex) + + columns = probabilistic_dataframe_synthetic_columns() + else: + for k in sorted(objs.keys()): + try: + mfts = objs[k] + n = mfts.shortname + o = mfts.order + if not mfts.benchmark_only: + s = mfts.partitioner.name + p = mfts.partitioner.partitions + l = len(mfts) + else: + s = '-' + p = '-' + l = '-' + st = steps[k] + mt = method[k] + tmp = [n, o, s, p, l, st, mt, 'CRPS'] + tmp.extend(crps[k]) + ret.append(deepcopy(tmp)) + tmp = [n, o, s, p, l, st, mt, 'TIME'] + tmp.extend(times[k]) + ret.append(deepcopy(tmp)) + except Exception as ex: + print("Erro ao salvar ", k) + print("Exceção ", ex) + columns = probabilistic_dataframe_analytic_columns(experiments) + dat = pd.DataFrame(ret, columns=columns) + if save: dat.to_csv(Util.uniquefilename(file), sep=";") + return dat
    + + +
    [docs]def probabilistic_dataframe_analytic_columns(experiments): + columns = [str(k) for k in np.arange(0, experiments)] + columns.insert(0, "Model") + columns.insert(1, "Order") + columns.insert(2, "Scheme") + columns.insert(3, "Partitions") + columns.insert(4, "Size") + columns.insert(5, "Steps") + columns.insert(6, "Method") + columns.insert(7, "Measure") + return columns
    + + +
    [docs]def probabilistic_dataframe_synthetic_columns(): + columns = ["Model", "Order", "Scheme", "Partitions","Size", "Steps", "Method", "CRPSAVG", "CRPSSTD", + "TIMEAVG", "TIMESTD"] + return columns
    + + +
    [docs]def cast_dataframe_to_synthetic_probabilistic(df, data_columns): + crps1 = extract_measure(df, 'CRPS', data_columns) + times1 = extract_measure(df, 'TIME', data_columns) + ret = [] + ret.append(np.round(np.nanmean(crps1), 2)) + ret.append(np.round(np.nanstd(crps1), 2)) + ret.append(np.round(np.nanmean(times1), 2)) + ret.append(np.round(np.nanstd(times1), 2)) + return ret
    + + +
    [docs]def unified_scaled_probabilistic(experiments, tam, save=False, file=None, + sort_columns=['CRPSAVG', 'CRPSSTD'], + sort_ascend=[True, True], save_best=False, + ignore=None, replace=None): + fig, axes = plt.subplots(nrows=1, ncols=1, figsize=tam) + + axes.set_title('CRPS') + #axes[1].set_title('CRPS Distribution Ahead') + + models = {} + + for experiment in experiments: + + print(experiment) + + mdl = {} + + dat_syn = pd.read_csv(experiment[0], sep=";", usecols=probabilistic_dataframe_synthetic_columns()) + + bests = find_best(dat_syn, sort_columns, sort_ascend) + + dat_ana = pd.read_csv(experiment[1], sep=";", usecols=probabilistic_dataframe_analytic_columns(experiment[2])) + + crps1 = [] + crps2 = [] + + data_columns = analytical_data_columns(experiment[2]) + + for b in sorted(bests.keys()): + if check_ignore_list(b, ignore): + continue + + if b not in models: + models[b] = {} + models[b]['crps1'] = [] + models[b]['crps2'] = [] + + if b not in mdl: + mdl[b] = {} + mdl[b]['crps1'] = [] + mdl[b]['crps2'] = [] + + best = bests[b] + + print(best) + + tmp = dat_ana[(dat_ana.Model == best["Model"]) & (dat_ana.Order == best["Order"]) + & (dat_ana.Scheme == best["Scheme"]) & (dat_ana.Partitions == best["Partitions"])] + tmpl = extract_measure(tmp, 'CRPS_Interval', data_columns) + mdl[b]['crps1'].extend(tmpl) + crps1.extend(tmpl) + tmpl = extract_measure(tmp, 'CRPS_Distribution', data_columns) + mdl[b]['crps2'].extend(tmpl) + crps2.extend(tmpl) + + models[b]['label'] = check_replace_list(best["Model"] + " " + str(best["Order"]), replace) + + crps1_param = scale_params(crps1) + crps2_param = scale_params(crps2) + + for key in sorted(mdl.keys()): + print(key) + models[key]['crps1'].extend(scale(mdl[key]['crps1'], crps1_param)) + models[key]['crps2'].extend(scale(mdl[key]['crps2'], crps2_param)) + + crps1 = [] + crps2 = [] + labels = [] + for key in sorted(models.keys()): + crps1.append(models[key]['crps1']) + crps2.append(models[key]['crps2']) + labels.append(models[key]['label']) + + axes[0].boxplot(crps1, labels=labels, autorange=True, showmeans=True) + axes[1].boxplot(crps2, labels=labels, autorange=True, showmeans=True) + + plt.tight_layout() + + Util.show_and_save_image(fig, file, save)
    + + + +
    [docs]def plot_dataframe_probabilistic(file_synthetic, file_analytic, experiments, tam, save=False, file=None, + sort_columns=['CRPS1AVG', 'CRPS2AVG', 'CRPS1STD', 'CRPS2STD'], + sort_ascend=[True, True, True, True], save_best=False, + ignore=None, replace=None): + + fig, axes = plt.subplots(nrows=2, ncols=1, figsize=tam) + + axes[0].set_title('CRPS') + axes[1].set_title('CRPS') + + dat_syn = pd.read_csv(file_synthetic, sep=";", usecols=probabilistic_dataframe_synthetic_columns()) + + bests = find_best(dat_syn, sort_columns, sort_ascend) + + dat_ana = pd.read_csv(file_analytic, sep=";", usecols=probabilistic_dataframe_analytic_columns(experiments)) + + data_columns = analytical_data_columns(experiments) + + if save_best: + dat = pd.DataFrame.from_dict(bests, orient='index') + dat.to_csv(Util.uniquefilename(file_synthetic.replace("synthetic","best")), sep=";", index=False) + + crps1 = [] + crps2 = [] + labels = [] + + for b in sorted(bests.keys()): + if check_ignore_list(b, ignore): + continue + best = bests[b] + df = dat_ana[(dat_ana.Model == best["Model"]) & (dat_ana.Order == best["Order"]) + & (dat_ana.Scheme == best["Scheme"]) & (dat_ana.Partitions == best["Partitions"])] + crps1.append( extract_measure(df,'CRPS_Interval',data_columns) ) + crps2.append(extract_measure(df, 'CRPS_Distribution', data_columns)) + labels.append(check_replace_list(best["Model"] + " " + str(best["Order"]), replace)) + + axes[0].boxplot(crps1, labels=labels, autorange=True, showmeans=True) + axes[1].boxplot(crps2, labels=labels, autorange=True, showmeans=True) + + plt.tight_layout() + Util.show_and_save_image(fig, file, save)
    + +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/benchmarks/arima.html b/docs/build/html/_modules/pyFTS/benchmarks/arima.html new file mode 100644 index 0000000..9c8248f --- /dev/null +++ b/docs/build/html/_modules/pyFTS/benchmarks/arima.html @@ -0,0 +1,320 @@ + + + + + + + + + pyFTS.benchmarks.arima — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.benchmarks.arima

    +#!/usr/bin/python
    +# -*- coding: utf8 -*-
    +
    +import numpy as np
    +import pandas as pd
    +from statsmodels.tsa.arima_model import ARIMA as stats_arima
    +import scipy.stats as st
    +from pyFTS.common import SortedCollection, fts
    +from pyFTS.probabilistic import ProbabilityDistribution
    +
    +
    +
    [docs]class ARIMA(fts.FTS): + """ + Façade for statsmodels.tsa.arima_model + """ + def __init__(self, **kwargs): + super(ARIMA, self).__init__(**kwargs) + self.name = "ARIMA" + self.detail = "Auto Regressive Integrated Moving Average" + self.is_high_order = True + self.has_point_forecasting = True + self.has_interval_forecasting = True + self.has_probability_forecasting = True + self.uod_clip = False + self.model = None + self.model_fit = None + self.trained_data = None + self.p = 1 + self.d = 0 + self.q = 0 + self.benchmark_only = True + self.min_order = 1 + self.alpha = kwargs.get("alpha", 0.05) + self.order = kwargs.get("order", (1,0,0)) + self._decompose_order(self.order) + + def _decompose_order(self, order): + if isinstance(order, (tuple, set, list)): + self.p = order[0] + self.d = order[1] + self.q = order[2] + self.order = self.p + self.q + (self.q - 1 if self.q > 0 else 0) + self.max_lag = self.order + self.d = len(self.transformations) + self.shortname = "ARIMA({},{},{})-{}".format(self.p, self.d, self.q, self.alpha) + +
    [docs] def train(self, data, **kwargs): + + if 'order' in kwargs: + order = kwargs.pop('order') + self._decompose_order(order) + + if self.indexer is not None: + data = self.indexer.get_data(data) + + try: + self.model = stats_arima(data, order=(self.p, self.d, self.q)) + self.model_fit = self.model.fit(disp=0) + except Exception as ex: + print(ex) + self.model_fit = None
    + +
    [docs] def ar(self, data): + return data.dot(self.model_fit.arparams)
    + +
    [docs] def ma(self, data): + return data.dot(self.model_fit.maparams)
    + +
    [docs] def forecast(self, ndata, **kwargs): + if self.model_fit is None: + return np.nan + + ndata = np.array(ndata) + + l = len(ndata) + + ret = [] + + ar = np.array([self.ar(ndata[k - self.p: k]) for k in np.arange(self.p, l+1)]) #+1 to forecast one step ahead given all available lags + + if self.q > 0: + residuals = ndata[self.p-1:] - ar + + ma = np.array([self.ma(residuals[k - self.q: k]) for k in np.arange(self.q, len(residuals) + 1)]) + + ret = ar[self.q - 1:] + ma + ret = ret[self.q:] + else: + ret = ar + + #ret = self.apply_inverse_transformations(ret, params=[data[self.order - 1:]]) nforecasts = np.array(forecasts) + + return ret
    + +
    [docs] def forecast_interval(self, data, **kwargs): + + if self.model_fit is None: + return np.nan + + if 'alpha' in kwargs: + alpha = kwargs.get('alpha',0.05) + else: + alpha = self.alpha + + sigma = np.sqrt(self.model_fit.sigma2) + + l = len(data) + + ret = [] + + for k in np.arange(self.order, l+1): + tmp = [] + + sample = [data[i] for i in np.arange(k - self.order, k)] + + mean = self.forecast(sample) + + if isinstance(mean,(list, np.ndarray)): + mean = mean[0] + + tmp.append(mean + st.norm.ppf(alpha) * sigma) + tmp.append(mean + st.norm.ppf(1 - alpha) * sigma) + + ret.append(tmp) + + return ret
    + +
    [docs] def forecast_ahead_interval(self, ndata, steps, **kwargs): + if self.model_fit is None: + return np.nan + + if 'alpha' in kwargs: + alpha = kwargs.get('alpha',0.05) + else: + alpha = self.alpha + + smoothing = kwargs.get("smoothing",0.5) + + sigma = np.sqrt(self.model_fit.sigma2) + + l = len(ndata) + + nmeans = self.forecast_ahead(ndata, steps, **kwargs) + + ret = [] + + for k in np.arange(0, steps): + tmp = [] + + hsigma = (1 + k*smoothing)*sigma + + tmp.append(nmeans[k] + st.norm.ppf(alpha) * hsigma) + tmp.append(nmeans[k] + st.norm.ppf(1 - alpha) * hsigma) + + ret.append(tmp) + + return ret[-steps:]
    + +
    [docs] def forecast_distribution(self, data, **kwargs): + + sigma = np.sqrt(self.model_fit.sigma2) + + l = len(data) + + ret = [] + + for k in np.arange(self.order, l + 1): + sample = [data[i] for i in np.arange(k - self.order, k)] + + mean = self.forecast(sample) + + if isinstance(mean, (list, np.ndarray)): + mean = mean[0] + + dist = ProbabilityDistribution.ProbabilityDistribution(type="histogram", uod=[self.original_min, self.original_max]) + intervals = [] + for alpha in np.arange(0.05, 0.5, 0.05): + + qt1 = mean + st.norm.ppf(alpha) * sigma + qt2 = mean + st.norm.ppf(1 - alpha) * sigma + + intervals.append([qt1, qt2]) + + dist.append_interval(intervals) + + ret.append(dist) + + return ret
    + + +
    [docs] def forecast_ahead_distribution(self, data, steps, **kwargs): + smoothing = kwargs.get("smoothing", 0.5) + + sigma = np.sqrt(self.model_fit.sigma2) + + l = len(data) + + ret = [] + + nmeans = self.forecast_ahead(data, steps, **kwargs) + + for k in np.arange(0, steps): + dist = ProbabilityDistribution.ProbabilityDistribution(type="histogram", + uod=[self.original_min, self.original_max]) + intervals = [] + for alpha in np.arange(0.05, 0.5, 0.05): + tmp = [] + + hsigma = (1 + k * smoothing) * sigma + + tmp.append(nmeans[k] + st.norm.ppf(alpha) * hsigma) + tmp.append(nmeans[k] + st.norm.ppf(1 - alpha) * hsigma) + + intervals.append(tmp) + + dist.append_interval(intervals) + + ret.append(dist) + + return ret[-steps:]
    + +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/benchmarks/benchmarks.html b/docs/build/html/_modules/pyFTS/benchmarks/benchmarks.html new file mode 100644 index 0000000..9d3f36e --- /dev/null +++ b/docs/build/html/_modules/pyFTS/benchmarks/benchmarks.html @@ -0,0 +1,1910 @@ + + + + + + + + + pyFTS.benchmarks.benchmarks — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.benchmarks.benchmarks

    +#!/usr/bin/python
    +# -*- coding: utf8 -*-
    +
    +"""Benchmarks methods for FTS methods"""
    +
    +
    +import datetime
    +import time
    +from copy import deepcopy
    +import traceback
    +
    +import matplotlib as plt
    +
    +import matplotlib.pyplot as plt
    +import numpy as np
    +from mpl_toolkits.mplot3d import Axes3D
    +from itertools import product
    +
    +from pyFTS.common import Transformations
    +from pyFTS.models import song, chen, yu, ismailefendi, sadaei, hofts, pwfts, ifts, cheng, hwang
    +from pyFTS.models.multivariate import mvfts, wmvfts, cmvfts
    +from pyFTS.models.ensemble import ensemble
    +from pyFTS.benchmarks import Measures, naive, arima, ResidualAnalysis, quantreg, knn
    +from pyFTS.benchmarks import Util as bUtil
    +from pyFTS.common import Util as cUtil
    +# from sklearn.cross_validation import KFold
    +from pyFTS.partitioners import Grid
    +
    +colors = ['grey', 'darkgrey', 'rosybrown', 'maroon', 'red','orange', 'gold', 'yellow', 'olive', 'green',
    +          'darkgreen', 'cyan', 'lightblue','blue', 'darkblue', 'purple', 'darkviolet' ]
    +
    +ncol = len(colors)
    +
    +styles = ['-','--','-.',':','.']
    +
    +nsty = len(styles)
    +
    +
    +def __pop(key, default, kwargs):
    +    if key in kwargs:
    +        return kwargs.pop(key)
    +    else:
    +        return default
    +
    +
    +
    [docs]def get_benchmark_point_methods(): + """Return all non FTS methods for point forecasting""" + return [naive.Naive, arima.ARIMA, quantreg.QuantileRegression]
    + + +
    [docs]def get_point_methods(): + """Return all FTS methods for point forecasting""" + return [song.ConventionalFTS, chen.ConventionalFTS, yu.WeightedFTS, ismailefendi.ImprovedWeightedFTS, + cheng.TrendWeightedFTS, sadaei.ExponentialyWeightedFTS, + hofts.HighOrderFTS, hofts.WeightedHighOrderFTS, hwang.HighOrderFTS, + pwfts.ProbabilisticWeightedFTS]
    + + +
    [docs]def get_point_multivariate_methods(): + """Return all multivariate FTS methods por point forecasting""" + return [mvfts.MVFTS, wmvfts.WeightedMVFTS, cmvfts.ClusteredMVFTS]
    + + +
    [docs]def get_benchmark_interval_methods(): + """Return all non FTS methods for point_to_interval forecasting""" + return [ arima.ARIMA, quantreg.QuantileRegression]
    + + +
    [docs]def get_interval_methods(): + """Return all FTS methods for point_to_interval forecasting""" + return [ifts.IntervalFTS, ifts.WeightedIntervalFTS, pwfts.ProbabilisticWeightedFTS]
    + + +
    [docs]def get_probabilistic_methods(): + """Return all FTS methods for probabilistic forecasting""" + return [ensemble.AllMethodEnsembleFTS, pwfts.ProbabilisticWeightedFTS]
    + + +
    [docs]def get_benchmark_probabilistic_methods(): + """Return all FTS methods for probabilistic forecasting""" + return [arima.ARIMA, quantreg.QuantileRegression, knn.KNearestNeighbors]
    + + +
    [docs]def multivariate_sliding_window_benchmarks2(data, windowsize, train=0.8, **kwargs): + from pyFTS.models.multivariate import common, variable, mvfts + + tag = __pop('tag', None, kwargs) + dataset = __pop('dataset', None, kwargs) + + distributed = __pop('distributed', False, kwargs) + + variables = __pop('variables', {}, kwargs) + + target_variable = __pop('target_variable', '', kwargs) + + type = kwargs.get("type", 'point') + + steps_ahead = __pop('steps_ahead', [1], kwargs) + + steps_ahead = [k for k in steps_ahead] + + fts_methods = __pop('methods', [], kwargs) + + if fts_methods is not None: + methods_parameters = __pop('methods_parameters', None, kwargs) + + if type == 'point': + experiment_method = mv_run_point2 + synthesis_method = process_point_jobs2 + elif type == 'interval': + experiment_method = mv_run_interval2 + synthesis_method = process_interval_jobs2 + elif type == 'distribution': + experiment_method = mv_run_probabilistic2 + synthesis_method = process_probabilistic_jobs2 + else: + raise ValueError("Type parameter has a unkown value!") + + if distributed: + import pyFTS.distributed.dispy as dispy + + nodes = kwargs.get("nodes", ['127.0.0.1']) + cluster, http_server = dispy.start_dispy_cluster(experiment_method, nodes) + + inc = __pop("inc", 0.1, kwargs) + + file = kwargs.get('file', "benchmarks.db") + + conn = bUtil.open_benchmark_db(file) + + jobs = [] + for ct, train, test in cUtil.sliding_window(data, windowsize, train, inc=inc, **kwargs): + for id, fts_method in enumerate(fts_methods): + + kwargs['steps_ahead'] = max(steps_ahead) + parameters = {} + if methods_parameters is not None: + parameters = methods_parameters[id] + + vars = [] + tvar = None + + for key, value in variables.items(): + var = variable.Variable(key, data=train, **value) + vars.append(var) + if key == target_variable: + tvar = var + + + model = fts_method(explanatory_variables=vars, target_variable=tvar, + **parameters) + + if not distributed: + try: + job = experiment_method(model, train, test, ct, **kwargs) + synthesis_method(dataset, tag, job, conn) + except Exception as ex: + print('EXCEPTION! ', fts_method) + traceback.print_exc() + else: + job = cluster.submit(model, train, test, ct, **kwargs) + job.id = id + jobs.append(job) + + if distributed: + for job in jobs: + job() + if job.status == dispy.dispy.DispyJob.Finished and job is not None: + tmp = job.result + synthesis_method(dataset, tag, tmp, conn) + else: + print("status", job.status) + print("result", job.result) + print("stdout", job.stdout) + print("stderr", job.exception) + + cluster.wait() # wait for all jobs to finish + dispy.stop_dispy_cluster(cluster, http_server) + + conn.close()
    + + +
    [docs]def sliding_window_benchmarks2(data, windowsize, train=0.8, **kwargs): + tag = __pop('tag', None, kwargs) + dataset = __pop('dataset', None, kwargs) + + distributed = __pop('distributed', False, kwargs) + + transformations = kwargs.get('transformations', [None]) + + type = kwargs.get("type", 'point') + + orders = __pop("orders", [1, 2, 3], kwargs) + + partitioners_methods = __pop("partitioners_methods", [Grid.GridPartitioner], kwargs) + partitions = __pop("partitions", [10], kwargs) + + partitions = [k for k in partitions] + + steps_ahead = __pop('steps_ahead', [1], kwargs) + + steps_ahead = [k for k in steps_ahead] + + fts_methods = __pop('methods', [], kwargs) + + if fts_methods is not None: + methods_parameters = __pop('methods_parameters', None, kwargs) + + ix_methods = [k for k in np.arange(len(fts_methods))] + + benchmark_models = __pop("benchmark_models", False, kwargs) + benchmark_methods = __pop("benchmark_methods", None, kwargs) + benchmark_methods_parameters = __pop("benchmark_methods_parameters", None, kwargs) + + if type == 'point': + experiment_method = run_point2 + synthesis_method = process_point_jobs2 + elif type == 'interval': + experiment_method = run_interval2 + synthesis_method = process_interval_jobs2 + elif type == 'distribution': + experiment_method = run_probabilistic2 + synthesis_method = process_probabilistic_jobs2 + else: + raise ValueError("Type parameter has a unkown value!") + + if distributed: + import pyFTS.distributed.dispy as dispy + + nodes = kwargs.get("nodes", ['127.0.0.1']) + cluster, http_server = dispy.start_dispy_cluster(experiment_method, nodes) + + inc = __pop("inc", 0.1, kwargs) + + file = kwargs.get('file', "benchmarks.db") + + conn = bUtil.open_benchmark_db(file) + + jobs = [] + for ct, train, test in cUtil.sliding_window(data, windowsize, train, inc=inc, **kwargs): + + if benchmark_models: + for bm, method in enumerate(benchmark_methods): + kwargs['steps_ahead'] = max(steps_ahead) + kwargs['parameters'] = benchmark_methods_parameters[bm] + + if not distributed: + try: + job = experiment_method(method, None, None, None, None, train, test, ct, **kwargs) + synthesis_method(dataset, tag, job, conn) + except Exception as ex: + print('EXCEPTION! ', method, benchmark_methods_parameters[bm]) + traceback.print_exc() + else: + job = cluster.submit(method, None, None, None, None, train, test, ct, **kwargs) + jobs.append(job) + + if fts_methods is not None: + params = [ix_methods, orders, partitioners_methods, partitions, transformations] + for id, instance in enumerate(product(*params)): + fts_method = fts_methods[instance[0]] + kwargs['steps_ahead'] = max(steps_ahead) + if methods_parameters is not None: + kwargs['parameters'] = methods_parameters[instance[0]] + if not distributed: + try: + job = experiment_method(fts_method, instance[1], instance[2], instance[3], instance[4], train, test, ct, **kwargs) + synthesis_method(dataset, tag, job, conn) + except Exception as ex: + print('EXCEPTION! ', instance) + traceback.print_exc() + else: + job = cluster.submit(fts_method, instance[1], instance[2], instance[3], instance[4], train, test, ct, **kwargs) + job.id = id + jobs.append(job) + + if distributed: + for job in jobs: + job() + if job.status == dispy.dispy.DispyJob.Finished and job is not None: + tmp = job.result + synthesis_method(dataset, tag, tmp, conn) + else: + print("status", job.status) + print("result", job.result) + print("stdout", job.stdout) + print("stderr", job.exception) + + cluster.wait() # wait for all jobs to finish + dispy.stop_dispy_cluster(cluster, http_server) + + conn.close()
    + + +
    [docs]def sliding_window_benchmarks(data, windowsize, train=0.8, **kwargs): + """ + Sliding window benchmarks for FTS forecasters. + + For each data window, a train and test datasets will be splitted. For each train split, number of + partitions and partitioning method will be created a partitioner model. And for each partitioner, order, + steps ahead and FTS method a foreasting model will be trained. + + Then all trained models are benchmarked on the test data and the metrics are stored on a sqlite3 database + (identified by the 'file' parameter) for posterior analysis. + + All these process can be distributed on a dispy cluster, setting the atributed 'distributed' to true and + informing the list of dispy nodes on 'nodes' parameter. + + The number of experiments is determined by 'windowsize' and 'inc' parameters. + + :param data: test data + :param windowsize: size of sliding window + :param train: percentual of sliding window data used to train the models + :param kwargs: dict, optional arguments + + :keyword benchmark_methods: a list with Non FTS models to benchmark. The default is None. + :keyword benchmark_methods_parameters: a list with Non FTS models parameters. The default is None. + :keyword benchmark_models: A boolean value indicating if external FTS methods will be used on benchmark. The default is False. + :keyword build_methods: A boolean value indicating if the default FTS methods will be used on benchmark. The default is True. + :keyword dataset: the dataset name to identify the current set of benchmarks results on database. + :keyword distributed: A boolean value indicating if the forecasting procedure will be distributed in a dispy cluster. . The default is False + :keyword file: file path to save the results. The default is benchmarks.db. + :keyword inc: a float on interval [0,1] indicating the percentage of the windowsize to move the window + :keyword methods: a list with FTS class names. The default depends on the forecasting type and contains the list of all FTS methods. + :keyword models: a list with prebuilt FTS objects. The default is None. + :keyword nodes: a list with the dispy cluster nodes addresses. The default is [127.0.0.1]. + :keyword orders: a list with orders of the models (for high order models). The default is [1,2,3]. + :keyword partitions: a list with the numbers of partitions on the Universe of Discourse. The default is [10]. + :keyword partitioners_models: a list with prebuilt Universe of Discourse partitioners objects. The default is None. + :keyword partitioners_methods: a list with Universe of Discourse partitioners class names. The default is [partitioners.Grid.GridPartitioner]. + :keyword progress: If true a progress bar will be displayed during the benchmarks. The default is False. + :keyword start: in the multi step forecasting, the index of the data where to start forecasting. The default is 0. + :keyword steps_ahead: a list with the forecasting horizons, i. e., the number of steps ahead to forecast. The default is 1. + :keyword tag: a name to identify the current set of benchmarks results on database. + :keyword type: the forecasting type, one of these values: point(default), interval or distribution. The default is point. + :keyword transformations: a list with data transformations do apply . The default is [None]. + """ + + tag = __pop('tag', None, kwargs) + dataset = __pop('dataset', None, kwargs) + + distributed = __pop('distributed', False, kwargs) + + transformations = kwargs.get('transformations', [None]) + progress = kwargs.get('progress', None) + type = kwargs.get("type", 'point') + + orders = __pop("orders", [1,2,3], kwargs) + + partitioners_models = __pop("partitioners_models", None, kwargs) + partitioners_methods = __pop("partitioners_methods", [Grid.GridPartitioner], kwargs) + partitions = __pop("partitions", [10], kwargs) + + steps_ahead = __pop('steps_ahead', [1], kwargs) + + methods = __pop('methods', None, kwargs) + + models = __pop('models', None, kwargs) + + pool = [] if models is None else models + + if methods is None: + if type == 'point': + methods = get_point_methods() + elif type == 'interval': + methods = get_interval_methods() + elif type == 'distribution': + methods = get_probabilistic_methods() + + build_methods = __pop("build_methods", True, kwargs) + + if build_methods: + for method in methods: + mfts = method() + + if mfts.is_high_order: + for order in orders: + if order >= mfts.min_order: + mfts = method() + mfts.order = order + pool.append(mfts) + else: + mfts.order = 1 + pool.append(mfts) + + benchmark_models = __pop("benchmark_models", False, kwargs) + + if benchmark_models != False: + + benchmark_methods = __pop("benchmark_methods", None, kwargs) + benchmark_methods_parameters = __pop("benchmark_methods_parameters", None, kwargs) + + benchmark_pool = [] if ( benchmark_models is None or not isinstance(benchmark_models, list)) \ + else benchmark_models + + if benchmark_models is None and benchmark_methods is None: + if type == 'point'or type == 'partition': + benchmark_methods = get_benchmark_point_methods() + elif type == 'interval': + benchmark_methods = get_benchmark_interval_methods() + elif type == 'distribution': + benchmark_methods = get_benchmark_probabilistic_methods() + + if benchmark_methods is not None: + for transformation in transformations: + for count, model in enumerate(benchmark_methods, start=0): + par = benchmark_methods_parameters[count] + mfts = model(**par) + mfts.append_transformation(transformation) + benchmark_pool.append(mfts) + + if type == 'point': + experiment_method = run_point + synthesis_method = process_point_jobs + elif type == 'interval': + experiment_method = run_interval + synthesis_method = process_interval_jobs + elif type == 'distribution': + experiment_method = run_probabilistic + synthesis_method = process_probabilistic_jobs + else: + raise ValueError("Type parameter has a unkown value!") + + if distributed: + import pyFTS.distributed.dispy as dispy + + nodes = kwargs.get("nodes", ['127.0.0.1']) + cluster, http_server = dispy.start_dispy_cluster(experiment_method, nodes) + + jobs = [] + + inc = __pop("inc", 0.1, kwargs) + + if progress: + from tqdm import tqdm + _tdata = len(data) / (windowsize * inc) + _tasks = (len(partitioners_models) * len(orders) * len(partitions) * len(transformations) * len(steps_ahead)) + _tbcmk = len(benchmark_pool)*len(steps_ahead) + progressbar = tqdm(total=_tdata*_tasks + _tdata*_tbcmk, desc="Benchmarks:") + + file = kwargs.get('file', "benchmarks.db") + + conn = bUtil.open_benchmark_db(file) + + for ct, train, test in cUtil.sliding_window(data, windowsize, train, inc=inc, **kwargs): + if benchmark_models != False: + for model in benchmark_pool: + for step in steps_ahead: + + kwargs['steps_ahead'] = step + + if not distributed: + if progress: + progressbar.update(1) + try: + job = experiment_method(deepcopy(model), None, train, test, **kwargs) + synthesis_method(dataset, tag, job, conn) + except Exception as ex: + print('EXCEPTION! ', model.shortname, model.order) + traceback.print_exc() + else: + job = cluster.submit(deepcopy(model), None, train, test, **kwargs) + jobs.append(job) + + partitioners_pool = [] + + if partitioners_models is None: + + for transformation in transformations: + + for partition in partitions: + + for partitioner in partitioners_methods: + + data_train_fs = partitioner(data=train, npart=partition, transformation=transformation) + + partitioners_pool.append(data_train_fs) + else: + partitioners_pool = partitioners_models + + for step in steps_ahead: + + for partitioner in partitioners_pool: + + for _id, model in enumerate(pool,start=0): + + kwargs['steps_ahead'] = step + + if not distributed: + if progress: + progressbar.update(1) + try: + job = experiment_method(deepcopy(model), deepcopy(partitioner), train, test, **kwargs) + synthesis_method(dataset, tag, job, conn) + except Exception as ex: + print('EXCEPTION! ',model.shortname, model.order, partitioner.name, + partitioner.partitions, str(partitioner.transformation)) + traceback.print_exc() + else: + job = cluster.submit(deepcopy(model), deepcopy(partitioner), train, test, **kwargs) + job.id = id # associate an ID to identify jobs (if needed later) + jobs.append(job) + + if progress: + progressbar.close() + + if distributed: + + for job in jobs: + if progress: + progressbar.update(1) + job() + if job.status == dispy.dispy.DispyJob.Finished and job is not None: + tmp = job.result + synthesis_method(dataset, tag, tmp, conn) + else: + print("status",job.status) + print("result",job.result) + print("stdout",job.stdout) + print("stderr",job.exception) + + cluster.wait() # wait for all jobs to finish + + dispy.stop_dispy_cluster(cluster, http_server) + + conn.close()
    + + +
    [docs]def run_point(mfts, partitioner, train_data, test_data, window_key=None, **kwargs): + """ + Run the point forecasting benchmarks + + :param mfts: FTS model + :param partitioner: Universe of Discourse partitioner + :param train_data: data used to train the model + :param test_data: ata used to test the model + :param window_key: id of the sliding window + :param transformation: data transformation + :param indexer: seasonal indexer + :return: a dictionary with the benchmark results + """ + import time + from pyFTS.models import yu, chen, hofts, pwfts,ismailefendi,sadaei, song, cheng, hwang + from pyFTS.partitioners import Grid, Entropy, FCM + from pyFTS.benchmarks import Measures, naive, arima, quantreg + from pyFTS.common import Transformations + + tmp = [song.ConventionalFTS, chen.ConventionalFTS, yu.WeightedFTS, ismailefendi.ImprovedWeightedFTS, + cheng.TrendWeightedFTS, sadaei.ExponentialyWeightedFTS, hofts.HighOrderFTS, hwang.HighOrderFTS, + pwfts.ProbabilisticWeightedFTS] + + tmp2 = [Grid.GridPartitioner, Entropy.EntropyPartitioner, FCM.FCMPartitioner] + + tmp4 = [naive.Naive, arima.ARIMA, quantreg.QuantileRegression] + + tmp3 = [Measures.get_point_statistics] + + tmp5 = [Transformations.Differential] + + indexer = kwargs.get('indexer', None) + + steps_ahead = kwargs.get('steps_ahead', 1) + method = kwargs.get('method', None) + + if mfts.benchmark_only: + _key = mfts.shortname + str(mfts.order if mfts.order is not None else "") + else: + pttr = str(partitioner.__module__).split('.')[-1] + _key = mfts.shortname + " n = " + str(mfts.order) + " " + pttr + " q = " + str(partitioner.partitions) + mfts.partitioner = partitioner + mfts.append_transformation(partitioner.transformation) + + _key += str(steps_ahead) + _key += str(method) if method is not None else "" + + _start = time.time() + mfts.fit(train_data, **kwargs) + _end = time.time() + times = _end - _start + + + _start = time.time() + _rmse, _smape, _u = Measures.get_point_statistics(test_data, mfts, **kwargs) + _end = time.time() + times += _end - _start + + ret = {'key': _key, 'obj': mfts, 'rmse': _rmse, 'smape': _smape, 'u': _u, 'time': times, 'window': window_key, + 'steps': steps_ahead, 'method': method} + + return ret
    + + +
    [docs]def run_interval(mfts, partitioner, train_data, test_data, window_key=None, **kwargs): + """ + Run the interval forecasting benchmarks + + :param mfts: FTS model + :param partitioner: Universe of Discourse partitioner + :param train_data: data used to train the model + :param test_data: ata used to test the model + :param window_key: id of the sliding window + :param transformation: data transformation + :param indexer: seasonal indexer + :return: a dictionary with the benchmark results + """ + import time + from pyFTS.models import hofts,ifts,pwfts + from pyFTS.partitioners import Grid, Entropy, FCM + from pyFTS.benchmarks import Measures, arima, quantreg + + tmp = [hofts.HighOrderFTS, ifts.IntervalFTS, pwfts.ProbabilisticWeightedFTS] + + tmp2 = [Grid.GridPartitioner, Entropy.EntropyPartitioner, FCM.FCMPartitioner] + + tmp4 = [arima.ARIMA, quantreg.QuantileRegression] + + tmp3 = [Measures.get_interval_statistics] + + steps_ahead = kwargs.get('steps_ahead', 1) + method = kwargs.get('method', None) + + if mfts.benchmark_only: + _key = mfts.shortname + str(mfts.order if mfts.order is not None else "") + str(mfts.alpha) + else: + pttr = str(partitioner.__module__).split('.')[-1] + _key = mfts.shortname + " n = " + str(mfts.order) + " " + pttr + " q = " + str(partitioner.partitions) + mfts.partitioner = partitioner + mfts.append_transformation(partitioner.transformation) + + _key += str(steps_ahead) + _key += str(method) if method is not None else "" + + _start = time.time() + mfts.fit(train_data, **kwargs) + _end = time.time() + times = _end - _start + + _start = time.time() + #_sharp, _res, _cov, _q05, _q25, _q75, _q95, _w05, _w25 + metrics = Measures.get_interval_statistics(test_data, mfts, **kwargs) + _end = time.time() + times += _end - _start + + ret = {'key': _key, 'obj': mfts, 'sharpness': metrics[0], 'resolution': metrics[1], 'coverage': metrics[2], + 'time': times,'Q05': metrics[3], 'Q25': metrics[4], 'Q75': metrics[5], 'Q95': metrics[6], + 'winkler05': metrics[7], 'winkler25': metrics[8], + 'window': window_key,'steps': steps_ahead, 'method': method} + + return ret
    + + +
    [docs]def run_probabilistic(mfts, partitioner, train_data, test_data, window_key=None, **kwargs): + """ + Run the probabilistic forecasting benchmarks + + :param mfts: FTS model + :param partitioner: Universe of Discourse partitioner + :param train_data: data used to train the model + :param test_data: ata used to test the model + :param steps: + :param resolution: + :param window_key: id of the sliding window + :param transformation: data transformation + :param indexer: seasonal indexer + :return: a dictionary with the benchmark results + """ + import time + import numpy as np + from pyFTS.models import hofts, ifts, pwfts + from pyFTS.models.ensemble import ensemble + from pyFTS.partitioners import Grid, Entropy, FCM + from pyFTS.benchmarks import Measures, arima, quantreg, knn + from pyFTS.models.seasonal import SeasonalIndexer + + tmp = [hofts.HighOrderFTS, ifts.IntervalFTS, pwfts.ProbabilisticWeightedFTS, arima.ARIMA, + ensemble.AllMethodEnsembleFTS, knn.KNearestNeighbors] + + tmp2 = [Grid.GridPartitioner, Entropy.EntropyPartitioner, FCM.FCMPartitioner] + + tmp3 = [Measures.get_distribution_statistics, SeasonalIndexer.SeasonalIndexer, SeasonalIndexer.LinearSeasonalIndexer] + + indexer = kwargs.get('indexer', None) + + steps_ahead = kwargs.get('steps_ahead', 1) + method = kwargs.get('method', None) + + if mfts.benchmark_only: + _key = mfts.shortname + str(mfts.order if mfts.order is not None else "") + str(mfts.alpha) + else: + pttr = str(partitioner.__module__).split('.')[-1] + _key = mfts.shortname + " n = " + str(mfts.order) + " " + pttr + " q = " + str(partitioner.partitions) + mfts.partitioner = partitioner + mfts.append_transformation(partitioner.transformation) + + _key += str(steps_ahead) + _key += str(method) if method is not None else "" + + if mfts.has_seasonality: + mfts.indexer = indexer + + _start = time.time() + mfts.fit(train_data, **kwargs) + _end = time.time() + times = _end - _start + + _crps1, _t1, _brier = Measures.get_distribution_statistics(test_data, mfts, **kwargs) + _t1 += times + + ret = {'key': _key, 'obj': mfts, 'crps': _crps1, 'time': _t1, 'brier': _brier, 'window': window_key, + 'steps': steps_ahead, 'method': method} + + return ret
    + + +def __build_model(fts_method, order, parameters, partitioner_method, partitions, train_data, transformation): + mfts = fts_method(**parameters) + if mfts.benchmark_only or mfts.is_wrapper: + pttr = '' + else: + fs = partitioner_method(npart=partitions, data=train_data, transformation=transformation) + pttr = str(fs.__module__).split('.')[-1] + if order > 1: + mfts = fts_method(partitioner=fs, order=order, **parameters) + else: + mfts.partitioner = fs + + if transformation is not None: + mfts.append_transformation(transformation) + return mfts, pttr + + +
    [docs]def mv_run_point2(mfts, train_data, test_data, window_key=None, **kwargs): + import time + from pyFTS.models import hofts, ifts, pwfts + from pyFTS.models.multivariate import mvfts, wmvfts, granular + from pyFTS.partitioners import Grid, Entropy, FCM + from pyFTS.benchmarks import Measures, arima, quantreg, BSTS, benchmarks + + tmp = [hofts.HighOrderFTS, ifts.IntervalFTS, ifts.WeightedIntervalFTS, pwfts.ProbabilisticWeightedFTS] + + tmp2 = [Grid.GridPartitioner, mvfts.MVFTS, wmvfts.WeightedMVFTS, granular.GranularWMVFTS] + + tmp4 = [arima.ARIMA, quantreg.QuantileRegression, BSTS.ARIMA] + + tmp3 = [Measures.get_interval_statistics] + + steps_ahead = kwargs.get('steps_ahead', 1) + method = kwargs.get('method', None) + + _start = time.time() + mfts.fit(train_data, **kwargs) + _end = time.time() + times = _end - _start + + if steps_ahead == 1: + + _start = time.time() + _rmse, _smape, _u = Measures.get_point_statistics(test_data, mfts, **kwargs) + _end = time.time() + times += _end - _start + + ret = {'model': mfts.shortname, 'partitioner': None, 'order': mfts.order, 'partitions': None, + 'transformation': None, + 'size': len(mfts), 'time': times, + 'rmse': _rmse, 'smape': _smape, 'u': _u, 'window': window_key, + 'steps': steps_ahead, 'method': method} + else: + _start = time.time() + forecasts = mfts.predict(test_data, **kwargs) + _end = time.time() + times += _end - _start + + tmp_test = test_data[mfts.target_variable.data_label].values[mfts.order:mfts.order + steps_ahead] + + eval = Measures.get_point_ahead_statistics(tmp_test, forecasts) + + for key in eval.keys(): + eval[key]["time"] = times + eval[key]["method"] = method + + ret = {'model': mfts.shortname, 'partitioner': None, 'order': mfts.order, 'partitions': None, + 'transformation': None, + 'size': len(mfts), 'time': times, + 'window': window_key, 'steps': steps_ahead, 'method': method, + 'ahead_results': eval + } + + return ret
    + + +
    [docs]def run_point2(fts_method, order, partitioner_method, partitions, transformation, train_data, test_data, window_key=None, **kwargs): + + import time + from pyFTS.models import yu, chen, hofts, pwfts,ismailefendi,sadaei, song, cheng, hwang + from pyFTS.partitioners import Grid, Entropy, FCM + from pyFTS.benchmarks import Measures, naive, arima, quantreg, benchmarks + from pyFTS.common import Transformations + + tmp = [song.ConventionalFTS, chen.ConventionalFTS, yu.WeightedFTS, ismailefendi.ImprovedWeightedFTS, + cheng.TrendWeightedFTS, sadaei.ExponentialyWeightedFTS, hofts.HighOrderFTS, hwang.HighOrderFTS, + pwfts.ProbabilisticWeightedFTS] + + tmp2 = [Grid.GridPartitioner, Entropy.EntropyPartitioner, FCM.FCMPartitioner] + + tmp4 = [naive.Naive, arima.ARIMA, quantreg.QuantileRegression] + + tmp3 = [Measures.get_point_statistics] + + tmp5 = [Transformations.Differential] + + indexer = kwargs.get('indexer', None) + + steps_ahead = kwargs.get('steps_ahead', 1) + method = kwargs.get('method', None) + parameters = kwargs.get('parameters', {}) + + mfts, pttr = benchmarks.__build_model(fts_method, order, parameters, partitioner_method, partitions, train_data, + transformation) + + _start = time.time() + mfts.fit(train_data, **kwargs) + _end = time.time() + times = _end - _start + + if steps_ahead == 1: + + _start = time.time() + _rmse, _smape, _u = Measures.get_point_statistics(test_data, mfts, **kwargs) + _end = time.time() + times += _end - _start + + ret = {'model': mfts.shortname, 'partitioner': pttr, 'order': order, 'partitions': partitions, + 'transformation': '' if transformation is None else transformation.name, + 'size': len(mfts), 'time': times, + 'rmse': _rmse, 'smape': _smape, 'u': _u, 'window': window_key, + 'steps': steps_ahead, 'method': method} + else: + _start = time.time() + forecasts = mfts.predict(test_data, **kwargs) + _end = time.time() + times += _end - _start + + eval = Measures.get_point_ahead_statistics(test_data[mfts.order:mfts.order+steps_ahead], forecasts) + + for key in eval.keys(): + eval[key]["time"] = times + eval[key]["method"] = method + + ret = {'model': mfts.shortname, 'partitioner': pttr, 'order': order, 'partitions': partitions, + 'transformation': '' if transformation is None else transformation.name, + 'size': len(mfts), 'time': times, + 'window': window_key, 'steps': steps_ahead, 'method': method, + 'ahead_results': eval + } + + return ret
    + + +
    [docs]def mv_run_interval2(mfts,train_data, test_data, window_key=None, **kwargs): + import time + from pyFTS.models import hofts,ifts,pwfts + from pyFTS.models.multivariate import mvfts, wmvfts, granular + from pyFTS.partitioners import Grid, Entropy, FCM + from pyFTS.benchmarks import Measures, arima, quantreg, BSTS, benchmarks + + tmp = [hofts.HighOrderFTS, ifts.IntervalFTS, ifts.WeightedIntervalFTS, pwfts.ProbabilisticWeightedFTS] + + tmp2 = [Grid.GridPartitioner, mvfts.MVFTS, wmvfts.WeightedMVFTS, granular.GranularWMVFTS ] + + tmp4 = [arima.ARIMA, quantreg.QuantileRegression, BSTS.ARIMA] + + tmp3 = [Measures.get_interval_statistics] + + steps_ahead = kwargs.get('steps_ahead', 1) + method = kwargs.get('method', None) + parameters = kwargs.get('parameters',{}) + + _start = time.time() + mfts.fit(train_data, **kwargs) + _end = time.time() + times = _end - _start + + if steps_ahead == 1: + + _start = time.time() + metrics = Measures.get_interval_statistics(test_data, mfts, **kwargs) + _end = time.time() + times += _end - _start + + ret = {'model': mfts.shortname, 'partitioner': None, 'order': mfts.order, 'partitions': None, + 'transformation': None, + 'size': len(mfts), 'time': times, + 'sharpness': metrics[0], 'resolution': metrics[1], 'coverage': metrics[2], + 'time': times,'pinball05': metrics[3], 'pinball25': metrics[4], 'pinball75': metrics[5], 'pinball95': metrics[6], + 'winkler05': metrics[7], 'winkler25': metrics[8], + 'window': window_key,'steps': steps_ahead, 'method': method} + else: + _start = time.time() + intervals = mfts.predict(test_data, **kwargs) + _end = time.time() + times += _end - _start + + tmp_test = test_data[mfts.target_variable.data_label].values[mfts.order:mfts.order + steps_ahead] + + eval = Measures.get_interval_ahead_statistics(tmp_test, intervals) + + for key in eval.keys(): + eval[key]["time"] = times + eval[key]["method"] = method + + ret = {'model': mfts.shortname, 'partitioner': None, 'order': mfts.order, 'partitions': None, + 'transformation': None, + 'size': len(mfts), 'time': times, + 'window': window_key, 'steps': steps_ahead, 'method': method, + 'ahead_results': eval + } + + + return ret
    + + +
    [docs]def run_interval2(fts_method, order, partitioner_method, partitions, transformation, train_data, test_data, window_key=None, **kwargs): + import time + from pyFTS.models import hofts,ifts,pwfts + from pyFTS.partitioners import Grid, Entropy, FCM + from pyFTS.benchmarks import Measures, arima, quantreg, BSTS, benchmarks + + tmp = [hofts.HighOrderFTS, ifts.IntervalFTS, ifts.WeightedIntervalFTS, pwfts.ProbabilisticWeightedFTS] + + tmp2 = [Grid.GridPartitioner, Entropy.EntropyPartitioner, FCM.FCMPartitioner] + + tmp4 = [arima.ARIMA, quantreg.QuantileRegression, BSTS.ARIMA] + + tmp3 = [Measures.get_interval_statistics] + + steps_ahead = kwargs.get('steps_ahead', 1) + method = kwargs.get('method', None) + parameters = kwargs.get('parameters',{}) + + mfts, pttr = benchmarks.__build_model(fts_method, order, parameters, partitioner_method, partitions, train_data, + transformation) + _start = time.time() + mfts.fit(train_data, **kwargs) + _end = time.time() + times = _end - _start + + if steps_ahead == 1: + + _start = time.time() + metrics = Measures.get_interval_statistics(test_data, mfts, **kwargs) + _end = time.time() + times += _end - _start + + ret = {'model': mfts.shortname, 'partitioner': pttr, 'order': order, 'partitions': partitions, + 'transformation': '' if transformation is None else transformation.name, + 'size': len(mfts), 'time': times, + 'sharpness': metrics[0], 'resolution': metrics[1], 'coverage': metrics[2], + 'time': times,'pinball05': metrics[3], 'pinball25': metrics[4], 'pinball75': metrics[5], 'pinball95': metrics[6], + 'winkler05': metrics[7], 'winkler25': metrics[8], + 'window': window_key,'steps': steps_ahead, 'method': method} + else: + _start = time.time() + intervals = mfts.predict(test_data, **kwargs) + _end = time.time() + times += _end - _start + + eval = Measures.get_interval_ahead_statistics(test_data[mfts.order:mfts.order+steps_ahead], intervals) + + for key in eval.keys(): + eval[key]["time"] = times + eval[key]["method"] = method + + ret = {'model': mfts.shortname, 'partitioner': pttr, 'order': order, 'partitions': partitions, + 'transformation': '' if transformation is None else transformation.name, + 'size': len(mfts), 'time': times, + 'window': window_key, 'steps': steps_ahead, 'method': method, + 'ahead_results': eval + } + + + return ret
    + + +
    [docs]def mv_run_probabilistic2(mfts, train_data, test_data, window_key=None, **kwargs): + import time + from pyFTS.models import hofts, ifts, pwfts + from pyFTS.models.multivariate import mvfts, wmvfts, granular + from pyFTS.partitioners import Grid, Entropy, FCM + from pyFTS.benchmarks import Measures, arima, quantreg, BSTS, benchmarks + + tmp = [hofts.HighOrderFTS, ifts.IntervalFTS, ifts.WeightedIntervalFTS, pwfts.ProbabilisticWeightedFTS] + + tmp2 = [Grid.GridPartitioner, mvfts.MVFTS, wmvfts.WeightedMVFTS, granular.GranularWMVFTS] + + tmp4 = [arima.ARIMA, quantreg.QuantileRegression, BSTS.ARIMA] + + tmp3 = [Measures.get_interval_statistics] + + steps_ahead = kwargs.get('steps_ahead', 1) + method = kwargs.get('method', None) + parameters = kwargs.get('parameters', {}) + + _start = time.time() + mfts.fit(train_data, **kwargs) + _end = time.time() + times = _end - _start + + if steps_ahead == 1: + + _crps1, _t1, _brier = Measures.get_distribution_statistics(test_data, mfts, **kwargs) + times += _t1 + + ret = {'model': mfts.shortname, 'partitioner': None, 'order': mfts.order, 'partitions': None, + 'transformation': None, + 'size': len(mfts), 'time': times, + 'crps': _crps1, 'brier': _brier, 'window': window_key, + 'steps': steps_ahead, 'method': method} + else: + _start = time.time() + distributions = mfts.predict(test_data, **kwargs) + _end = time.time() + times += _end - _start + + tmp_test = test_data[mfts.target_variable.data_label].values[mfts.order:mfts.order + steps_ahead] + + eval = Measures.get_distribution_ahead_statistics(tmp_test, distributions) + + for key in eval.keys(): + eval[key]["time"] = times + eval[key]["method"] = method + + ret = {'model': mfts.shortname, 'partitioner': None, 'order': mfts.order, 'partitions': None, + 'transformation': None, + 'size': len(mfts), 'time': times, + 'window': window_key, 'steps': steps_ahead, 'method': method, + 'ahead_results': eval + } + + return ret
    + + + +
    [docs]def run_probabilistic2(fts_method, order, partitioner_method, partitions, transformation, train_data, test_data, window_key=None, **kwargs): + import time + import numpy as np + from pyFTS.models import hofts, ifts, pwfts + from pyFTS.models.ensemble import ensemble + from pyFTS.partitioners import Grid, Entropy, FCM + from pyFTS.benchmarks import Measures, arima, quantreg, knn, benchmarks + from pyFTS.models.seasonal import SeasonalIndexer + + tmp = [hofts.HighOrderFTS, ifts.IntervalFTS, pwfts.ProbabilisticWeightedFTS, arima.ARIMA, + ensemble.AllMethodEnsembleFTS, knn.KNearestNeighbors] + + tmp2 = [Grid.GridPartitioner, Entropy.EntropyPartitioner, FCM.FCMPartitioner] + + tmp3 = [Measures.get_distribution_statistics, SeasonalIndexer.SeasonalIndexer, SeasonalIndexer.LinearSeasonalIndexer] + + indexer = kwargs.get('indexer', None) + + steps_ahead = kwargs.get('steps_ahead', 1) + method = kwargs.get('method', None) + parameters = kwargs.get('parameters', {}) + + mfts, pttr = benchmarks.__build_model(fts_method, order, parameters, partitioner_method, partitions, train_data, + transformation) + if mfts.has_seasonality: + mfts.indexer = indexer + + _start = time.time() + mfts.fit(train_data, **kwargs) + _end = time.time() + times = _end - _start + + if steps_ahead == 1: + + _crps1, _t1, _brier = Measures.get_distribution_statistics(test_data, mfts, **kwargs) + times += _t1 + + ret = {'model': mfts.shortname, 'partitioner': pttr, 'order': order, 'partitions': partitions, + 'transformation': '' if transformation is None else transformation.name, + 'size': len(mfts), 'time': times, + 'crps': _crps1, 'brier': _brier, 'window': window_key, + 'steps': steps_ahead, 'method': method} + else: + _start = time.time() + distributions = mfts.predict(test_data, **kwargs) + _end = time.time() + times += _end - _start + + eval = Measures.get_distribution_ahead_statistics(test_data[mfts.order:mfts.order+steps_ahead], distributions) + + for key in eval.keys(): + eval[key]["time"] = times + eval[key]["method"] = method + + ret = {'model': mfts.shortname, 'partitioner': pttr, 'order': order, 'partitions': partitions, + 'transformation': '' if transformation is None else transformation.name, + 'size': len(mfts), 'time': times, + 'window': window_key, 'steps': steps_ahead, 'method': method, + 'ahead_results': eval + } + + return ret
    + + +
    [docs]def common_process_time_jobs(conn, data, job): + dta = deepcopy(data) + dta.append(job['steps']) + dta.append(job['method']) + for key in ["time"]: + if key in job: + data2 = deepcopy(dta) + data2.extend([key, job[key]]) + bUtil.insert_benchmark(data2, conn)
    + + +
    [docs]def common_process_point_jobs(conn, data, job): + dta = deepcopy(data) + dta.append(job['steps']) + dta.append(job['method']) + for key in ["rmse", "mape", "u", "time"]: + if key in job: + data2 = deepcopy(dta) + data2.extend([key, job[key]]) + bUtil.insert_benchmark(data2, conn)
    + + +
    [docs]def process_point_jobs(dataset, tag, job, conn): + """ + Extract information from a dictionary with point benchmark results and save it on a database + + :param dataset: the benchmark dataset name + :param tag: alias for the benchmark group being executed + :param job: a dictionary with the benchmark results + :param conn: a connection to a Sqlite database + :return: + """ + + data = bUtil.process_common_data(dataset, tag, 'point',job) + + common_process_point_jobs(conn, data, job)
    + + +
    [docs]def process_point_jobs2(dataset, tag, job, conn): + """ + Extract information from a dictionary with point benchmark results and save it on a database + + :param dataset: the benchmark dataset name + :param tag: alias for the benchmark group being executed + :param job: a dictionary with the benchmark results + :param conn: a connection to a Sqlite database + :return: + """ + + data = bUtil.process_common_data2(dataset, tag, 'point',job) + + if job['steps'] == 1: + common_process_point_jobs(conn, data, job) + else: + for k in range(job['steps']): + j2 = job['ahead_results'][k] + common_process_point_jobs(conn, data, j2)
    + + +
    [docs]def common_process_interval_jobs(conn, data, job): + dta = deepcopy(data) + dta.append(job['steps']) + dta.append(job['method']) + for key in ["sharpness","resolution","coverage","time","pinball05", + "pinball25","pinball75","pinball95", "winkler05", "winkler25"]: + if key in job: + data2 = deepcopy(dta) + data2.extend([key, job[key]]) + bUtil.insert_benchmark(data2, conn)
    + + +
    [docs]def process_interval_jobs(dataset, tag, job, conn): + """ + Extract information from an dictionary with interval benchmark results and save it on a database + + :param dataset: the benchmark dataset name + :param tag: alias for the benchmark group being executed + :param job: a dictionary with the benchmark results + :param conn: a connection to a Sqlite database + :return: + """ + + data = bUtil.process_common_data(dataset, tag, 'interval', job) + + common_process_interval_jobs(conn, data, job)
    + + +
    [docs]def process_interval_jobs2(dataset, tag, job, conn): + + data = bUtil.process_common_data2(dataset, tag, 'interval', job) + + if job['steps'] == 1: + common_process_interval_jobs(conn, data, job) + else: + for k in range(job['steps']): + j2 = job['ahead_results'][k] + common_process_interval_jobs(conn, data, j2)
    + + +
    [docs]def common_process_probabilistic_jobs(conn, data, job): + dta = deepcopy(data) + dta.append(job['steps']) + dta.append(job['method']) + for key in ["crps","time","brier"]: + if key in job: + data2 = deepcopy(dta) + data2.extend([key, job[key]]) + bUtil.insert_benchmark(data2, conn)
    + + +
    [docs]def process_probabilistic_jobs(dataset, tag, job, conn): + """ + Extract information from an dictionary with probabilistic benchmark results and save it on a database + + :param dataset: the benchmark dataset name + :param tag: alias for the benchmark group being executed + :param job: a dictionary with the benchmark results + :param conn: a connection to a Sqlite database + :return: + """ + + data = bUtil.process_common_data(dataset, tag, 'density', job) + + common_process_probabilistic_jobs(conn, data, job)
    + + +
    [docs]def process_probabilistic_jobs2(dataset, tag, job, conn): + """ + Extract information from an dictionary with probabilistic benchmark results and save it on a database + + :param dataset: the benchmark dataset name + :param tag: alias for the benchmark group being executed + :param job: a dictionary with the benchmark results + :param conn: a connection to a Sqlite database + :return: + """ + + data = bUtil.process_common_data2(dataset, tag, 'density', job) + + if job['steps'] == 1: + common_process_probabilistic_jobs(conn,data,job) + else: + for k in range(job['steps']): + j2 = job['ahead_results'][k] + common_process_probabilistic_jobs(conn, data, j2)
    + + + + + + + + + + + +
    [docs]def plot_point(axis, points, order, label, color='red', ls='-', linewidth=1): + mi = min(points) * 0.95 + ma = max(points) * 1.05 + for k in np.arange(0, order): + points.insert(0, None) + axis.plot(points, color=color, label=label, ls=ls,linewidth=linewidth) + return [mi, ma]
    + + + +
    [docs]def plot_compared_series(original, models, colors, typeonlegend=False, save=False, file=None, tam=[20, 5], + points=True, intervals=True, linewidth=1.5): + """ + Plot the forecasts of several one step ahead models, by point or by interval + + :param original: Original time series data (list) + :param models: List of models to compare + :param colors: List of models colors + :param typeonlegend: Add the type of forecast (point / interval) on legend + :param save: Save the picture on file + :param file: Filename to save the picture + :param tam: Size of the picture + :param points: True to plot the point forecasts, False otherwise + :param intervals: True to plot the interval forecasts, False otherwise + :param linewidth: + :return: + """ + + fig = plt.figure(figsize=tam) + ax = fig.add_subplot(111) + + mi = [] + ma = [] + + legends = [] + + ax.plot(original, color='black', label="Original", linewidth=linewidth*1.5) + + for count, fts in enumerate(models, start=0): + try: + if fts.has_point_forecasting and points: + forecasts = fts.forecast(original) + if isinstance(forecasts, np.ndarray): + forecasts = forecasts.tolist() + mi.append(min(forecasts) * 0.95) + ma.append(max(forecasts) * 1.05) + for k in np.arange(0, fts.order): + forecasts.insert(0, None) + lbl = fts.shortname + str(fts.order if fts.is_high_order and not fts.benchmark_only else "") + if typeonlegend: lbl += " (Point)" + ax.plot(forecasts, color=colors[count], label=lbl, ls="-",linewidth=linewidth) + + if fts.has_interval_forecasting and intervals: + forecasts = fts.forecast_interval(original) + lbl = fts.shortname + " " + str(fts.order if fts.is_high_order and not fts.benchmark_only else "") + if not points and intervals: + ls = "-" + else: + ls = "--" + tmpmi, tmpma = Util.plot_interval(ax, forecasts, fts.order, label=lbl, typeonlegend=typeonlegend, + color=colors[count], ls=ls, linewidth=linewidth) + mi.append(tmpmi) + ma.append(tmpma) + except ValueError as ex: + print(fts.shortname) + + handles0, labels0 = ax.get_legend_handles_labels() + lgd = ax.legend(handles0, labels0, loc=2, bbox_to_anchor=(1, 1)) + legends.append(lgd) + + # ax.set_title(fts.name) + ax.set_ylim([min(mi), max(ma)]) + ax.set_ylabel('F(T)') + ax.set_xlabel('T') + ax.set_xlim([0, len(original)])
    + + #Util.show_and_save_image(fig, file, save, lgd=legends) + + +
    [docs]def plotCompared(original, forecasts, labels, title): + fig = plt.figure(figsize=[13, 6]) + ax = fig.add_subplot(111) + ax.plot(original, color='k', label="Original") + for c in range(0, len(forecasts)): + ax.plot(forecasts[c], label=labels[c]) + handles0, labels0 = ax.get_legend_handles_labels() + ax.legend(handles0, labels0) + ax.set_title(title) + ax.set_ylabel('F(T)') + ax.set_xlabel('T') + ax.set_xlim([0, len(original)]) + ax.set_ylim([min(original), max(original)])
    + + +
    [docs]def SelecaoSimples_MenorRMSE(original, parameters, modelo): + ret = [] + errors = [] + forecasted_best = [] + print("Série Original") + fig = plt.figure(figsize=[20, 12]) + fig.suptitle("Comparação de modelos ") + ax0 = fig.add_axes([0, 0.5, 0.65, 0.45]) # left, bottom, width, height + ax0.set_xlim([0, len(original)]) + ax0.set_ylim([min(original), max(original)]) + ax0.set_title('Série Temporal') + ax0.set_ylabel('F(T)') + ax0.set_xlabel('T') + ax0.plot(original, label="Original") + min_rmse = 100000.0 + best = None + for p in parameters: + sets = Grid.GridPartitioner(data=original, npart=p).sets + fts = modelo(str(p) + " particoes") + fts.train(original, sets=sets) + # print(original) + forecasted = fts.forecast(original) + forecasted.insert(0, original[0]) + # print(forecasted) + ax0.plot(forecasted, label=fts.name) + error = Measures.rmse(np.array(forecasted), np.array(original)) + print(p, error) + errors.append(error) + if error < min_rmse: + min_rmse = error + best = fts + forecasted_best = forecasted + handles0, labels0 = ax0.get_legend_handles_labels() + ax0.legend(handles0, labels0) + ax1 = fig.add_axes([0.7, 0.5, 0.3, 0.45]) # left, bottom, width, height + ax1.set_title('Comparação dos Erros Quadráticos Médios') + ax1.set_ylabel('RMSE') + ax1.set_xlabel('Quantidade de Partições') + ax1.set_xlim([min(parameters), max(parameters)]) + ax1.plot(parameters, errors) + ret.append(best) + ret.append(forecasted_best) + # Modelo diferencial + print("\nSérie Diferencial") + difffts = Transformations.differential(original) + errors = [] + forecastedd_best = [] + ax2 = fig.add_axes([0, 0, 0.65, 0.45]) # left, bottom, width, height + ax2.set_xlim([0, len(difffts)]) + ax2.set_ylim([min(difffts), max(difffts)]) + ax2.set_title('Série Temporal') + ax2.set_ylabel('F(T)') + ax2.set_xlabel('T') + ax2.plot(difffts, label="Original") + min_rmse = 100000.0 + bestd = None + for p in parameters: + sets = Grid.GridPartitioner(data=difffts, npart=p) + fts = modelo(str(p) + " particoes") + fts.train(difffts, sets=sets) + forecasted = fts.forecast(difffts) + forecasted.insert(0, difffts[0]) + ax2.plot(forecasted, label=fts.name) + error = Measures.rmse(np.array(forecasted), np.array(difffts)) + print(p, error) + errors.append(error) + if error < min_rmse: + min_rmse = error + bestd = fts + forecastedd_best = forecasted + handles0, labels0 = ax2.get_legend_handles_labels() + ax2.legend(handles0, labels0) + ax3 = fig.add_axes([0.7, 0, 0.3, 0.45]) # left, bottom, width, height + ax3.set_title('Comparação dos Erros Quadráticos Médios') + ax3.set_ylabel('RMSE') + ax3.set_xlabel('Quantidade de Partições') + ax3.set_xlim([min(parameters), max(parameters)]) + ax3.plot(parameters, errors) + ret.append(bestd) + ret.append(forecastedd_best) + return ret
    + + +
    [docs]def compareModelsPlot(original, models_fo, models_ho): + fig = plt.figure(figsize=[13, 6]) + fig.suptitle("Comparação de modelos ") + ax0 = fig.add_axes([0, 0, 1, 1]) # left, bottom, width, height + rows = [] + for model in models_fo: + fts = model["model"] + ax0.plot(model["forecasted"], label=model["name"]) + for model in models_ho: + fts = model["model"] + ax0.plot(model["forecasted"], label=model["name"]) + handles0, labels0 = ax0.get_legend_handles_labels() + ax0.legend(handles0, labels0)
    + + +
    [docs]def compareModelsTable(original, models_fo, models_ho): + fig = plt.figure(figsize=[12, 4]) + fig.suptitle("Comparação de modelos ") + columns = ['Modelo', 'Ordem', 'Partições', 'RMSE', 'MAPE (%)'] + rows = [] + for model in models_fo: + fts = model["model"] + error_r = Measures.rmse(model["forecasted"], original) + error_m = round(Measures.mape(model["forecasted"], original) * 100, 2) + rows.append([model["name"], fts.order, len(fts.sets), error_r, error_m]) + for model in models_ho: + fts = model["model"] + error_r = Measures.rmse(model["forecasted"][fts.order:], original[fts.order:]) + error_m = round(Measures.mape(model["forecasted"][fts.order:], original[fts.order:]) * 100, 2) + rows.append([model["name"], fts.order, len(fts.sets), error_r, error_m]) + ax1 = fig.add_axes([0, 0, 1, 1]) # left, bottom, width, height + ax1.set_xticks([]) + ax1.set_yticks([]) + ax1.table(cellText=rows, + colLabels=columns, + cellLoc='center', + bbox=[0, 0, 1, 1]) + sup = "\\begin{tabular}{" + header = "" + body = "" + footer = "" + + for c in columns: + sup = sup + "|c" + if len(header) > 0: + header = header + " & " + header = header + "\\textbf{" + c + "} " + sup = sup + "|} \\hline\n" + header = header + "\\\\ \\hline \n" + + for r in rows: + lin = "" + for c in r: + if len(lin) > 0: + lin = lin + " & " + lin = lin + str(c) + + body = body + lin + "\\\\ \\hline \n" + + return sup + header + body + "\\end{tabular}"
    + + +
    [docs]def simpleSearch_RMSE(train, test, model, partitions, orders, save=False, file=None, tam=[10, 15], + plotforecasts=False, elev=30, azim=144, intervals=False,parameters=None, + partitioner=Grid.GridPartitioner,transformation=None,indexer=None): + _3d = len(orders) > 1 + ret = [] + if _3d: + errors = np.array([[0 for k in range(len(partitions))] for kk in range(len(orders))]) + else: + errors = [] + forecasted_best = [] + fig = plt.figure(figsize=tam) + # fig.suptitle("Comparação de modelos ") + if plotforecasts: + ax0 = fig.add_axes([0, 0.4, 0.9, 0.5]) # left, bottom, width, height + ax0.set_xlim([0, len(train)]) + ax0.set_ylim([min(train) * 0.9, max(train) * 1.1]) + ax0.set_title('Forecasts') + ax0.set_ylabel('F(T)') + ax0.set_xlabel('T') + min_rmse = 1000000.0 + best = None + + for pc, p in enumerate(partitions, start=0): + + sets = partitioner(data=train, npart=p, transformation=transformation).sets + for oc, o in enumerate(orders, start=0): + fts = model("q = " + str(p) + " n = " + str(o)) + fts.append_transformation(transformation) + fts.train(train, sets=sets, order=o, parameters=parameters) + if not intervals: + forecasted = fts.forecast(test) + if not fts.has_seasonality: + error = Measures.rmse(np.array(test[o:]), np.array(forecasted[:-1])) + else: + error = Measures.rmse(np.array(test[o:]), np.array(forecasted)) + for kk in range(o): + forecasted.insert(0, None) + if plotforecasts: ax0.plot(forecasted, label=fts.name) + else: + forecasted = fts.forecast_interval(test) + error = 1.0 - Measures.rmse_interval(np.array(test[o:]), np.array(forecasted[:-1])) + if _3d: + errors[oc, pc] = error + else: + errors.append( error ) + if error < min_rmse: + min_rmse = error + best = fts + forecasted_best = forecasted + + # print(min_rmse) + if plotforecasts: + # handles0, labels0 = ax0.get_legend_handles_labels() + # ax0.legend(handles0, labels0) + ax0.plot(test, label="Original", linewidth=3.0, color="black") + if _3d: ax1 = Axes3D(fig, rect=[0, 1, 0.9, 0.9], elev=elev, azim=azim) + if _3d and not plotforecasts: + ax1 = Axes3D(fig, rect=[0, 1, 0.9, 0.9], elev=elev, azim=azim) + ax1.set_title('Error Surface') + ax1.set_ylabel('Model order') + ax1.set_xlabel('Number of partitions') + ax1.set_zlabel('RMSE') + X, Y = np.meshgrid(partitions, orders) + surf = ax1.plot_surface(X, Y, errors, rstride=1, cstride=1, antialiased=True) + else: + ax1 = fig.add_axes([0, 1, 0.9, 0.9]) + ax1.set_title('Error Curve') + ax1.set_xlabel('Number of partitions') + ax1.set_ylabel('RMSE') + ax1.plot(partitions, errors) + ret.append(best) + ret.append(forecasted_best) + ret.append(min_rmse) + + # plt.tight_layout() + + cUtil.show_and_save_image(fig, file, save) + + return ret
    + + + +
    [docs]def pftsExploreOrderAndPartitions(data,save=False, file=None): + fig, axes = plt.subplots(nrows=4, ncols=1, figsize=[6, 8]) + data_fs1 = Grid.GridPartitioner(data=data, npart=10).sets + mi = [] + ma = [] + + axes[0].set_title('Point Forecasts by Order') + axes[2].set_title('Interval Forecasts by Order') + + for order in np.arange(1, 6): + fts = pwfts.ProbabilisticWeightedFTS("") + fts.shortname = "n = " + str(order) + fts.train(data, sets=data_fs1.sets, order=order) + point_forecasts = fts.forecast(data) + interval_forecasts = fts.forecast_interval(data) + lower = [kk[0] for kk in interval_forecasts] + upper = [kk[1] for kk in interval_forecasts] + mi.append(min(lower) * 0.95) + ma.append(max(upper) * 1.05) + for k in np.arange(0, order): + point_forecasts.insert(0, None) + lower.insert(0, None) + upper.insert(0, None) + axes[0].plot(point_forecasts, label=fts.shortname) + axes[2].plot(lower, label=fts.shortname) + axes[2].plot(upper) + + axes[1].set_title('Point Forecasts by Number of Partitions') + axes[3].set_title('Interval Forecasts by Number of Partitions') + + for partitions in np.arange(5, 11): + data_fs = Grid.GridPartitioner(data=data, npart=partitions).sets + fts = pwfts.ProbabilisticWeightedFTS("") + fts.shortname = "q = " + str(partitions) + fts.train(data, sets=data_fs.sets, order=1) + point_forecasts = fts.forecast(data) + interval_forecasts = fts.forecast_interval(data) + lower = [kk[0] for kk in interval_forecasts] + upper = [kk[1] for kk in interval_forecasts] + mi.append(min(lower) * 0.95) + ma.append(max(upper) * 1.05) + point_forecasts.insert(0, None) + lower.insert(0, None) + upper.insert(0, None) + axes[1].plot(point_forecasts, label=fts.shortname) + axes[3].plot(lower, label=fts.shortname) + axes[3].plot(upper) + + for ax in axes: + ax.set_ylabel('F(T)') + ax.set_xlabel('T') + ax.plot(data, label="Original", color="black", linewidth=1.5) + handles, labels = ax.get_legend_handles_labels() + ax.legend(handles, labels, loc=2, bbox_to_anchor=(1, 1)) + ax.set_ylim([min(mi), max(ma)]) + ax.set_xlim([0, len(data)]) + + plt.tight_layout() + + cUtil.show_and_save_image(fig, file, save)
    + + +
    [docs]def train_test_time(data, windowsize, train=0.8, **kwargs): + import time + + tag = __pop('tag', None, kwargs) + steps = __pop('steps', 0, kwargs) + dataset = __pop('dataset', None, kwargs) + + partitions = __pop('partitions', 10, kwargs) + + fts_methods = __pop('methods', [], kwargs) + + file = kwargs.get('file', "benchmarks.db") + + inc = __pop("inc", 0.1, kwargs) + + conn = bUtil.open_benchmark_db(file) + + for ct, train, test in cUtil.sliding_window(data, windowsize, train, inc=inc, **kwargs): + partitioner = Grid.GridPartitioner(data=train, npart=partitions) + for id, fts_method in enumerate(fts_methods): + print(dataset, fts_method, ct) + times = [] + model = fts_method(partitioner = partitioner, **kwargs) + _start = time.time() + model.fit(train, **kwargs) + _end = time.time() + times.append( _end - _start ) + _start = time.time() + model.predict(train, **kwargs) + _end = time.time() + times.append(_end - _start) + for ct, method in enumerate(['train','test']): + job = { + 'steps': steps, 'method': method, 'time': times[ct], + 'model': model.shortname, 'transformation': None, + 'order': model.order, 'partitioner': partitioner.name, + 'partitions': partitions, 'size': len(model) + } + + data = bUtil.process_common_data2(dataset, tag, 'train', job) + common_process_time_jobs(conn, data, job) + + + conn.close()
    + + +
    [docs]def distributed_model_train_test_time(models, data, windowsize, train=0.8, **kwargs): + """ + Assess the train and test times for a given list of configured models and save the results on a database. + + :param models: A list of FTS models already configured, but not yet trained, + :param data: time series data, including train and test data + :param windowsize: Train/test data windows + :param train: Percent of data window that will be used to train the models + :param kwargs: + :return: + """ + import time + + tag = __pop('tag', None, kwargs) + num_batches = kwargs.get('num_batches', 1) + dataset = __pop('dataset', None, kwargs) + + file = kwargs.get('file', "benchmarks.db") + + inc = __pop("inc", 0.5, kwargs) + + conn = bUtil.open_benchmark_db(file) + + for ct, train, test in cUtil.sliding_window(data, windowsize, train, inc=inc, **kwargs): + for id, model in enumerate(models): + print(dataset, model, ct) + + model.fit(train, **kwargs) + + for time in model.__dict__['training_time']: + job = { + 'steps': num_batches, 'method': 'train', 'time': time, + 'model': model.shortname, 'transformation': None, + 'order': model.order, 'partitioner': None, + 'partitions': None, 'size': len(model) + } + data = bUtil.process_common_data2(dataset, tag, 'train', job) + common_process_time_jobs(conn, data, job) + + model.predict(train, **kwargs) + + for time in model.__dict__['forecasting_time']: + job = { + 'steps': num_batches, 'method': 'test', 'time': time, + 'model': model.shortname, 'transformation': None, + 'order': model.order, 'partitioner': None, + 'partitions': None, 'size': len(model) + } + + data = bUtil.process_common_data2(dataset, tag, 'test', job) + common_process_time_jobs(conn, data, job) + + conn.close()
    + + +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/benchmarks/knn.html b/docs/build/html/_modules/pyFTS/benchmarks/knn.html new file mode 100644 index 0000000..73b1cd9 --- /dev/null +++ b/docs/build/html/_modules/pyFTS/benchmarks/knn.html @@ -0,0 +1,274 @@ + + + + + + + + + pyFTS.benchmarks.knn — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.benchmarks.knn

    +#!/usr/bin/python
    +# -*- coding: utf8 -*-
    +
    +import numpy as np
    +from statsmodels.tsa.tsatools import lagmat
    +from pyFTS.common import fts
    +from pyFTS.probabilistic import ProbabilityDistribution
    +from sklearn.neighbors import KDTree
    +from itertools import product
    +from pyFTS.models.ensemble.ensemble import sampler
    +
    +
    [docs]class KNearestNeighbors(fts.FTS): + """ + A façade for sklearn.neighbors + """ + def __init__(self, **kwargs): + super(KNearestNeighbors, self).__init__(**kwargs) + self.name = "kNN" + self.shortname = "kNN" + self.detail = "K-Nearest Neighbors" + self.uod_clip = False + self.is_high_order = True + self.has_point_forecasting = True + self.has_interval_forecasting = True + self.has_probability_forecasting = True + self.benchmark_only = True + self.min_order = 1 + self.alpha = kwargs.get("alpha", 0.05) + self.max_lag = self.order + self.lag = None + self.k = kwargs.get("k", 30) + self.uod = None + self.kdtree = None + self.values = None + + def _prepare_x(self, data): + l = len(data) + X = [] + + if l == self.order: + l += 1 + + for t in np.arange(self.order, l): + X.append([data[t - k - 1] for k in np.arange(self.order)]) + + return X + + def _prepare_xy(self, data): + l = len(data) + X = [] + Y = [] + + for t in np.arange(self.order, l): + X.append([data[t - k - 1] for k in np.arange(self.order)]) + Y.append(data[t]) + + return (X,Y) + +
    [docs] def train(self, data, **kwargs): + X,Y = self._prepare_xy(data) + + self.kdtree = KDTree(np.array(X)) + self.values = Y + + self.shortname = "kNN({})-{}".format(self.order, self.alpha)
    + +
    [docs] def knn(self, sample): + X = self._prepare_x(sample) + _, ix = self.kdtree.query(np.array(X), self.k) + + return [self.values[k] for k in ix.flatten() ]
    + +
    [docs] def forecast(self, data, **kwargs): + l = len(data) + ret = [] + for k in np.arange(self.order, l+(1 if self.order == l else 0)): + + sample = data[k-self.order : k] + + forecasts = self.knn(sample) + + ret.append(np.nanmean(forecasts)) + + return ret
    + +
    [docs] def forecast_interval(self, data, **kwargs): + + alpha = kwargs.get('alpha',self.alpha) + + ret = [] + for k in np.arange(self.order, len(data)): + + sample = data[k-self.order : k] + + forecasts = self.knn(sample) + + i = np.percentile(forecasts, [alpha*100, (1-alpha)*100]).tolist() + ret.append(i) + + return ret
    + +
    [docs] def forecast_ahead_interval(self, data, steps, **kwargs): + alpha = kwargs.get('alpha', self.alpha) + + ret = [] + + start = kwargs.get('start', self.order) + + sample = [[k] for k in data[start - self.order: start]] + + for k in np.arange(self.order, steps + self.order): + forecasts = [] + + lags = [sample[k - i - 1] for i in np.arange(0, self.order)] + + # Trace the possible paths + for path in product(*lags): + forecasts.extend(self.knn(path)) + + sample.append(sampler(forecasts, np.arange(.1, 1, 0.1), bounds=True)) + + interval = np.percentile(forecasts, [alpha*100, (1-alpha)*100]).tolist() + + ret.append(interval) + + return ret
    + +
    [docs] def forecast_distribution(self, data, **kwargs): + ret = [] + + smooth = kwargs.get("smooth", "histogram") + + uod = self.get_UoD() + + for k in np.arange(self.order, len(data)): + + sample = data[k-self.order : k] + + forecasts = self.knn(sample) + + dist = ProbabilityDistribution.ProbabilityDistribution(smooth, uod=uod, data=forecasts, + name="", **kwargs) + ret.append(dist) + + return ret
    + +
    [docs] def forecast_ahead_distribution(self, data, steps, **kwargs): + smooth = kwargs.get("smooth", "histogram") + + ret = [] + + start = kwargs.get('start', self.order) + + uod = self.get_UoD() + + sample = [[k] for k in data[start - self.order: start]] + + for k in np.arange(self.order, steps + self.order): + forecasts = [] + + lags = [sample[k - i - 1] for i in np.arange(0, self.order)] + + # Trace the possible paths + for path in product(*lags): + forecasts.extend(self.knn(path)) + + dist = ProbabilityDistribution.ProbabilityDistribution(smooth, uod=uod, data=forecasts, + name="", **kwargs) + ret.append(dist) + + sample.append(sampler(forecasts, np.arange(.1, 1, 0.1), bounds=True)) + + return ret
    + + +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/benchmarks/naive.html b/docs/build/html/_modules/pyFTS/benchmarks/naive.html new file mode 100644 index 0000000..0547925 --- /dev/null +++ b/docs/build/html/_modules/pyFTS/benchmarks/naive.html @@ -0,0 +1,118 @@ + + + + + + + + + pyFTS.benchmarks.naive — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.benchmarks.naive

    +#!/usr/bin/python
    +# -*- coding: utf8 -*-
    +
    +from pyFTS.common import fts
    +
    +
    +
    [docs]class Naive(fts.FTS): + """Naïve Forecasting method""" + def __init__(self, **kwargs): + super(Naive, self).__init__(order=1, name="Naive",**kwargs) + self.name = "Naïve Model" + self.detail = "Naïve Model" + self.benchmark_only = True + self.is_high_order = False + self.uod_clip = False + +
    [docs] def forecast(self, data, **kwargs): + return data
    + +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/benchmarks/quantreg.html b/docs/build/html/_modules/pyFTS/benchmarks/quantreg.html new file mode 100644 index 0000000..f50902a --- /dev/null +++ b/docs/build/html/_modules/pyFTS/benchmarks/quantreg.html @@ -0,0 +1,267 @@ + + + + + + + + + pyFTS.benchmarks.quantreg — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.benchmarks.quantreg

    +#!/usr/bin/python
    +# -*- coding: utf8 -*-
    +
    +import numpy as np
    +import pandas as pd
    +from statsmodels.regression.quantile_regression import QuantReg
    +from statsmodels.tsa.tsatools import lagmat
    +from pyFTS.common import SortedCollection, fts
    +from pyFTS.probabilistic import ProbabilityDistribution
    +
    +
    +
    [docs]class QuantileRegression(fts.FTS): + """Façade for statsmodels.regression.quantile_regression""" + def __init__(self, **kwargs): + super(QuantileRegression, self).__init__(**kwargs) + self.name = "QAR" + self.detail = "Quantile Regression" + self.is_high_order = True + self.has_point_forecasting = True + self.has_interval_forecasting = True + self.has_probability_forecasting = True + self.uod_clip = False + self.benchmark_only = True + self.min_order = 1 + self.alpha = kwargs.get("alpha", 0.05) + self.dist = kwargs.get("dist", False) + self.upper_qt = None + self.mean_qt = None + self.lower_qt = None + self.dist_qt = None + +
    [docs] def train(self, data, **kwargs): + if self.indexer is not None and isinstance(data, pd.DataFrame): + data = self.indexer.get_data(data) + + lagdata, ndata = lagmat(data, maxlag=self.order, trim="both", original='sep') + + mqt = QuantReg(ndata, lagdata).fit(0.5) + if self.alpha is not None: + uqt = QuantReg(ndata, lagdata).fit(1 - self.alpha) + lqt = QuantReg(ndata, lagdata).fit(self.alpha) + + self.mean_qt = [k for k in mqt.params] + if self.alpha is not None: + self.upper_qt = [k for k in uqt.params] + self.lower_qt = [k for k in lqt.params] + + if self.dist: + self.dist_qt = [] + for alpha in np.arange(0.05,0.5,0.05): + lqt = QuantReg(ndata, lagdata).fit(alpha) + uqt = QuantReg(ndata, lagdata).fit(1 - alpha) + lo_qt = [k for k in lqt.params] + up_qt = [k for k in uqt.params] + self.dist_qt.append([lo_qt, up_qt]) + + self.shortname = "QAR({})-{}".format(self.order,self.alpha)
    + +
    [docs] def linearmodel(self,data,params): + #return params[0] + sum([ data[k] * params[k+1] for k in np.arange(0, self.order) ]) + return sum([data[k] * params[k] for k in np.arange(0, self.order)])
    + +
    [docs] def point_to_interval(self, data, lo_params, up_params): + lo = self.linearmodel(data, lo_params) + up = self.linearmodel(data, up_params) + return [lo, up]
    + +
    [docs] def interval_to_interval(self, data, lo_params, up_params): + lo = self.linearmodel([k[0] for k in data], lo_params) + up = self.linearmodel([k[1] for k in data], up_params) + return [lo, up]
    + +
    [docs] def forecast(self, ndata, **kwargs): + + l = len(ndata) + + ret = [] + + for k in np.arange(self.order, l+1): #+1 to forecast one step ahead given all available lags + sample = ndata[k - self.order : k] + + ret.append(self.linearmodel(sample, self.mean_qt)) + + return ret
    + +
    [docs] def forecast_interval(self, ndata, **kwargs): + + l = len(ndata) + + ret = [] + + for k in np.arange(self.order , l): + sample = ndata[k - self.order: k] + ret.append(self.point_to_interval(sample, self.lower_qt, self.upper_qt)) + + return ret
    + +
    [docs] def forecast_ahead_interval(self, ndata, steps, **kwargs): + + smoothing = kwargs.get("smoothing", 0.01) + + l = len(ndata) + + ret = [] + + nmeans = self.forecast_ahead(ndata, steps, **kwargs) + + for k in np.arange(0, self.order): + nmeans.insert(k,ndata[k]) + + for k in np.arange(self.order, steps+self.order): + intl = self.point_to_interval(nmeans[k - self.order: k], self.lower_qt, self.upper_qt) + + tmpk = k-self.order + + ret.append([intl[0]*(1 - (tmpk*smoothing)), intl[1]*(1 + (tmpk*smoothing))]) + + return ret[-steps:]
    + +
    [docs] def forecast_distribution(self, ndata, **kwargs): + + ret = [] + + l = len(ndata) + + for k in np.arange(self.order, l + 1): + dist = ProbabilityDistribution.ProbabilityDistribution(type="histogram", + uod=[self.original_min, self.original_max]) + intervals = [] + for qt in self.dist_qt: + sample = ndata[k - self.order: k] + intl = self.point_to_interval(sample, qt[0], qt[1]) + intervals.append(intl) + + dist.append_interval(intervals) + + ret.append(dist) + + return ret
    + +
    [docs] def forecast_ahead_distribution(self, ndata, steps, **kwargs): + smoothing = kwargs.get("smoothing", 0.01) + + l = len(ndata) + + ret = [] + + nmeans = self.forecast_ahead(ndata, steps, **kwargs) + + for k in np.arange(0, self.order): + nmeans.insert(k, ndata[k]) + + for k in np.arange(self.order, steps + self.order): + dist = ProbabilityDistribution.ProbabilityDistribution(type="histogram", + uod=[self.original_min, self.original_max]) + + intervals = [[nmeans[self.order], nmeans[self.order]]] + for qt in self.dist_qt: + intl1 = self.point_to_interval(nmeans[k - self.order: k], qt[0], qt[1]) + tmpk = k - self.order + intl2 = [intl1[0] * (1 - (tmpk * smoothing)), intl1[1] * (1 + (tmpk * smoothing))] + intervals.append(intl2) + dist.append_interval(intervals) + + ret.append(dist) + + return ret
    + +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/common/Util.html b/docs/build/html/_modules/pyFTS/common/Util.html new file mode 100644 index 0000000..b6ecb0d --- /dev/null +++ b/docs/build/html/_modules/pyFTS/common/Util.html @@ -0,0 +1,652 @@ + + + + + + + + + pyFTS.common.Util — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.common.Util

    +"""
    +Common facilities for pyFTS
    +"""
    +
    +import time
    +import matplotlib.pyplot as plt
    +import numpy as np
    +import pandas as pd
    +import matplotlib.cm as cmx
    +import matplotlib.colors as pltcolors
    +from pyFTS.probabilistic import ProbabilityDistribution
    +from pyFTS.common import Transformations
    +
    +
    +
    [docs]def plot_compared_intervals_ahead(original, models, colors, distributions, time_from, time_to, intervals = True, + save=False, file=None, tam=[20, 5], resolution=None, + cmap='Blues', linewidth=1.5): + """ + Plot the forecasts of several one step ahead models, by point or by interval + + :param original: Original time series data (list) + :param models: List of models to compare + :param colors: List of models colors + :param distributions: True to plot a distribution + :param time_from: index of data poit to start the ahead forecasting + :param time_to: number of steps ahead to forecast + :param interpol: Fill space between distribution plots + :param save: Save the picture on file + :param file: Filename to save the picture + :param tam: Size of the picture + :param resolution: + :param cmap: Color map to be used on distribution plot + :param option: Distribution type to be passed for models + :return: + """ + fig = plt.figure(figsize=tam) + ax = fig.add_subplot(111) + + cm = plt.get_cmap(cmap) + cNorm = pltcolors.Normalize(vmin=0, vmax=1) + scalarMap = cmx.ScalarMappable(norm=cNorm, cmap=cm) + + if resolution is None: resolution = (max(original) - min(original)) / 100 + + mi = [] + ma = [] + + for count, fts in enumerate(models, start=0): + if fts.has_probability_forecasting and distributions[count]: + density = fts.forecast_ahead_distribution(original[time_from - fts.order:time_from], time_to, + resolution=resolution) + + #plot_density_scatter(ax, cmap, density, fig, resolution, time_from, time_to) + plot_density_rectange(ax, cm, density, fig, resolution, time_from, time_to) + + if fts.has_interval_forecasting and intervals: + forecasts = fts.forecast_ahead_interval(original[time_from - fts.order:time_from], time_to) + lower = [kk[0] for kk in forecasts] + upper = [kk[1] for kk in forecasts] + mi.append(min(lower)) + ma.append(max(upper)) + for k in np.arange(0, time_from - fts.order): + lower.insert(0, None) + upper.insert(0, None) + ax.plot(lower, color=colors[count], label=fts.shortname, linewidth=linewidth) + ax.plot(upper, color=colors[count], linewidth=linewidth*1.5) + + ax.plot(original, color='black', label="Original", linewidth=linewidth*1.5) + handles0, labels0 = ax.get_legend_handles_labels() + if True in distributions: + lgd = ax.legend(handles0, labels0, loc=2) + else: + lgd = ax.legend(handles0, labels0, loc=2, bbox_to_anchor=(1, 1)) + _mi = min(mi) + if _mi < 0: + _mi *= 1.1 + else: + _mi *= 0.9 + _ma = max(ma) + if _ma < 0: + _ma *= 0.9 + else: + _ma *= 1.1 + + ax.set_ylim([_mi, _ma]) + ax.set_ylabel('F(T)') + ax.set_xlabel('T') + ax.set_xlim([0, len(original)]) + + show_and_save_image(fig, file, save, lgd=lgd)
    + + + +
    [docs]def plot_density_rectange(ax, cmap, density, fig, resolution, time_from, time_to): + """ + Auxiliar function to plot_compared_intervals_ahead + """ + from matplotlib.patches import Rectangle + from matplotlib.collections import PatchCollection + patches = [] + colors = [] + for x in density.index: + for y in density.columns: + s = Rectangle((time_from + x, y), 1, resolution, fill=True, lw = 0) + patches.append(s) + colors.append(density[y][x]*5) + pc = PatchCollection(patches=patches, match_original=True) + pc.set_clim([0, 1]) + pc.set_cmap(cmap) + pc.set_array(np.array(colors)) + ax.add_collection(pc) + cb = fig.colorbar(pc, ax=ax) + cb.set_label('Density')
    + + +
    [docs]def plot_probability_distributions(pmfs, lcolors, tam=[15, 7]): + fig = plt.figure(figsize=tam) + ax = fig.add_subplot(111) + + for k,m in enumerate(pmfs,start=0): + m.plot(ax, color=lcolors[k]) + + handles0, labels0 = ax.get_legend_handles_labels() + ax.legend(handles0, labels0)
    + + +
    [docs]def plot_distribution(ax, cmap, probabilitydist, fig, time_from, reference_data=None): + """ + Plot forecasted ProbabilityDistribution objects on a matplotlib axis + + :param ax: matplotlib axis + :param cmap: matplotlib colormap name + :param probabilitydist: list of ProbabilityDistribution objects + :param fig: matplotlib figure + :param time_from: starting time (on x axis) to begin the plots + :param reference_data: + :return: + """ + from matplotlib.patches import Rectangle + from matplotlib.collections import PatchCollection + patches = [] + colors = [] + for ct, dt in enumerate(probabilitydist): + disp = 0.0 + if reference_data is not None: + disp = reference_data[time_from+ct] + + for y in dt.bins: + s = Rectangle((time_from+ct, y+disp), 1, dt.resolution, fill=True, lw = 0) + patches.append(s) + colors.append(dt.density(y)) + scale = Transformations.Scale() + colors = scale.apply(colors) + pc = PatchCollection(patches=patches, match_original=True) + pc.set_clim([0, 1]) + pc.set_cmap(cmap) + pc.set_array(np.array(colors)) + ax.add_collection(pc) + cb = fig.colorbar(pc, ax=ax) + cb.set_label('Density')
    + + +
    [docs]def plot_distribution2(probabilitydist, data, **kwargs): + """ + Plot distributions in y-axis over the time (x-axis) + + :param probabilitydist: the forecasted probability distributions to plot + :param data: the original test sample + :keyword start_at: the time index (inside of data) to start to plot the probability distributions + :keyword ax: a matplotlib axis. If no value was provided a new axis is created. + :keyword cmap: a matplotlib colormap name, the default value is 'Blues' + :keyword quantiles: the list of quantiles intervals to plot, e. g. [.05, .25, .75, .95] + :keyword median: a boolean value indicating if the median value will be plot. + """ + import matplotlib.colorbar as cbar + import matplotlib.cm as cm + + ax = kwargs.get('ax',None) + if ax is None: + fig, ax = plt.subplots(nrows=1, ncols=1, figsize=[15, 5]) + + l = len(probabilitydist) + + cmap = kwargs.get('cmap','Blues') + cmap = plt.get_cmap(cmap) + + start_at = kwargs.get('start_at',0) + + x = [k + start_at for k in range(l + 1)] + + qt = kwargs.get('quantiles',None) + + if qt is None: + qt = [round(k, 2) for k in np.arange(.05, 1., .05)] + qt.insert(0, .01) + qt.append(.99) + + lq = len(qt) + + normal = plt.Normalize(min(qt), max(qt)) + scalarMap = cm.ScalarMappable(norm=normal, cmap=cmap) + + for ct in np.arange(1, int(lq / 2) + 1): + try: + y = [[data[start_at], data[start_at]]] + for pd in probabilitydist: + qts = pd.quantile([qt[ct - 1], qt[-ct]]) + y.append(qts) + + ax.fill_between(x, [k[0] for k in y], [k[1] for k in y], + facecolor=scalarMap.to_rgba(ct / lq)) + except: + pass + + if kwargs.get('median',True): + y = [data[start_at]] + for pd in probabilitydist: + qts = pd.quantile([.5]) + y.append(qts[0]) + + ax.plot(x, y, color='red', label='Median') + + cax, _ = cbar.make_axes(ax) + cb = cbar.ColorbarBase(cax, cmap=cmap, norm=normal) + cb.set_label('Density')
    + + +
    [docs]def plot_distribution_tiled(distributions,data=None,rows=5,cols=5,index=None,axis=None,size=[10,20]): + """ + Plot one distribution individually in each axis, with probability in y-axis and UoD on x-axis + + :param distributions: + :param data: + :param rows: + :param cols: + :param index: + :param axis: + :param size: + :return: + """ + + if axis is None: + fig, axis = plt.subplots(nrows=rows, ncols=cols, figsize=size) + + for ct in range(rows*cols): + col = ct % cols + row = ct // cols + if index is None: + ix = ct + else: + ix =index[ct] + forecast = distributions[ix] + forecast.plot(axis=axis[row][col]) + if data is not None: + axis[row][col].axvline(data[ix]) + axis[row][col].set_title('t+{}'.format(ix)) + axis[row][col].set_xlabel(None) + + plt.tight_layout()
    + + +
    [docs]def plot_interval(axis, intervals, order, label, color='red', typeonlegend=False, ls='-', linewidth=1): + """ + Plot forecasted intervals on matplotlib + + :param axis: matplotlib axis + :param intervals: list of forecasted intervals + :param order: order of the model that create the forecasts + :param label: figure label + :param color: matplotlib color name + :param typeonlegend: + :param ls: matplotlib line style + :param linewidth: matplotlib width + :return: + """ + lower = [kk[0] for kk in intervals] + upper = [kk[1] for kk in intervals] + mi = min(lower) * 0.95 + ma = max(upper) * 1.05 + for k in np.arange(0, order+1): + lower.insert(0, None) + upper.insert(0, None) + if typeonlegend: label += " (Interval)" + axis.plot(lower, color=color, label=label, ls=ls,linewidth=linewidth) + axis.plot(upper, color=color, ls=ls,linewidth=linewidth) + return [mi, ma]
    + + +
    [docs]def plot_interval2(intervals, data, **kwargs): + """ + Plot forecasted intervals on matplotlib + + :param intervals: list of forecasted intervals + :param data: the original test sample + :keyword start_at: the time index (inside of data) to start to plot the intervals + :keyword label: figure label + :keyword color: matplotlib color name + :keyword typeonlegend: + :keyword ls: matplotlib line style + :keyword linewidth: matplotlib width + """ + + l = len(intervals) + + nintervals = intervals + + start_at = kwargs.get('start_at', 1) + + ax = kwargs.get('ax', None) + if ax is None: + fig, ax = plt.subplots(nrows=1, ncols=1, figsize=[15, 5]) + + for k in np.arange(0, start_at): + nintervals.insert(0, [None,None]) + + nintervals.insert(start_at, [data[start_at], data[start_at]]) + + lower = [kk[0] for kk in nintervals] + upper = [kk[1] for kk in nintervals] + + typeonlegend = kwargs.get('typeonlegend', False) + color = kwargs.get('color', 'red') + label = kwargs.get('label','') + linewidth = kwargs.get('linewidth', 1) + + ls = kwargs.get('ls','-') + + if typeonlegend: label += " (Interval)" + ax.plot(lower, color=color, label=label, ls=ls,linewidth=linewidth) + ax.plot(upper, color=color, ls=ls,linewidth=linewidth)
    + + +
    [docs]def plot_rules(model, size=[5, 5], axis=None, rules_by_axis=None, columns=1): + """ + Plot the FLRG rules of a FTS model on a matplotlib axis + + :param model: FTS model + :param size: figure size + :param axis: matplotlib axis + :param rules_by_axis: number of rules plotted by column + :param columns: number of columns + :return: + """ + if axis is None and rules_by_axis is None: + rows = 1 + elif axis is None and rules_by_axis is not None: + rows = (((len(model.flrgs.keys())//rules_by_axis)) // columns)+1 + + fig, axis = plt.subplots(nrows=rows, ncols=columns, figsize=size) + + if rules_by_axis is None: + draw_sets_on_axis(axis, model, size) + + _lhs = model.partitioner.ordered_sets if not model.is_high_order else model.flrgs.keys() + + for ct, key in enumerate(_lhs): + + xticks = [] + xtickslabels = [] + + if rules_by_axis is None: + ax = axis + else: + colcount = (ct // rules_by_axis) % columns + rowcount = (ct // rules_by_axis) // columns + + if rows > 1 and columns > 1: + ax = axis[rowcount, colcount] + elif columns > 1: + ax = axis[rowcount] + else: + ax = axis + + if ct % rules_by_axis == 0: + draw_sets_on_axis(ax, model, size) + + if not model.is_high_order: + if key in model.flrgs: + x = (ct % rules_by_axis) + 1 + flrg = model.flrgs[key] + y = model.sets[key].centroid + ax.plot([x],[y],'o') + xticks.append(x) + xtickslabels.append(key) + for rhs in flrg.RHS: + dest = model.sets[rhs].centroid + ax.arrow(x+.1, y, 0.8, dest - y, #length_includes_head=True, + head_width=0.1, head_length=0.1, shape='full', overhang=0, + fc='k', ec='k') + else: + flrg = model.flrgs[key] + x = (ct%rules_by_axis)*model.order + 1 + for ct2, lhs in enumerate(flrg.LHS): + y = model.sets[lhs].centroid + ax.plot([x+ct2], [y], 'o') + xticks.append(x+ct2) + xtickslabels.append(lhs) + for ct2 in range(1, model.order): + fs1 = flrg.LHS[ct2-1] + fs2 = flrg.LHS[ct2] + y = model.sets[fs1].centroid + dest = model.sets[fs2].centroid + ax.plot([x+ct2-1,x+ct2], [y,dest],'-') + + y = model.sets[flrg.LHS[-1]].centroid + for rhs in flrg.RHS: + dest = model.sets[rhs].centroid + ax.arrow(x + model.order -1 + .1, y, 0.8, dest - y, # length_includes_head=True, + head_width=0.1, head_length=0.1, shape='full', overhang=0, + fc='k', ec='k') + + + ax.set_xticks(xticks) + ax.set_xticklabels(xtickslabels) + ax.set_xlim([0,rules_by_axis*model.order+1]) + + plt.tight_layout() + plt.show()
    + + +
    [docs]def draw_sets_on_axis(axis, model, size): + if axis is None: + fig, axis = plt.subplots(nrows=1, ncols=1, figsize=size) + for ct, key in enumerate(model.partitioner.ordered_sets): + fs = model.sets[key] + axis.plot([0, 1, 0], fs.parameters, label=fs.name) + axis.axhline(fs.centroid, c="lightgray", alpha=0.5) + axis.set_xlim([0, len(model.partitioner.ordered_sets)]) + axis.set_xticks(range(0, len(model.partitioner.ordered_sets))) + tmp = [''] + tmp.extend(model.partitioner.ordered_sets) + axis.set_xticklabels(tmp) + axis.set_ylim([model.partitioner.min, model.partitioner.max]) + axis.set_yticks([model.sets[k].centroid for k in model.partitioner.ordered_sets]) + axis.set_yticklabels([str(round(model.sets[k].centroid, 1)) + " - " + k + for k in model.partitioner.ordered_sets])
    + + +current_milli_time = lambda: int(round(time.time() * 1000)) + + +
    [docs]def uniquefilename(name): + if '.' in name: + tmp = name.split('.') + return tmp[0] + str(current_milli_time()) + '.' + tmp[1] + else: + return name + str(current_milli_time())
    + + +
    [docs]def show_and_save_image(fig, file, flag, lgd=None): + """ + Show and image and save on file + + :param fig: Matplotlib Figure object + :param file: filename to save the picture + :param flag: if True the image will be saved + :param lgd: legend + """ + plt.show() + if flag: + if lgd is not None: + fig.savefig(file, additional_artists=lgd,bbox_inches='tight') #bbox_extra_artists=(lgd,), ) + else: + fig.savefig(file) + plt.close(fig)
    + + +
    [docs]def enumerate2(xs, start=0, step=1): + for x in xs: + yield (start, x) + start += step
    + + +
    [docs]def sliding_window(data, windowsize, train=0.8, inc=0.1, **kwargs): + """ + Sliding window method of cross validation for time series + + :param data: the entire dataset + :param windowsize: window size + :param train: percentual of the window size will be used for training the models + :param inc: percentual of data used for slide the window + :return: window count, training set, test set + """ + + multivariate = True if isinstance(data, pd.DataFrame) else False + + l = len(data) if not multivariate else len(data.index) + ttrain = int(round(windowsize * train, 0)) + ic = int(round(windowsize * inc, 0)) + + progressbar = kwargs.get('progress', None) + + rng = np.arange(0,l-windowsize+ic,ic) + + if progressbar: + from tqdm import tqdm + rng = tqdm(rng) + + for count in rng: + if count + windowsize > l: + _end = l + else: + _end = count + windowsize + if multivariate: + yield (count, data.iloc[count: count + ttrain], data.iloc[count + ttrain: _end]) + else: + yield (count, data[count : count + ttrain], data[count + ttrain : _end] )
    + + +
    [docs]def persist_obj(obj, file): + """ + Persist an object on filesystem. This function depends on Dill package + + :param obj: object on memory + :param file: file name to store the object + """ + import dill + try: + with open(file, 'wb') as _file: + dill.dump(obj, _file) + except Exception as ex: + print("File {} could not be saved due exception {}".format(file, ex))
    + + +
    [docs]def load_obj(file): + """ + Load to memory an object stored filesystem. This function depends on Dill package + + :param file: file name where the object is stored + :return: object + """ + import dill + with open(file, 'rb') as _file: + obj = dill.load(_file) + return obj
    + + +
    [docs]def persist_env(file): + """ + Persist an entire environment on file. This function depends on Dill package + + :param file: file name to store the environment + """ + import dill + dill.dump_session(file)
    + + +
    [docs]def load_env(file): + import dill + dill.load_session(file)
    + + + +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/common/fts.html b/docs/build/html/_modules/pyFTS/common/fts.html new file mode 100644 index 0000000..6c62349 --- /dev/null +++ b/docs/build/html/_modules/pyFTS/common/fts.html @@ -0,0 +1,750 @@ + + + + + + + + + pyFTS.common.fts — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.common.fts

    +import numpy as np
    +import pandas as pd
    +from pyFTS.common import FuzzySet, SortedCollection, tree, Util
    +
    +
    +
    [docs]class FTS(object): + """ + Fuzzy Time Series object model + """ + def __init__(self, **kwargs): + """ + Create a Fuzzy Time Series model + """ + self.flrgs = {} + """The list of Fuzzy Logical Relationship Groups - FLRG""" + self.order = kwargs.get('order',1) + """A integer with the model order (number of past lags are used on forecasting)""" + self.shortname = kwargs.get('name',"") + """A string with a short name or alias for the model""" + self.name = kwargs.get('name',"") + """A string with the model name""" + self.detail = kwargs.get('name',"") + """A string with the model detailed information""" + self.is_wrapper = False + """Indicates that this model is a wrapper for other(s) method(s)""" + self.is_high_order = False + """A boolean value indicating if the model support orders greater than 1, default: False""" + self.min_order = 1 + """In high order models, this integer value indicates the minimal order supported for the model, default: 1""" + self.has_seasonality = False + """A boolean value indicating if the model supports seasonal indexers, default: False""" + self.has_point_forecasting = True + """A boolean value indicating if the model supports point forecasting, default: True""" + self.has_interval_forecasting = False + """A boolean value indicating if the model supports interval forecasting, default: False""" + self.has_probability_forecasting = False + """A boolean value indicating if the model support probabilistic forecasting, default: False""" + self.is_multivariate = False + """A boolean value indicating if the model support multivariate time series (Pandas DataFrame), default: False""" + self.is_clustered = False + """A boolean value indicating if the model support multivariate time series (Pandas DataFrame), but works like + a monovariate method, default: False""" + self.dump = False + self.transformations = [] + """A list with the data transformations (common.Transformations) applied on model pre and post processing, default: []""" + self.transformations_param = [] + """A list with the specific parameters for each data transformation""" + self.original_max = 0 + """A float with the upper limit of the Universe of Discourse, the maximal value found on training data""" + self.original_min = 0 + """A float with the lower limit of the Universe of Discourse, the minimal value found on training data""" + self.partitioner = kwargs.get("partitioner", None) + """A pyFTS.partitioners.Partitioner object with the Universe of Discourse partitioner used on the model. This is a mandatory dependecy. """ + if self.partitioner != None: + self.sets = self.partitioner.sets + self.auto_update = False + """A boolean value indicating that model is incremental""" + self.benchmark_only = False + """A boolean value indicating a façade for external (non-FTS) model used on benchmarks or ensembles.""" + self.indexer = kwargs.get("indexer", None) + """An pyFTS.models.seasonal.Indexer object for indexing the time series data""" + self.uod_clip = kwargs.get("uod_clip", True) + """Flag indicating if the test data will be clipped inside the training Universe of Discourse""" + self.alpha_cut = kwargs.get("alpha_cut", 0.0) + """A float with the minimal membership to be considered on fuzzyfication process""" + self.lags = kwargs.get("lags", None) + """The list of lag indexes for high order models""" + self.max_lag = self.order + """A integer indicating the largest lag used by the model. This value also indicates the minimum number of past lags + needed to forecast a single step ahead""" + self.log = pd.DataFrame([],columns=["Datetime","Operation","Value"]) + """""" + self.is_time_variant = False + """A boolean value indicating if this model is time variant""" + self.standard_horizon = kwargs.get("standard_horizon", 1) + """Standard forecasting horizon (Default: 1)""" + + +
    [docs] def fuzzy(self, data): + """ + Fuzzify a data point + + :param data: data point + :return: maximum membership fuzzy set + """ + best = {"fuzzyset": "", "membership": 0.0} + + for f in self.partitioner.sets: + fset = self.partitioner.sets[f] + if best["membership"] <= fset.membership(data): + best["fuzzyset"] = fset.name + best["membership"] = fset.membership(data) + + return best
    + +
    [docs] def clip_uod(self, ndata): + if self.uod_clip and self.partitioner is not None: + ndata = np.clip(ndata, self.partitioner.min, self.partitioner.max) + elif self.uod_clip: + ndata = np.clip(ndata, self.original_min, self.original_max) + return ndata
    + +
    [docs] def predict(self, data, **kwargs): + """ + Forecast using trained model + + :param data: time series with minimal length to the order of the model + + :keyword type: the forecasting type, one of these values: point(default), interval, distribution or multivariate. + :keyword steps_ahead: The forecasting path H, i. e., tell the model to forecast from t+1 to t+H. + :keyword step_to: The forecasting step H, i. e., tell the model to forecast to t+H for each input sample + :keyword start_at: in the multi step forecasting, the index of the data where to start forecasting (default value: 0) + :keyword distributed: boolean, indicate if the forecasting procedure will be distributed in a dispy cluster (default value: False) + :keyword nodes: a list with the dispy cluster nodes addresses + :keyword explain: try to explain, step by step, the one-step-ahead point forecasting result given the input data. (default value: False) + :keyword generators: for multivariate methods on multi step ahead forecasting, generators is a dict where the keys + are the dataframe columun names (except the target_variable) and the values are lambda functions that + accept one value (the actual value of the variable) and return the next value or trained FTS + models that accept the actual values and forecast new ones. + + :return: a numpy array with the forecasted data + """ + import copy + + kw = copy.deepcopy(kwargs) + + if self.is_multivariate: + ndata = data + else: + ndata = self.apply_transformations(data) + + ndata = self.clip_uod(ndata) + + if 'distributed' in kw: + distributed = kw.pop('distributed') + else: + distributed = False + + if 'type' in kw: + type = kw.pop("type") + else: + type = 'point' + + if distributed is None or distributed == False: + + steps_ahead = kw.get("steps_ahead", None) + + step_to = kw.get("step_to", None) + + if (steps_ahead == None and step_to == None) or (steps_ahead == 1 or step_to ==1): + if type == 'point': + ret = self.forecast(ndata, **kw) + elif type == 'interval': + ret = self.forecast_interval(ndata, **kw) + elif type == 'distribution': + ret = self.forecast_distribution(ndata, **kw) + elif type == 'multivariate': + ret = self.forecast_multivariate(ndata, **kw) + elif step_to == None and steps_ahead > 1: + if type == 'point': + ret = self.forecast_ahead(ndata, steps_ahead, **kw) + elif type == 'interval': + ret = self.forecast_ahead_interval(ndata, steps_ahead, **kw) + elif type == 'distribution': + ret = self.forecast_ahead_distribution(ndata, steps_ahead, **kw) + elif type == 'multivariate': + ret = self.forecast_ahead_multivariate(ndata, steps_ahead, **kw) + elif step_to > 1: + if type == 'point': + ret = self.forecast_step(ndata, step_to, **kw) + else: + raise NotImplementedError('This model only perform point step ahead forecasts!') + + if not ['point', 'interval', 'distribution', 'multivariate'].__contains__(type): + raise ValueError('The argument \'type\' has an unknown value.') + + else: + + if distributed == 'dispy': + from pyFTS.distributed import dispy + + nodes = kw.pop("nodes", ['127.0.0.1']) + num_batches = kw.pop('num_batches', 10) + + ret = dispy.distributed_predict(self, kw, nodes, ndata, num_batches, **kw) + + elif distributed == 'spark': + from pyFTS.distributed import spark + + ret = spark.distributed_predict(data=ndata, model=self, **kw) + + if not self.is_multivariate: + kw['type'] = type + ret = self.apply_inverse_transformations(ret, params=[data[self.max_lag - 1:]], **kw) + + if 'statistics' in kw: + kwargs['statistics'] = kw['statistics'] + + return ret
    + +
    [docs] def forecast(self, data, **kwargs): + """ + Point forecast one step ahead + + :param data: time series data with the minimal length equal to the max_lag of the model + :param kwargs: model specific parameters + :return: a list with the forecasted values + """ + raise NotImplementedError('This model do not perform one step ahead point forecasts!')
    + +
    [docs] def forecast_interval(self, data, **kwargs): + """ + Interval forecast one step ahead + + :param data: time series data with the minimal length equal to the max_lag of the model + :param kwargs: model specific parameters + :return: a list with the prediction intervals + """ + raise NotImplementedError('This model do not perform one step ahead interval forecasts!')
    + +
    [docs] def forecast_distribution(self, data, **kwargs): + """ + Probabilistic forecast one step ahead + + :param data: time series data with the minimal length equal to the max_lag of the model + :param kwargs: model specific parameters + :return: a list with probabilistic.ProbabilityDistribution objects representing the forecasted Probability Distributions + """ + raise NotImplementedError('This model do not perform one step ahead distribution forecasts!')
    + +
    [docs] def forecast_multivariate(self, data, **kwargs): + """ + Multivariate forecast one step ahead + + :param data: Pandas dataframe with one column for each variable and with the minimal length equal to the max_lag of the model + :param kwargs: model specific parameters + :return: a Pandas Dataframe object representing the forecasted values for each variable + """ + raise NotImplementedError('This model do not perform one step ahead multivariate forecasts!')
    + + +
    [docs] def forecast_ahead(self, data, steps, **kwargs): + """ + Point forecast from 1 to H steps ahead, where H is given by the steps parameter + + :param data: time series data with the minimal length equal to the max_lag of the model + :param steps: the number of steps ahead to forecast (default: 1) + :keyword start_at: in the multi step forecasting, the index of the data where to start forecasting (default: 0) + :return: a list with the forecasted values + """ + + if len(data) < self.max_lag: + return data + + if isinstance(data, np.ndarray): + data = data.tolist() + + start = kwargs.get('start_at',0) + + ret = data[:start+self.max_lag] + for k in np.arange(start+self.max_lag, steps+start+self.max_lag): + tmp = self.forecast(ret[k-self.max_lag:k], **kwargs) + + if isinstance(tmp,(list, np.ndarray)): + tmp = tmp[-1] + + ret.append(tmp) + data.append(tmp) + + return ret[-steps:]
    + +
    [docs] def forecast_ahead_interval(self, data, steps, **kwargs): + """ + Interval forecast from 1 to H steps ahead, where H is given by the steps parameter + + :param data: time series data with the minimal length equal to the max_lag of the model + :param steps: the number of steps ahead to forecast + :keyword start_at: in the multi step forecasting, the index of the data where to start forecasting (default: 0) + :return: a list with the forecasted intervals + """ + raise NotImplementedError('This model do not perform multi step ahead interval forecasts!')
    + +
    [docs] def forecast_ahead_distribution(self, data, steps, **kwargs): + """ + Probabilistic forecast from 1 to H steps ahead, where H is given by the steps parameter + + :param data: time series data with the minimal length equal to the max_lag of the model + :param steps: the number of steps ahead to forecast + :keyword start_at: in the multi step forecasting, the index of the data where to start forecasting (default: 0) + :return: a list with the forecasted Probability Distributions + """ + raise NotImplementedError('This model do not perform multi step ahead distribution forecasts!')
    + +
    [docs] def forecast_ahead_multivariate(self, data, steps, **kwargs): + """ + Multivariate forecast n step ahead + + :param data: Pandas dataframe with one column for each variable and with the minimal length equal to the max_lag of the model + :param steps: the number of steps ahead to forecast + :keyword start_at: in the multi step forecasting, the index of the data where to start forecasting (default: 0) + :return: a Pandas Dataframe object representing the forecasted values for each variable + """ + raise NotImplementedError('This model do not perform one step ahead multivariate forecasts!')
    + +
    [docs] def forecast_step(self, data, step, **kwargs): + """ + Point forecast for H steps ahead, where H is given by the step parameter + + :param data: time series data with the minimal length equal to the max_lag of the model + :param step: the forecasting horizon (default: 1) + :keyword start_at: in the multi step forecasting, the index of the data where to start forecasting (default: 0) + :return: a list with the forecasted values + """ + + l = len(data) + + ret = [] + + if l < self.max_lag: + return data + + if isinstance(data, np.ndarray): + data = data.tolist() + + start = kwargs.get('start_at',0) + + for k in np.arange(start+self.max_lag, l): + sample = data[k-self.max_lag:k] + tmp = self.forecast_ahead(sample, step, **kwargs) + + if isinstance(tmp,(list, np.ndarray)): + tmp = tmp[-1] + + ret.append(tmp) + + return ret
    + +
    [docs] def train(self, data, **kwargs): + """ + Method specific parameter fitting + + :param data: training time series data + :param kwargs: Method specific parameters + + """ + pass
    + +
    [docs] def fit(self, ndata, **kwargs): + """ + Fit the model's parameters based on the training data. + + :param ndata: training time series data + :param kwargs: + + :keyword num_batches: split the training data in num_batches to save memory during the training process + :keyword save_model: save final model on disk + :keyword batch_save: save the model between each batch + :keyword file_path: path to save the model + :keyword distributed: boolean, indicate if the training procedure will be distributed in a dispy cluster + :keyword nodes: a list with the dispy cluster nodes addresses + + """ + + import datetime, copy + + kw = copy.deepcopy(kwargs) + + if self.is_multivariate: + data = ndata + else: + data = self.apply_transformations(ndata) + + self.original_min = np.nanmin(data) + self.original_max = np.nanmax(data) + + if 'partitioner' in kw: + self.partitioner = kw.pop('partitioner') + + if not self.is_multivariate and not self.is_wrapper and not self.benchmark_only: + if self.partitioner is None: + raise Exception("Fuzzy sets were not provided for the model. Use 'partitioner' parameter. ") + + if 'order' in kw: + self.order = kw.pop('order') + + dump = kw.get('dump', None) + + num_batches = kw.pop('num_batches', None) + + save = kw.get('save_model', False) # save model on disk + + batch_save = kw.get('batch_save', False) #save model between batches + + file_path = kw.get('file_path', None) + + distributed = kw.pop('distributed', False) + + if distributed is not None and distributed: + if num_batches is None: + num_batches = 10 + + if distributed == 'dispy': + from pyFTS.distributed import dispy + nodes = kw.pop('nodes', False) + train_method = kwargs.get('train_method', dispy.simple_model_train) + dispy.distributed_train(self, train_method, nodes, type(self), data, num_batches, {}, + **kw) + elif distributed == 'spark': + from pyFTS.distributed import spark + url = kwargs.get('url', 'spark://127.0.0.1:7077') + app = kwargs.get('app', 'pyFTS') + + spark.distributed_train(self, data, url=url, app=app) + else: + + if dump == 'time': + print("[{0: %H:%M:%S}] Start training".format(datetime.datetime.now())) + + if num_batches is not None and not self.is_wrapper: + n = len(data) + batch_size = int(n / num_batches) + bcount = 1 + + rng = range(self.order, n, batch_size) + + if dump == 'tqdm': + from tqdm import tqdm + + rng = tqdm(rng) + + for ct in rng: + if dump == 'time': + print("[{0: %H:%M:%S}] Starting batch ".format(datetime.datetime.now()) + str(bcount)) + if self.is_multivariate: + mdata = data.iloc[ct - self.order:ct + batch_size] + else: + mdata = data[ct - self.order : ct + batch_size] + + self.train(mdata, **kw) + + if batch_save: + Util.persist_obj(self,file_path) + + if dump == 'time': + print("[{0: %H:%M:%S}] Finish batch ".format(datetime.datetime.now()) + str(bcount)) + + bcount += 1 + + else: + self.train(data, **kw) + + if dump == 'time': + print("[{0: %H:%M:%S}] Finish training".format(datetime.datetime.now())) + + if save: + Util.persist_obj(self, file_path)
    + + +
    [docs] def clone_parameters(self, model): + """ + Import the parameters values from other model + + :param model: a model to clone the parameters + """ + + self.order = model.order + self.partitioner = model.partitioner + self.lags = model.lags + self.shortname = model.shortname + self.name = model.name + self.detail = model.detail + self.is_high_order = model.is_high_order + self.min_order = model.min_order + self.has_seasonality = model.has_seasonality + self.has_point_forecasting = model.has_point_forecasting + self.has_interval_forecasting = model.has_interval_forecasting + self.has_probability_forecasting = model.has_probability_forecasting + self.is_multivariate = model.is_multivariate + self.dump = model.dump + self.transformations = model.transformations + self.transformations_param = model.transformations_param + self.original_max = model.original_max + self.original_min = model.original_min + self.auto_update = model.auto_update + self.benchmark_only = model.benchmark_only + self.indexer = model.indexer
    + +
    [docs] def append_rule(self, flrg): + """ + Append FLRG rule to the model + + :param flrg: rule + :return: + """ + + if flrg.get_key() not in self.flrgs: + self.flrgs[flrg.get_key()] = flrg + else: + if isinstance(flrg.RHS, (list, set)): + for k in flrg.RHS: + self.flrgs[flrg.get_key()].append_rhs(k) + elif isinstance(flrg.RHS, dict): + for key, value in flrg.RHS.items(): + self.flrgs[flrg.get_key()].append_rhs(key, count=value) + else: + self.flrgs[flrg.get_key()].append_rhs(flrg.RHS)
    + +
    [docs] def merge(self, model): + """ + Merge the FLRG rules from other model + + :param model: source model + :return: + """ + + for key, flrg in model.flrgs.items(): + self.append_rule(flrg)
    + +
    [docs] def append_transformation(self, transformation): + if transformation is not None: + self.transformations.append(transformation)
    + +
    [docs] def apply_transformations(self, data, params=None, updateUoD=False, **kwargs): + """ + Apply the data transformations for data preprocessing + + :param data: input data + :param params: transformation parameters + :param updateUoD: + :param kwargs: + :return: preprocessed data + """ + + ndata = data + if updateUoD: + if min(data) < 0: + self.original_min = min(data) * 1.1 + else: + self.original_min = min(data) * 0.9 + + if max(data) > 0: + self.original_max = max(data) * 1.1 + else: + self.original_max = max(data) * 0.9 + + if len(self.transformations) > 0: + if params is None: + params = [ None for k in self.transformations] + + for c, t in enumerate(self.transformations, start=0): + ndata = t.apply(ndata, params[c], ) + + return ndata
    + +
    [docs] def apply_inverse_transformations(self, data, params=None, **kwargs): + """ + Apply the data transformations for data postprocessing + + :param data: input data + :param params: transformation parameters + :param updateUoD: + :param kwargs: + :return: postprocessed data + """ + if len(self.transformations) > 0: + if params is None: + params = [None for k in self.transformations] + + for c, t in enumerate(reversed(self.transformations), start=0): + ndata = t.inverse(data, params[c], **kwargs) + + return ndata + else: + return data
    + +
    [docs] def get_UoD(self): + """ + Returns the interval of the known bounds of the universe of discourse (UoD), i. e., + the known minimum and maximum values of the time series. + + :return: A set with the lower and the upper bounds of the UoD + """ + if self.partitioner is not None: + return (self.partitioner.min, self.partitioner.max) + else: + return (self.original_min, self.original_max)
    + +
    [docs] def offset(self): + """ + Returns the number of lags to skip in the input test data in order to synchronize it with + the forecasted values given by the predict function. This is necessary due to the order of the + model, among other parameters. + + :return: An integer with the number of lags to skip + """ + if self.is_high_order: + return self.max_lag + else: + return 1
    + + def __str__(self): + """ + String representation of the model + + :return: a string containing the name of the model and the learned rules + (if the model was already trained) + """ + + tmp = self.name + ":\n" + if self.partitioner.type == 'common': + for r in sorted(self.flrgs, key=lambda key: self.flrgs[key].get_midpoint(self.partitioner.sets)): + tmp = "{0}{1}\n".format(tmp, str(self.flrgs[r])) + else: + for r in self.flrgs: + tmp = "{0}{1}\n".format(tmp, str(self.flrgs[r])) + return tmp + + def __len__(self): + """ + The length (number of rules) of the model + + :return: number of rules + """ + return len(self.flrgs) + +
    [docs] def len_total(self): + """ + Total length of the model, adding the number of terms in all rules + + :return: + """ + return sum([len(k) for k in self.flrgs])
    + +
    [docs] def reset_calculated_values(self): + """ + Reset all pre-calculated values on the FLRG's + + :return: + """ + + for flrg in self.flrgs.keys(): + self.flrgs[flrg].reset_calculated_values()
    + +
    [docs] def append_log(self,operation, value): + pass
    + + + + + + +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/distributed/dispy.html b/docs/build/html/_modules/pyFTS/distributed/dispy.html new file mode 100644 index 0000000..aac5284 --- /dev/null +++ b/docs/build/html/_modules/pyFTS/distributed/dispy.html @@ -0,0 +1,271 @@ + + + + + + + + + pyFTS.distributed.dispy — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.distributed.dispy

    +import dispy as dispy, dispy.httpd, logging
    +from pyFTS.common import Util
    +import numpy as np
    +
    +
    +
    [docs]def start_dispy_cluster(method, nodes): + """ + Start a new Dispy cluster on 'nodes' to execute the method 'method' + + :param method: function to be executed on each cluster node + :param nodes: list of node names or IP's. + :return: the dispy cluster instance and the http_server for monitoring + """ + + cluster = dispy.JobCluster(method, nodes=nodes, loglevel=logging.DEBUG, ping_interval=1000) + + http_server = dispy.httpd.DispyHTTPServer(cluster) + + return cluster, http_server
    + + +
    [docs]def stop_dispy_cluster(cluster, http_server): + """ + Stop a dispy cluster and http_server + + :param cluster: + :param http_server: + :return: + """ + #cluster.wait() # wait for all jobs to finish + + cluster.print_status() + + http_server.shutdown() # this waits until browser gets all updates + cluster.close()
    + + +
    [docs]def get_number_of_cpus(cluster): + cpus = 0 + for dispy_node in cluster.status().nodes: + cpus += dispy_node.cpus + + return cpus
    + + +
    [docs]def simple_model_train(model, data, parameters): + import time + """ + Cluster function that receives a FTS instance 'model' and train using the 'data' and 'parameters' + + :param model: a FTS instance + :param data: training dataset + :param parameters: parameters for the training process + :return: the trained model + """ + _start = time.time() + model.train(data, **parameters) + _end = time.time() + model.__dict__['training_time'] = _end - _start + return model
    + + +
    [docs]def distributed_train(model, train_method, nodes, fts_method, data, num_batches=10, + train_parameters={}, **kwargs): + import dispy, dispy.httpd, datetime + + batch_save = kwargs.get('batch_save', False) # save model between batches + + batch_save_interval = kwargs.get('batch_save_interval', 1) + + file_path = kwargs.get('file_path', None) + + cluster, http_server = start_dispy_cluster(train_method, nodes) + + print("[{0: %H:%M:%S}] Distrituted Train Started with {1} CPU's" + .format(datetime.datetime.now(), get_number_of_cpus(cluster))) + + jobs = [] + n = len(data) + batch_size = int(n / num_batches) + bcount = 1 + for ct in range(model.order, n, batch_size): + if model.is_multivariate: + ndata = data.iloc[ct - model.order:ct + batch_size] + else: + ndata = data[ct - model.order: ct + batch_size] + + tmp_model = fts_method() + + tmp_model.clone_parameters(model) + + job = cluster.submit(tmp_model, ndata, train_parameters) + job.id = bcount # associate an ID to identify jobs (if needed later) + jobs.append(job) + + bcount += 1 + + for job in jobs: + print("[{0: %H:%M:%S}] Processing batch ".format(datetime.datetime.now()) + str(job.id)) + tmp = job() + if job.status == dispy.DispyJob.Finished and tmp is not None: + model.merge(tmp) + if 'training_time' not in model.__dict__: + model.__dict__['training_time'] = [] + model.__dict__['training_time'].append(tmp.__dict__['training_time']) + + if batch_save and (job.id % batch_save_interval) == 0: + Util.persist_obj(model, file_path) + + else: + print(job.exception) + print(job.stdout) + + print("[{0: %H:%M:%S}] Finished batch ".format(datetime.datetime.now()) + str(job.id)) + + print("[{0: %H:%M:%S}] Distrituted Train Finished".format(datetime.datetime.now())) + + stop_dispy_cluster(cluster, http_server) + + return model
    + + +
    [docs]def simple_model_predict(model, data, parameters): + import time + _start = time.time() + forecasts = model.predict(data, **parameters) + _stop = time.time() + return forecasts, _stop - _start
    + + +
    [docs]def distributed_predict(model, parameters, nodes, data, num_batches, **kwargs): + import dispy, dispy.httpd + + cluster, http_server = start_dispy_cluster(simple_model_predict, nodes) + + jobs = [] + n = len(data) + batch_size = int(n / num_batches) + bcount = 1 + for ct in range(model.order, n, batch_size): + if model.is_multivariate: + ndata = data.iloc[ct - model.order:ct + batch_size] + else: + ndata = data[ct - model.order: ct + batch_size] + + job = cluster.submit(model, ndata, parameters) + job.id = bcount # associate an ID to identify jobs (if needed later) + jobs.append(job) + + bcount += 1 + + ret = [] + + for job in jobs: + tmp = job() + if job.status == dispy.DispyJob.Finished and tmp is not None: + if job.id < batch_size: + ret.extend(tmp[0][:-1]) + else: + ret.extend(tmp[0]) + + if 'forecasting_time' not in model.__dict__: + model.__dict__['forecasting_time'] = [] + model.__dict__['forecasting_time'].append(tmp[1]) + + else: + print(job.exception) + print(job.stdout) + + stop_dispy_cluster(cluster, http_server) + + return ret
    +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/hyperparam/Evolutionary.html b/docs/build/html/_modules/pyFTS/hyperparam/Evolutionary.html new file mode 100644 index 0000000..9b4bc45 --- /dev/null +++ b/docs/build/html/_modules/pyFTS/hyperparam/Evolutionary.html @@ -0,0 +1,725 @@ + + + + + + + + + pyFTS.hyperparam.Evolutionary — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.hyperparam.Evolutionary

    +"""
    +Distributed Evolutionary Hyperparameter Optimization (DEHO) for MVFTS
    +"""
    +
    +import numpy as np
    +import pandas as pd
    +import math
    +import time
    +from functools import reduce
    +from operator import itemgetter
    +
    +import random
    +from pyFTS.common import Util
    +from pyFTS.benchmarks import Measures
    +from pyFTS.partitioners import Grid, Entropy  # , Huarng
    +from pyFTS.common import Membership
    +from pyFTS.models import hofts, ifts, pwfts
    +from pyFTS.hyperparam import Util as hUtil
    +
    +
    +__measures = ['f1', 'f2', 'rmse', 'size']
    +
    +
    +
    [docs]def genotype(mf, npart, partitioner, order, alpha, lags, f1, f2): + """ + Create the individual genotype + + :param mf: membership function + :param npart: number of partitions + :param partitioner: partitioner method + :param order: model order + :param alpha: alpha-cut + :param lags: array with lag indexes + :param f1: accuracy fitness value + :param f2: parsimony fitness value + :return: the genotype, a dictionary with all hyperparameters + """ + ind = dict(mf=mf, npart=npart, partitioner=partitioner, order=order, + alpha=alpha, lags=lags, f1=f1, f2=f2) + return ind
    + + +
    [docs]def random_genotype(**kwargs): + """ + Create random genotype + + :return: the genotype, a dictionary with all hyperparameters + """ + order = random.randint(1, 3) + lags = [k for k in np.arange(1, order+1)] + return genotype( + random.randint(1, 4), + random.randint(10, 100), + random.randint(1, 2), + order, + random.uniform(0, .5), + lags, + None, + None + )
    + + +# +
    [docs]def initial_population(n, **kwargs): + """ + Create a random population of size n + + :param n: the size of the population + :return: a list with n random individuals + """ + + create_random_individual = kwargs.get('random_individual', random_genotype) + + pop = [] + for i in range(n): + pop.append(create_random_individual(**kwargs)) + return pop
    + + +
    [docs]def phenotype(individual, train, fts_method, parameters={}, **kwargs): + """ + Instantiate the genotype, creating a fitted model with the genotype hyperparameters + + :param individual: a genotype + :param train: the training dataset + :param fts_method: the FTS method + :param parameters: dict with model specific arguments for fit method. + :return: a fitted FTS model + """ + from pyFTS.models import hofts, ifts, pwfts + + if individual['mf'] == 1: + mf = Membership.trimf + elif individual['mf'] == 2: + mf = Membership.trapmf + elif individual['mf'] == 3 and individual['partitioner'] != 2: + mf = Membership.gaussmf + else: + mf = Membership.trimf + + if individual['partitioner'] == 1: + partitioner = Grid.GridPartitioner(data=train, npart=individual['npart'], func=mf) + elif individual['partitioner'] == 2: + partitioner = Entropy.EntropyPartitioner(data=train, npart=individual['npart'], func=mf) + + model = fts_method(partitioner=partitioner, + lags=individual['lags'], + alpha_cut=individual['alpha'], + order=individual['order']) + + model.fit(train, **parameters) + + return model
    + + +
    [docs]def evaluate(dataset, individual, **kwargs): + """ + Evaluate an individual using a sliding window cross validation over the dataset. + + :param dataset: Evaluation dataset + :param individual: genotype to be tested + :param window_size: The length of scrolling window for train/test on dataset + :param train_rate: The train/test split ([0,1]) + :param increment_rate: The increment of the scrolling window, relative to the window_size ([0,1]) + :param parameters: dict with model specific arguments for fit method. + :return: a tuple (len_lags, rmse) with the parsimony fitness value and the accuracy fitness value + """ + from pyFTS.models import hofts, ifts, pwfts + from pyFTS.common import Util + from pyFTS.benchmarks import Measures + from pyFTS.hyperparam.Evolutionary import phenotype, __measures + import numpy as np + + window_size = kwargs.get('window_size', 800) + train_rate = kwargs.get('train_rate', .8) + increment_rate = kwargs.get('increment_rate', .2) + fts_method = kwargs.get('fts_method', hofts.WeightedHighOrderFTS) + parameters = kwargs.get('parameters',{}) + + if individual['f1'] is not None and individual['f2'] is not None: + return { key: individual[key] for key in __measures } + + errors = [] + lengths = [] + + for count, train, test in Util.sliding_window(dataset, window_size, train=train_rate, inc=increment_rate): + + try: + + model = phenotype(individual, train, fts_method=fts_method, parameters=parameters) + + forecasts = model.predict(test) + + rmse = Measures.rmse(test[model.max_lag:], forecasts[:-1]) + lengths.append(len(model)) + + errors.append(rmse) + + except: + lengths.append(np.nan) + errors.append(np.nan) + + try: + _lags = sum(model.lags) * 100 + + _rmse = np.nanmean(errors) + _len = np.nanmean(lengths) + + f1 = np.nansum([.6 * _rmse, .4 * np.nanstd(errors)]) + f2 = np.nansum([.4 * _len, .6 * _lags]) + + return {'f1': f1, 'f2': f2, 'rmse': _rmse, 'size': _len } + except: + return {'f1': np.inf, 'f2': np.inf, 'rmse': np.inf, 'size': np.inf}
    + + +
    [docs]def tournament(population, objective, **kwargs): + """ + Simple tournament selection strategy. + + :param population: the population + :param objective: the objective to be considered on tournament + :return: + """ + n = len(population) - 1 + + r1 = random.randint(0, n) if n > 2 else 0 + r2 = random.randint(0, n) if n > 2 else 1 + ix = r1 if population[r1][objective] < population[r2][objective] else r2 + return population[ix]
    + + +
    [docs]def double_tournament(population, **kwargs): + """ + Double tournament selection strategy. + + :param population: + :return: + """ + + ancestor1 = tournament(population, 'f1') + ancestor2 = tournament(population, 'f1') + + selected = tournament([ancestor1, ancestor2], 'f2') + + return selected
    + + +
    [docs]def lag_crossover2(best, worst): + """ + Cross over two lag genes + + :param best: best genotype + :param worst: worst genotype + :return: a tuple (order, lags) + """ + order = int(round(.7 * best['order'] + .3 * worst['order'])) + lags = [] + + min_order = min(best['order'], worst['order']) + + max_order = best if best['order'] > min_order else worst + + for k in np.arange(0, order): + if k < min_order: + lags.append(int(round(.7 * best['lags'][k] + .3 * worst['lags'][k]))) + else: + lags.append(max_order['lags'][k]) + + for k in range(1, order): + while lags[k - 1] >= lags[k]: + lags[k] += random.randint(1, 10) + + return order, lags
    + + +
    [docs]def crossover(population, **kwargs): + """ + Crossover operation between two parents + + :param population: the original population + :return: a genotype + """ + import random + + n = len(population) - 1 + + r1, r2 = 0, 0 + while r1 == r2: + r1 = random.randint(0, n) + r2 = random.randint(0, n) + + if population[r1]['f1'] < population[r2]['f1']: + best = population[r1] + worst = population[r2] + else: + best = population[r2] + worst = population[r1] + + npart = int(round(.7 * best['npart'] + .3 * worst['npart'])) + alpha = float(.7 * best['alpha'] + .3 * worst['alpha']) + + rnd = random.uniform(0, 1) + mf = best['mf'] if rnd < .7 else worst['mf'] + + rnd = random.uniform(0, 1) + partitioner = best['partitioner'] if rnd < .7 else worst['partitioner'] + + order, lags = lag_crossover2(best, worst) + + descendent = genotype(mf, npart, partitioner, order, alpha, lags, None, None) + + return descendent
    + + +
    [docs]def mutation_lags(lags, order): + """ + Mutation operation for lags gene + + :param lags: + :param order: + :return: + """ + try: + l = len(lags) + new = [] + for lag in np.arange(order): + if lag < l: + new.append( min(50, max(1, int(lags[lag] + np.random.randint(-5, 5)))) ) + else: + new.append( new[-1] + np.random.randint(1, 5) ) + + if order > 1: + for k in np.arange(1, order): + while new[k] <= new[k - 1]: + new[k] = int(new[k] + np.random.randint(1, 5)) + + return new + except Exception as ex: + print(lags, order, new, lag)
    + + +
    [docs]def mutation(individual, **kwargs): + """ + Mutation operator + + :param individual: an individual genotype + :param pmut: individual probability o + :return: + """ + + individual['npart'] = min(50, max(3, int(individual['npart'] + np.random.normal(0, 4)))) + individual['alpha'] = min(.5, max(0, individual['alpha'] + np.random.normal(0, .5))) + individual['mf'] = random.randint(1, 2) + individual['partitioner'] = random.randint(1, 2) + individual['order'] = min(5, max(1, int(individual['order'] + np.random.normal(0, 1)))) + # Chama a função mutation_lags + individual['lags'] = mutation_lags( individual['lags'], individual['order']) + + individual['f1'] = None + individual['f2'] = None + + return individual
    + + +
    [docs]def elitism(population, new_population, **kwargs): + """ + Elitism operation, always select the best individual of the population and discard the worst + + :param population: + :param new_population: + :return: + """ + population = sorted(population, key=itemgetter('f1')) + best = population[0] + + new_population = sorted(new_population, key=itemgetter('f1')) + if new_population[0]["f1"] > best["f1"]: + new_population.insert(0,best) + elif new_population[0]["f1"] == best["f1"] and new_population[0]["f2"] > best["f2"]: + new_population.insert(0, best) + + return new_population
    + + +
    [docs]def GeneticAlgorithm(dataset, **kwargs): + """ + Genetic algoritm for Distributed Evolutionary Hyperparameter Optimization (DEHO) + + :param dataset: The time series to optimize the FTS + :keyword ngen: An integer value with the maximum number of generations, default value: 30 + :keyword mgen: An integer value with the maximum number of generations without improvement to stop, default value 7 + :keyword npop: An integer value with the population size, default value: 20 + :keyword pcross: A float value between 0 and 1 with the probability of crossover, default: .5 + :keyword psel: A float value between 0 and 1 with the probability of selection, default: .5 + :keyword pmut: A float value between 0 and 1 with the probability of mutation, default: .3 + :keyword fts_method: The FTS method to optimize + :keyword parameters: dict with model specific arguments for fts_method + :keyword elitism: A boolean value indicating if the best individual must always survive to next population + :keyword initial_operator: a function that receives npop and return a random population with size npop + :keyword evalutation_operator: a function that receives a dataset and an individual and return its fitness + :keyword selection_operator: a function that receives the whole population and return a selected individual + :keyword crossover_operator: a function that receives the whole population and return a descendent individual + :keyword mutation_operator: a function that receives one individual and return a changed individual + :keyword window_size: An integer value with the the length of scrolling window for train/test on dataset + :keyword train_rate: A float value between 0 and 1 with the train/test split ([0,1]) + :keyword increment_rate: A float value between 0 and 1 with the the increment of the scrolling window, + relative to the window_size ([0,1]) + :keyword collect_statistics: A boolean value indicating to collect statistics for each generation + :keyword distributed: A value indicating it the execution will be local and sequential (distributed=False), + or parallel and distributed (distributed='dispy' or distributed='spark') + :keyword cluster: If distributed='dispy' the list of cluster nodes, else if distributed='spark' it is the master node + :return: the best genotype + """ + + statistics = [] + + ngen = kwargs.get('ngen',30) + mgen = kwargs.get('mgen', 7) + npop = kwargs.get('npop',20) + psel = kwargs.get('psel', .5) + pcross = kwargs.get('pcross',.5) + pmut = kwargs.get('pmut',.3) + distributed = kwargs.get('distributed', False) + + initial_operator = kwargs.get('initial_operator', initial_population) + evaluation_operator = kwargs.get('evaluation_operator', evaluate) + selection_operator = kwargs.get('selection_operator', double_tournament) + crossover_operator = kwargs.get('crossover_operator', crossover) + mutation_operator = kwargs.get('mutation_operator', mutation) + + _elitism = kwargs.get('elitism', True) + + elitism_operator = kwargs.get('elitism_operator', elitism) + + if distributed == 'dispy': + cluster = kwargs.pop('cluster', None) + + collect_statistics = kwargs.get('collect_statistics', True) + + no_improvement_count = 0 + + new_population = [] + + population = initial_operator(npop, **kwargs) + + last_best = population[0] + best = population[1] + + print("Evaluating initial population {}".format(time.time())) + if not distributed: + for individual in population: + ret = evaluation_operator(dataset, individual, **kwargs) + for key in __measures: + individual[key] = ret[key] + elif distributed=='dispy': + from pyFTS.distributed import dispy as dUtil + import dispy + jobs = [] + for ct, individual in enumerate(population): + job = cluster.submit(dataset, individual, **kwargs) + job.id = ct + jobs.append(job) + for job in jobs: + result = job() + if job.status == dispy.DispyJob.Finished and result is not None: + for key in __measures: + population[job.id][key] = result[key] + else: + print(job.exception) + print(job.stdout) + + for i in range(ngen): + print("GENERATION {} {}".format(i, time.time())) + + generation_statistics = {} + + # Selection + for j in range(int(npop * psel)): + new_population.append(selection_operator(population, **kwargs)) + + # Crossover + new = [] + for j in range(int(npop * pcross)): + new.append(crossover_operator(new_population, **kwargs)) + + new_population.extend(new) + + # Mutation + for ct, individual in enumerate(new_population): + rnd = random.uniform(0, 1) + if rnd < pmut: + new_population[ct] = mutation_operator(individual, **kwargs) + + # Evaluation + if collect_statistics: + stats = {} + for key in __measures: + stats[key] = [] + + if not distributed: + for individual in new_population: + ret = evaluation_operator(dataset, individual, **kwargs) + for key in __measures: + individual[key] = ret[key] + if collect_statistics: stats[key].append(ret[key]) + + elif distributed == 'dispy': + jobs = [] + + for ct, individual in enumerate(new_population): + job = cluster.submit(dataset, individual, **kwargs) + job.id = ct + jobs.append(job) + for job in jobs: + print('job id {}'.format(job.id)) + result = job() + if job.status == dispy.DispyJob.Finished and result is not None: + for key in __measures: + new_population[job.id][key] = result[key] + if collect_statistics: stats[key].append(result[key]) + else: + print(job.exception) + print(job.stdout) + + + if collect_statistics: + mean_stats = {key: np.nanmedian(stats[key]) for key in __measures } + + generation_statistics['population'] = mean_stats + + # Elitism + if _elitism: + population = elitism_operator(population, new_population, **kwargs) + + population = population[:npop] + + new_population = [] + + last_best = best + + best = population[0] + + if collect_statistics: + generation_statistics['best'] = {key: best[key] for key in __measures } + + statistics.append(generation_statistics) + + if last_best['f1'] <= best['f1'] and last_best['f2'] <= best['f2']: + no_improvement_count += 1 + print("WITHOUT IMPROVEMENT {}".format(no_improvement_count)) + pmut += .05 + else: + no_improvement_count = 0 + pcross = kwargs.get('pcross', .5) + pmut = kwargs.get('pmut', .3) + print(best) + + if no_improvement_count == mgen: + break + + return best, statistics
    + + +
    [docs]def process_experiment(fts_method, result, datasetname, conn): + """ + Persist the results of an DEHO execution in sqlite database (best hyperparameters) and json file (generation statistics) + + :param fts_method: + :param result: + :param datasetname: + :param conn: + :return: + """ + + log_result(conn, datasetname, fts_method, result['individual']) + persist_statistics(datasetname, result['statistics']) + return result['individual']
    + + +
    [docs]def persist_statistics(datasetname, statistics): + import json + with open('statistics_{}.json'.format(datasetname), 'w') as file: + file.write(json.dumps(statistics))
    + + +
    [docs]def log_result(conn, datasetname, fts_method, result): + metrics = ['rmse', 'size', 'time'] + for metric in metrics: + record = (datasetname, 'Evolutive', fts_method, None, result['mf'], + result['order'], result['partitioner'], result['npart'], + result['alpha'], str(result['lags']), metric, result[metric]) + + print(record) + + hUtil.insert_hyperparam(record, conn)
    + + +
    [docs]def execute(datasetname, dataset, **kwargs): + """ + Batch execution of Distributed Evolutionary Hyperparameter Optimization (DEHO) for monovariate methods + + :param datasetname: + :param dataset: The time series to optimize the FTS + :keyword file: + :keyword experiments: + :keyword distributed: + :keyword ngen: An integer value with the maximum number of generations, default value: 30 + :keyword mgen: An integer value with the maximum number of generations without improvement to stop, default value 7 + :keyword npop: An integer value with the population size, default value: 20 + :keyword pcross: A float value between 0 and 1 with the probability of crossover, default: .5 + :keyword psel: A float value between 0 and 1 with the probability of selection, default: .5 + :keyword pmut: A float value between 0 and 1 with the probability of mutation, default: .3 + :keyword fts_method: The FTS method to optimize + :keyword parameters: dict with model specific arguments for fts_method + :keyword elitism: A boolean value indicating if the best individual must always survive to next population + :keyword initial_operator: a function that receives npop and return a random population with size npop + :keyword random_individual: create an random genotype + :keyword evalutation_operator: a function that receives a dataset and an individual and return its fitness + :keyword selection_operator: a function that receives the whole population and return a selected individual + :keyword crossover_operator: a function that receives the whole population and return a descendent individual + :keyword mutation_operator: a function that receives one individual and return a changed individual + :keyword window_size: An integer value with the the length of scrolling window for train/test on dataset + :keyword train_rate: A float value between 0 and 1 with the train/test split ([0,1]) + :keyword increment_rate: A float value between 0 and 1 with the the increment of the scrolling window, + relative to the window_size ([0,1]) + :keyword collect_statistics: A boolean value indicating to collect statistics for each generation + :keyword distributed: A value indicating it the execution will be local and sequential (distributed=False), + or parallel and distributed (distributed='dispy' or distributed='spark') + :keyword cluster: If distributed='dispy' the list of cluster nodes, else if distributed='spark' it is the master node + :return: the best genotype + """ + + file = kwargs.get('file', 'hyperparam.db') + + conn = hUtil.open_hyperparam_db(file) + + experiments = kwargs.get('experiments', 30) + + distributed = kwargs.get('distributed', False) + + fts_method = kwargs.get('fts_method', hofts.WeightedHighOrderFTS) + shortname = str(fts_method.__module__).split('.')[-1] + + if distributed == 'dispy': + from pyFTS.distributed import dispy as dUtil + nodes = kwargs.get('nodes', ['127.0.0.1']) + cluster, http_server = dUtil.start_dispy_cluster(evaluate, nodes=nodes) + kwargs['cluster'] = cluster + + ret = [] + for i in np.arange(experiments): + print("Experiment {}".format(i)) + + start = time.time() + ret, statistics = GeneticAlgorithm(dataset, **kwargs) + end = time.time() + ret['time'] = end - start + experiment = {'individual': ret, 'statistics': statistics} + + ret = process_experiment(shortname, experiment, datasetname, conn) + + if distributed == 'dispy': + dUtil.stop_dispy_cluster(cluster, http_server) + + return ret
    +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/hyperparam/GridSearch.html b/docs/build/html/_modules/pyFTS/hyperparam/GridSearch.html new file mode 100644 index 0000000..f052f42 --- /dev/null +++ b/docs/build/html/_modules/pyFTS/hyperparam/GridSearch.html @@ -0,0 +1,272 @@ + + + + + + + + + pyFTS.hyperparam.GridSearch — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.hyperparam.GridSearch

    +
    +from pyFTS.common import Util, Membership
    +from pyFTS.models import hofts
    +from pyFTS.partitioners import Grid, Entropy
    +from pyFTS.benchmarks import Measures
    +from pyFTS.hyperparam import Util as hUtil
    +
    +import numpy as np
    +from itertools import product
    +
    +
    +
    [docs]def dict_individual(mf, partitioner, partitions, order, lags, alpha_cut): + return { + 'mf': mf, + 'partitioner': partitioner, + 'npart': partitions, + 'alpha': alpha_cut, + 'order': order, + 'lags': lags + }
    + + +
    [docs]def cluster_method(individual, dataset, **kwargs): + from pyFTS.common import Util, Membership + from pyFTS.models import hofts + from pyFTS.partitioners import Grid, Entropy + from pyFTS.benchmarks import Measures + import numpy as np + + if individual['mf'] == 1: + mf = Membership.trimf + elif individual['mf'] == 2: + mf = Membership.trapmf + elif individual['mf'] == 3 and individual['partitioner'] != 2: + mf = Membership.gaussmf + else: + mf = Membership.trimf + + window_size = kwargs.get('window_size', 800) + train_rate = kwargs.get('train_rate', .8) + increment_rate = kwargs.get('increment_rate', .2) + parameters = kwargs.get('parameters', {}) + + errors = [] + sizes = [] + + for count, train, test in Util.sliding_window(dataset, window_size, train=train_rate, inc=increment_rate): + + if individual['partitioner'] == 1: + partitioner = Grid.GridPartitioner(data=train, npart=individual['npart'], func=mf) + elif individual['partitioner'] == 2: + npart = individual['npart'] if individual['npart'] > 10 else 10 + partitioner = Entropy.EntropyPartitioner(data=train, npart=npart, func=mf) + + model = hofts.WeightedHighOrderFTS(partitioner=partitioner, + lags=individual['lags'], + alpha_cut=individual['alpha'], + order=individual['order']) + model.fit(train) + + forecasts = model.predict(test) + + #rmse, mape, u = Measures.get_point_statistics(test, model) + rmse = Measures.rmse(test[model.max_lag:], forecasts) + + size = len(model) + + errors.append(rmse) + sizes.append(size) + + return {'parameters': individual, 'rmse': np.nanmean(errors), 'size': np.nanmean(size)}
    + + +
    [docs]def process_jobs(jobs, datasetname, conn): + from pyFTS.distributed import dispy as dUtil + import dispy + for ct, job in enumerate(jobs): + print("Processing job {}".format(ct)) + result = job() + if job.status == dispy.DispyJob.Finished and result is not None: + print("Processing result of {}".format(result)) + + metrics = {'rmse': result['rmse'], 'size': result['size']} + + for metric in metrics.keys(): + + param = result['parameters'] + + record = (datasetname, 'GridSearch', 'WHOFTS', None, param['mf'], + param['order'], param['partitioner'], param['npart'], + param['alpha'], str(param['lags']), metric, metrics[metric]) + + + hUtil.insert_hyperparam(record, conn) + + else: + print(job.exception) + print(job.stdout)
    + + +
    [docs]def execute(hyperparams, datasetname, dataset, **kwargs): + from pyFTS.distributed import dispy as dUtil + import dispy + + nodes = kwargs.get('nodes',['127.0.0.1']) + + individuals = [] + + if 'lags' in hyperparams: + lags = hyperparams.pop('lags') + else: + lags = [k for k in np.arange(50)] + + keys_sorted = [k for k in sorted(hyperparams.keys())] + + index = {} + for k in np.arange(len(keys_sorted)): + index[keys_sorted[k]] = k + + print("Evaluation order: \n {}".format(index)) + + hp_values = [ + [v for v in hyperparams[hp]] + for hp in keys_sorted + ] + + print("Evaluation values: \n {}".format(hp_values)) + + cluster, http_server = dUtil.start_dispy_cluster(cluster_method, nodes=nodes) + file = kwargs.get('file', 'hyperparam.db') + + conn = hUtil.open_hyperparam_db(file) + + for instance in product(*hp_values): + partitions = instance[index['partitions']] + partitioner = instance[index['partitioner']] + mf = instance[index['mf']] + alpha_cut = instance[index['alpha']] + order = instance[index['order']] + count = 0 + for lag1 in lags: # o é o lag1 + _lags = [lag1] + count += 1 + if order > 1: + for lag2 in lags: # o é o lag1 + _lags2 = [lag1, lag1+lag2] + count += 1 + if order > 2: + for lag3 in lags: # o é o lag1 + count += 1 + _lags3 = [lag1, lag1 + lag2, lag1 + lag2+lag3 ] + individuals.append(dict_individual(mf, partitioner, partitions, order, _lags3, alpha_cut)) + else: + individuals.append( + dict_individual(mf, partitioner, partitions, order, _lags2, alpha_cut)) + else: + individuals.append(dict_individual(mf, partitioner, partitions, order, _lags, alpha_cut)) + + if count > 10: + jobs = [] + + for ind in individuals: + print("Testing individual {}".format(ind)) + job = cluster.submit(ind, dataset, **kwargs) + jobs.append(job) + + process_jobs(jobs, datasetname, conn) + + count = 0 + + individuals = [] + + dUtil.stop_dispy_cluster(cluster, http_server)
    +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/models/chen.html b/docs/build/html/_modules/pyFTS/models/chen.html new file mode 100644 index 0000000..5bf3e9f --- /dev/null +++ b/docs/build/html/_modules/pyFTS/models/chen.html @@ -0,0 +1,189 @@ + + + + + + + + + pyFTS.models.chen — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.models.chen

    +"""
    +First Order Conventional Fuzzy Time Series by Chen (1996)
    +
    +S.-M. Chen, “Forecasting enrollments based on fuzzy time series,” Fuzzy Sets Syst., vol. 81, no. 3, pp. 311–319, 1996.
    +"""
    +
    +import numpy as np
    +from pyFTS.common import FuzzySet, FLR, fts, flrg
    +
    +
    +
    [docs]class ConventionalFLRG(flrg.FLRG): + """First Order Conventional Fuzzy Logical Relationship Group""" + def __init__(self, LHS, **kwargs): + super(ConventionalFLRG, self).__init__(1, **kwargs) + self.LHS = LHS + self.RHS = set() + +
    [docs] def get_key(self, sets): + return sets[self.LHS].name
    + +
    [docs] def append_rhs(self, c, **kwargs): + self.RHS.add(c)
    + + def __str__(self): + tmp = str(self.LHS) + " -> " + tmp2 = "" + for c in sorted(self.RHS, key=lambda s: s): + if len(tmp2) > 0: + tmp2 = tmp2 + "," + tmp2 = tmp2 + str(c) + return tmp + tmp2
    + + +
    [docs]class ConventionalFTS(fts.FTS): + """Conventional Fuzzy Time Series""" + def __init__(self, **kwargs): + super(ConventionalFTS, self).__init__(order=1, **kwargs) + self.name = "Conventional FTS" + self.detail = "Chen" + self.shortname = "CFTS" + self.flrgs = {} + +
    [docs] def generate_flrg(self, flrs): + for flr in flrs: + if flr.LHS in self.flrgs: + self.flrgs[flr.LHS].append_rhs(flr.RHS) + else: + self.flrgs[flr.LHS] = ConventionalFLRG(flr.LHS) + self.flrgs[flr.LHS].append_rhs(flr.RHS)
    + +
    [docs] def train(self, data, **kwargs): + + tmpdata = self.partitioner.fuzzyfy(data, method='maximum', mode='sets') + flrs = FLR.generate_non_recurrent_flrs(tmpdata, steps=self.standard_horizon) + self.generate_flrg(flrs)
    + +
    [docs] def forecast(self, ndata, **kwargs): + + explain = kwargs.get('explain',False) + + l = len(ndata) if not explain else 1 + + ret = [] + + for k in np.arange(0, l): + + actual = FuzzySet.get_maximum_membership_fuzzyset(ndata[k], self.partitioner.sets) + + if explain: + print("Fuzzyfication:\n\n {} -> {} \n".format(ndata[k], actual.name)) + + if actual.name not in self.flrgs: + ret.append(actual.centroid) + + if explain: + print("Rules:\n\n {} -> {} (Naïve)\t Midpoint: {} \n\n".format(actual.name, actual.name,actual.centroid)) + + else: + _flrg = self.flrgs[actual.name] + + mp = _flrg.get_midpoint(self.partitioner.sets) + + ret.append(mp) + + if explain: + print("Rules:\n\n {} \t Midpoint: {} \n".format(str(_flrg), mp)) + + print("Deffuzyfied value: {} \n".format(mp)) + + return ret
    +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/models/cheng.html b/docs/build/html/_modules/pyFTS/models/cheng.html new file mode 100644 index 0000000..3462e63 --- /dev/null +++ b/docs/build/html/_modules/pyFTS/models/cheng.html @@ -0,0 +1,160 @@ + + + + + + + + + pyFTS.models.cheng — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.models.cheng

    +"""
    +Trend Weighted Fuzzy Time Series by Cheng, Chen and Wu (2009)
    +
    +C.-H. Cheng, Y.-S. Chen, and Y.-L. Wu, “Forecasting innovation diffusion of products using trend-weighted fuzzy time-series model,” 
    +Expert Syst. Appl., vol. 36, no. 2, pp. 1826–1832, 2009.
    +"""
    +
    +import numpy as np
    +from pyFTS.common import FuzzySet, FLR, fts
    +from pyFTS.models import yu
    +
    +
    +
    [docs]class TrendWeightedFLRG(yu.WeightedFLRG): + """ + First Order Trend Weighted Fuzzy Logical Relationship Group + """ + def __init__(self, LHS, **kwargs): + super(TrendWeightedFLRG, self).__init__(LHS, **kwargs) + self.w = None + +
    [docs] def weights(self, sets): + if self.w is None: + count_nochange = 0.0 + count_up = 0.0 + count_down = 0.0 + weights = [] + + for c in self.RHS: + tmp = 0 + if sets[self.LHS].centroid == sets[c].centroid: + count_nochange += 1.0 + tmp = count_nochange + elif sets[self.LHS].centroid > sets[c].centroid: + count_down += 1.0 + tmp = count_down + else: + count_up += 1.0 + tmp = count_up + weights.append(tmp) + + tot = sum(weights) + self.w = np.array([k / tot for k in weights]) + return self.w
    + + +
    [docs]class TrendWeightedFTS(yu.WeightedFTS): + """First Order Trend Weighted Fuzzy Time Series""" + def __init__(self, **kwargs): + super(TrendWeightedFTS, self).__init__(**kwargs) + self.shortname = "TWFTS" + self.name = "Trend Weighted FTS" + self.detail = "Cheng" + self.is_high_order = False + +
    [docs] def generate_FLRG(self, flrs): + for flr in flrs: + if flr.LHS in self.flrgs: + self.flrgs[flr.LHS].append_rhs(flr.RHS) + else: + self.flrgs[flr.LHS] = TrendWeightedFLRG(flr.LHS) + self.flrgs[flr.LHS].append_rhs(flr.RHS)
    +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/models/ensemble/ensemble.html b/docs/build/html/_modules/pyFTS/models/ensemble/ensemble.html new file mode 100644 index 0000000..0a424c9 --- /dev/null +++ b/docs/build/html/_modules/pyFTS/models/ensemble/ensemble.html @@ -0,0 +1,453 @@ + + + + + + + + + pyFTS.models.ensemble.ensemble — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.models.ensemble.ensemble

    +"""
    +EnsembleFTS wraps several FTS methods to ensemble their forecasts, providing point,
    +interval and probabilistic forecasting.
    +
    +Silva, P. C. L et al. Probabilistic Forecasting with Seasonal Ensemble Fuzzy Time-Series
    +XIII Brazilian Congress on Computational Intelligence, 2017. Rio de Janeiro, Brazil.
    +"""
    +
    +
    +import numpy as np
    +import pandas as pd
    +from pyFTS.common import SortedCollection, fts, tree
    +from pyFTS.models import chen, cheng, hofts, hwang, ismailefendi, sadaei, song, yu
    +from pyFTS.probabilistic import ProbabilityDistribution
    +from pyFTS.partitioners import Grid
    +import scipy.stats as st
    +from itertools import product
    +
    +
    +
    [docs]def sampler(data, quantiles, bounds=False): + ret = [] + for qt in quantiles: + ret.append(np.nanpercentile(data, q=qt * 100)) + if bounds: + ret.insert(0, min(data)) + ret.append(max(data)) + return ret
    + + +
    [docs]class EnsembleFTS(fts.FTS): + """ + Ensemble FTS + """ + def __init__(self, **kwargs): + super(EnsembleFTS, self).__init__(**kwargs) + self.shortname = "EnsembleFTS" + self.name = "Ensemble FTS" + self.flrgs = {} + self.is_wrapper = True + self.has_point_forecasting = True + self.has_interval_forecasting = True + self.has_probability_forecasting = True + self.is_high_order = True + self.models = [] + """A list of FTS models, the ensemble components""" + self.parameters = [] + """A list with the parameters for each component model""" + self.alpha = kwargs.get("alpha", 0.05) + """The quantiles """ + self.point_method = kwargs.get('point_method', 'mean') + """The method used to mix the several model's forecasts into a unique point forecast. Options: mean, median, quantile, exponential""" + self.interval_method = kwargs.get('interval_method', 'quantile') + """The method used to mix the several model's forecasts into a interval forecast. Options: quantile, extremum, normal""" + +
    [docs] def append_model(self, model): + """ + Append a new trained model to the ensemble + + :param model: FTS model + + """ + self.models.append(model) + if model.order > self.order: + self.order = model.order + + if model.is_multivariate: + self.is_multivariate = True + + if model.has_seasonality: + self.has_seasonality = True + + if model.original_min < self.original_min: + self.original_min = model.original_min + elif model.original_max > self.original_max: + self.original_max = model.original_max
    + + +
    [docs] def get_UoD(self): + return [self.original_min, self.original_max]
    + +
    [docs] def train(self, data, **kwargs): + pass
    + +
    [docs] def get_models_forecasts(self,data): + tmp = [] + for model in self.models: + if model.is_multivariate or model.has_seasonality: + forecast = model.forecast(data) + else: + + if isinstance(data, pd.DataFrame) and self.indexer is not None: + data = self.indexer.get_data(data) + + sample = data[-model.order:] + forecast = model.predict(sample) + if isinstance(forecast, (list,np.ndarray)) and len(forecast) > 0: + forecast = forecast[-1] + elif isinstance(forecast, (list,np.ndarray)) and len(forecast) == 0: + forecast = np.nan + if isinstance(forecast, list): + tmp.extend(forecast) + else: + tmp.append(forecast) + return tmp
    + +
    [docs] def get_point(self,forecasts, **kwargs): + if self.point_method == 'mean': + ret = np.nanmean(forecasts) + elif self.point_method == 'median': + ret = np.nanpercentile(forecasts, 50) + elif self.point_method == 'quantile': + alpha = kwargs.get("alpha",0.05) + ret = np.nanpercentile(forecasts, alpha*100) + elif self.point_method == 'exponential': + l = len(self.models) + if l == 1: + return forecasts[0] + w = np.array([np.exp(-(l - k)) for k in range(l)]) + w = w / np.nansum(w) + ret = np.nansum([w[k] * forecasts[k] for k in range(l)]) + + return ret
    + +
    [docs] def get_interval(self, forecasts): + ret = [] + if self.interval_method == 'extremum': + ret.append([min(forecasts), max(forecasts)]) + elif self.interval_method == 'quantile': + qt_lo = np.nanpercentile(forecasts, q=self.alpha * 100) + qt_up = np.nanpercentile(forecasts, q=(1-self.alpha) * 100) + ret.append([qt_lo, qt_up]) + elif self.interval_method == 'normal': + mu = np.nanmean(forecasts) + sigma = np.sqrt(np.nanvar(forecasts)) + ret.append(mu + st.norm.ppf(self.alpha) * sigma) + ret.append(mu + st.norm.ppf(1 - self.alpha) * sigma) + + return ret
    + +
    [docs] def get_distribution_interquantile(self,forecasts, alpha): + size = len(forecasts) + qt_lower = int(np.ceil(size * alpha)) - 1 + qt_upper = int(np.ceil(size * (1- alpha))) - 1 + + ret = sorted(forecasts)[qt_lower : qt_upper] + + return ret
    + +
    [docs] def forecast(self, data, **kwargs): + + if "method" in kwargs: + self.point_method = kwargs.get('method','mean') + + l = len(data) + ret = [] + + for k in np.arange(self.order, l+1): + sample = data[k - self.max_lag : k] + tmp = self.get_models_forecasts(sample) + point = self.get_point(tmp) + ret.append(point) + + return ret
    + +
    [docs] def forecast_interval(self, data, **kwargs): + + if "method" in kwargs: + self.interval_method = kwargs.get('method','quantile') + + self.alpha = kwargs.get('alpha', self.alpha) + + l = len(data) + + ret = [] + + for k in np.arange(self.order, l+1): + sample = data[k - self.order : k] + tmp = self.get_models_forecasts(sample) + interval = self.get_interval(tmp) + if len(interval) == 1: + interval = interval[-1] + ret.append(interval) + + return ret
    + +
    [docs] def forecast_ahead_interval(self, data, steps, **kwargs): + + if 'method' in kwargs: + self.interval_method = kwargs.get('method','quantile') + + self.alpha = kwargs.get('alpha', self.alpha) + + ret = [] + + start = kwargs.get('start_at', self.order) + + sample = [[k] for k in data[start: start+self.order]] + + for k in np.arange(self.order, steps + self.order): + forecasts = [] + + lags = [] + for i in np.arange(0, self.order): + lags.append(sample[i - self.order]) + + # Trace the possible paths + for path in product(*lags): + forecasts.extend(self.get_models_forecasts(path)) + + sample.append(sampler(forecasts, np.arange(.1, 1, 0.1), bounds=True)) + + interval = self.get_interval(forecasts) + + if len(interval) == 1: + interval = interval[0] + + ret.append(interval) + + return ret[-steps:]
    + +
    [docs] def forecast_distribution(self, data, **kwargs): + ret = [] + + smooth = kwargs.get("smooth", "KDE") + alpha = kwargs.get("alpha", None) + + uod = self.get_UoD() + + for k in np.arange(self.order, len(data)): + + sample = data[k-self.order : k] + + forecasts = self.get_models_forecasts(sample) + + if alpha is None: + forecasts = np.ravel(forecasts).tolist() + else: + forecasts = self.get_distribution_interquantile(np.ravel(forecasts).tolist(), alpha) + + dist = ProbabilityDistribution.ProbabilityDistribution(smooth, uod=uod, data=forecasts, + name="", **kwargs) + + ret.append(dist) + + return ret
    + +
    [docs] def forecast_ahead_distribution(self, data, steps, **kwargs): + if 'method' in kwargs: + self.point_method = kwargs.get('method','mean') + + smooth = kwargs.get("smooth", "histogram") + alpha = kwargs.get("alpha", None) + + ret = [] + + start = kwargs.get('start_at', self.order) + + uod = self.get_UoD() + + sample = [[k] for k in data[start: start+self.order]] + + for k in np.arange(self.order, steps+self.order): + forecasts = [] + + lags = [] + for i in np.arange(0, self.order): + lags.append(sample[i - self.order]) + + # Trace the possible paths + for path in product(*lags): + forecasts.extend(self.get_models_forecasts(path)) + + sample.append(sampler(forecasts, np.arange(.1, 1, 0.1), bounds=True)) + + if alpha is None: + forecasts = np.ravel(forecasts).tolist() + else: + forecasts = self.get_distribution_interquantile(np.ravel(forecasts).tolist(), alpha) + + dist = ProbabilityDistribution.ProbabilityDistribution(smooth, uod=uod, data=forecasts, + name="", **kwargs) + + ret.append(dist) + + return ret[-steps:]
    + + +
    [docs]class SimpleEnsembleFTS(EnsembleFTS): + ''' + An homogeneous FTS method ensemble with variations on partitionings and orders. + ''' + def __init__(self, **kwargs): + super(SimpleEnsembleFTS, self).__init__(**kwargs) + self.method = kwargs.get('fts_method', hofts.WeightedHighOrderFTS) + """FTS method class that will be used on internal models""" + self.partitioner_method = kwargs.get('partitioner_method', Grid.GridPartitioner) + """UoD partitioner class that will be used on internal methods""" + self.partitions = kwargs.get('partitions', np.arange(15,35,10)) + """Possible variations of number of partitions on internal models""" + self.orders = kwargs.get('orders', [1,2,3]) + """Possible variations of order on internal models""" + self.uod_clip = False + + self.shortname = kwargs.get('name', 'EnsembleFTS-' + str(self.method.__module__).split('.')[-1]) + +
    [docs] def train(self, data, **kwargs): + for k in self.partitions: + fs = self.partitioner_method(data=data, npart=k) + + for order in self.orders: + tmp = self.method(partitioner=fs, order=order) + + tmp.fit(data) + + self.append_model(tmp)
    + + +
    [docs]class AllMethodEnsembleFTS(EnsembleFTS): + """ + Creates an EnsembleFTS with all point forecast methods, sharing the same partitioner + """ + def __init__(self, **kwargs): + super(AllMethodEnsembleFTS, self).__init__(**kwargs) + self.min_order = 3 + self.shortname ="Ensemble FTS" + +
    [docs] def set_transformations(self, model): + for t in self.transformations: + model.append_transformation(t)
    + +
    [docs] def train(self, data, **kwargs): + fo_methods = [song.ConventionalFTS, chen.ConventionalFTS, yu.WeightedFTS, cheng.TrendWeightedFTS, + sadaei.ExponentialyWeightedFTS, ismailefendi.ImprovedWeightedFTS] + + ho_methods = [hofts.HighOrderFTS, hwang.HighOrderFTS] + + for method in fo_methods: + model = method(partitioner=self.partitioner) + self.set_transformations(model) + model.fit(data, **kwargs) + self.append_model(model) + + for method in ho_methods: + for o in np.arange(1, self.order+1): + model = method(partitioner=self.partitioner) + if model.min_order >= o: + model.order = o + self.set_transformations(model) + model.fit(data, **kwargs) + self.append_model(model)
    + + + + +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/models/ensemble/multiseasonal.html b/docs/build/html/_modules/pyFTS/models/ensemble/multiseasonal.html new file mode 100644 index 0000000..f378cc9 --- /dev/null +++ b/docs/build/html/_modules/pyFTS/models/ensemble/multiseasonal.html @@ -0,0 +1,192 @@ + + + + + + + + + pyFTS.models.ensemble.multiseasonal — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.models.ensemble.multiseasonal

    +"""
    +Silva, P. C. L et al. Probabilistic Forecasting with Seasonal Ensemble Fuzzy Time-Series
    +XIII Brazilian Congress on Computational Intelligence, 2017. Rio de Janeiro, Brazil.
    +"""
    +
    +import numpy as np
    +from pyFTS.common import Util as cUtil
    +from pyFTS.models.ensemble import ensemble
    +from pyFTS.models.seasonal import cmsfts
    +from pyFTS.probabilistic import ProbabilityDistribution
    +from copy import deepcopy
    +from joblib import Parallel, delayed
    +import multiprocessing
    +
    +
    +
    [docs]def train_individual_model(partitioner, train_data, indexer): + pttr = str(partitioner.__module__).split('.')[-1] + diff = "_diff" if partitioner.transformation is not None else "" + _key = "msfts_" + pttr + str(partitioner.partitions) + diff + "_" + indexer.name + + print(_key) + + model = cmsfts.ContextualMultiSeasonalFTS(_key, indexer=indexer) + model.append_transformation(partitioner.transformation) + model.train(train_data, partitioner.sets, order=1) + + cUtil.persist_obj(model, "models/"+_key+".pkl") + + return model
    + + +
    [docs]class SeasonalEnsembleFTS(ensemble.EnsembleFTS): + def __init__(self, name, **kwargs): + super(SeasonalEnsembleFTS, self).__init__(name="Seasonal Ensemble FTS", **kwargs) + self.min_order = 1 + self.indexers = [] + self.partitioners = [] + self.is_multivariate = True + self.has_seasonality = True + self.has_probability_forecasting = True + +
    [docs] def update_uod(self, data): + self.original_max = max(self.indexer.get_data(data)) + self.original_min = min(self.indexer.get_data(data))
    + +
    [docs] def train(self, data, **kwargs): + self.original_max = max(self.indexer.get_data(data)) + self.original_min = min(self.indexer.get_data(data)) + + num_cores = multiprocessing.cpu_count() + + pool = {} + count = 0 + for ix in self.indexers: + for pt in self.partitioners: + pool[count] = {'ix': ix, 'pt': pt} + count += 1 + + results = Parallel(n_jobs=num_cores)( + delayed(train_individual_model)(deepcopy(pool[m]['pt']), data, deepcopy(pool[m]['ix'])) + for m in pool.keys()) + + for tmp in results: + self.append_model(tmp) + + cUtil.persist_obj(self, "models/"+self.name+".pkl")
    + +
    [docs] def forecast_distribution(self, data, **kwargs): + + ret = [] + + smooth = kwargs.get("smooth", "KDE") + alpha = kwargs.get("alpha", None) + + uod = self.get_UoD() + + for k in data.index: + + tmp = self.get_models_forecasts(data.ix[k]) + + if alpha is None: + tmp = np.ravel(tmp).tolist() + else: + tmp = self.get_distribution_interquantile( np.ravel(tmp).tolist(), alpha) + + name = str(self.indexer.get_index(data.ix[k])) + + dist = ProbabilityDistribution.ProbabilityDistribution(smooth, uod=uod, data=tmp, + name=name, **kwargs) + + ret.append(dist) + + return ret
    +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/models/hofts.html b/docs/build/html/_modules/pyFTS/models/hofts.html new file mode 100644 index 0000000..3612789 --- /dev/null +++ b/docs/build/html/_modules/pyFTS/models/hofts.html @@ -0,0 +1,395 @@ + + + + + + + + + pyFTS.models.hofts — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.models.hofts

    +"""
    +High Order FTS
    +
    +Severiano, S. A. Jr; Silva, P. C. L.; Sadaei, H. J.; Guimarães, F. G. Very Short-term Solar Forecasting
    +using Fuzzy Time Series. 2017 IEEE International Conference on Fuzzy Systems. DOI10.1109/FUZZ-IEEE.2017.8015732
    +"""
    +
    +import numpy as np
    +from pyFTS.common import FuzzySet, FLR, fts, flrg
    +from itertools import product
    +
    +
    +
    [docs]class HighOrderFLRG(flrg.FLRG): + """Conventional High Order Fuzzy Logical Relationship Group""" + def __init__(self, order, **kwargs): + super(HighOrderFLRG, self).__init__(order, **kwargs) + self.LHS = [] + self.RHS = {} + self.strlhs = "" + +
    [docs] def append_rhs(self, c, **kwargs): + if c not in self.RHS: + self.RHS[c] = c
    + +
    [docs] def append_lhs(self, c): + if isinstance(c,(tuple,list)): + for k in c: + self.LHS.append(k) + else: + self.LHS.append(c)
    + + def __str__(self): + tmp = "" + for c in sorted(self.RHS): + if len(tmp) > 0: + tmp = tmp + "," + tmp = tmp + c + return self.get_key() + " -> " + tmp + + + def __len__(self): + return len(self.RHS)
    + + +
    [docs]class WeightedHighOrderFLRG(flrg.FLRG): + """Weighted High Order Fuzzy Logical Relationship Group""" + + def __init__(self, order, **kwargs): + super(WeightedHighOrderFLRG, self).__init__(order, **kwargs) + self.LHS = [] + self.RHS = {} + self.count = 0.0 + self.strlhs = "" + self.w = None + +
    [docs] def append_rhs(self, fset, **kwargs): + count = kwargs.get('count',1.0) + if fset not in self.RHS: + self.RHS[fset] = count + else: + self.RHS[fset] += count + self.count += count
    + +
    [docs] def append_lhs(self, c): + self.LHS.append(c)
    + +
    [docs] def weights(self): + if self.w is None: + self.w = np.array([self.RHS[c] / self.count for c in self.RHS.keys()]) + return self.w
    + +
    [docs] def get_midpoint(self, sets): + if self.midpoint is None: + mp = np.array([sets[c].centroid for c in self.RHS.keys()]) + self.midpoint = mp.dot(self.weights()) + + return self.midpoint
    + +
    [docs] def get_lower(self, sets): + if self.lower is None: + lw = np.array([sets[s].lower for s in self.RHS.keys()]) + self.lower = lw.dot(self.weights()) + return self.lower
    + +
    [docs] def get_upper(self, sets): + if self.upper is None: + up = np.array([sets[s].upper for s in self.RHS.keys()]) + self.upper = up.dot(self.weights()) + return self.upper
    + + def __str__(self): + _str = "" + for k in self.RHS.keys(): + _str += ", " if len(_str) > 0 else "" + _str += k + " (" + str(round(self.RHS[k] / self.count, 3)) + ")" + + return self.get_key() + " -> " + _str + + def __len__(self): + return len(self.RHS)
    + + +
    [docs]class HighOrderFTS(fts.FTS): + """Conventional High Order Fuzzy Time Series""" + def __init__(self, **kwargs): + super(HighOrderFTS, self).__init__(**kwargs) + self.name = "High Order FTS" + self.shortname = "HOFTS" + self.detail = "Severiano, Silva, Sadaei and Guimarães" + self.is_high_order = True + self.min_order = 1 + self.order= kwargs.get("order", self.min_order) + self.configure_lags(**kwargs) + +
    [docs] def configure_lags(self, **kwargs): + if "order" in kwargs: + self.order = kwargs.get("order", self.min_order) + + if "lags" in kwargs: + self.lags = kwargs.get("lags", None) + + if self.lags is not None: + self.max_lag = max(self.lags) + else: + self.max_lag = self.order + self.lags = np.arange(1, self.order+1)
    + +
    [docs] def generate_lhs_flrg(self, sample, explain=False): + + nsample = [self.partitioner.fuzzyfy(k, mode="sets", alpha_cut=self.alpha_cut) + for k in sample] + + if explain: + self.append_log("Fuzzyfication","{} -> {}".format(sample, nsample)) + + return self.generate_lhs_flrg_fuzzyfied(nsample, explain)
    + +
    [docs] def generate_lhs_flrg_fuzzyfied(self, sample, explain=False): + lags = [] + flrgs = [] + + for ct, o in enumerate(self.lags): + lhs = sample[o - 1] + lags.append(lhs) + + if explain: + self.append_log("Ordering Lags", "Lag {} Value {}".format(o, lhs)) + + # Trace the possible paths + for path in product(*lags): + flrg = HighOrderFLRG(self.order) + + for lhs in path: + flrg.append_lhs(lhs) + + flrgs.append(flrg) + + return flrgs
    + +
    [docs] def generate_flrg(self, data): + _tmp_steps = self.standard_horizon - 1 + l = len(data) + for k in np.arange(self.max_lag, l - _tmp_steps): + + if self.dump: print("FLR: " + str(k)) + + sample = data[k - self.max_lag: k] + + rhs = self.partitioner.fuzzyfy(data[k+_tmp_steps], mode="sets", alpha_cut=self.alpha_cut) + + flrgs = self.generate_lhs_flrg(sample) + + for flrg in flrgs: + if flrg.get_key() not in self.flrgs: + self.flrgs[flrg.get_key()] = flrg; + + for st in rhs: + self.flrgs[flrg.get_key()].append_rhs(st)
    + + +
    [docs] def generate_flrg_fuzzyfied(self, data): + _tmp_steps = self.standard_horizon - 1 + l = len(data) + for k in np.arange(self.max_lag, l): + if self.dump: print("FLR: " + str(k)) + + sample = data[k - self.max_lag: k] + + rhs = data[k+_tmp_steps] + + flrgs = self.generate_lhs_flrg_fuzzyfied(sample) + + for flrg in flrgs: + + if flrg.get_key() not in self.flrgs: + self.flrgs[flrg.get_key()] = flrg + + for st in rhs: + self.flrgs[flrg.get_key()].append_rhs(st)
    + +
    [docs] def train(self, data, **kwargs): + self.configure_lags(**kwargs) + if not kwargs.get('fuzzyfied',False): + self.generate_flrg(data) + else: + self.generate_flrg_fuzzyfied(data)
    + +
    [docs] def forecast(self, ndata, **kwargs): + + explain = kwargs.get('explain', False) + + fuzzyfied = kwargs.get('fuzzyfied', False) + + mode = kwargs.get('mode', 'mean') + + ret = [] + + l = len(ndata) if not explain else self.max_lag + 1 + + if l < self.max_lag: + return ndata + elif l == self.max_lag: + l += 1 + + for k in np.arange(self.max_lag, l): + + sample = ndata[k - self.max_lag: k] + + if not fuzzyfied: + flrgs = self.generate_lhs_flrg(sample, explain) + else: + flrgs = self.generate_lhs_flrg_fuzzyfied(sample, explain) + + midpoints = [] + memberships = [] + for flrg in flrgs: + + if flrg.get_key() not in self.flrgs: + if len(flrg.LHS) > 0: + mp = self.partitioner.sets[flrg.LHS[-1]].centroid + mv = self.partitioner.sets[flrg.LHS[-1]].membership(sample[-1]) if not fuzzyfied else None + midpoints.append(mp) + memberships.append(mv) + + if explain: + self.append_log("Rule Matching", "{} -> {} (Naïve) Midpoint: {}".format(str(flrg.LHS), flrg.LHS[-1], + mp)) + else: + flrg = self.flrgs[flrg.get_key()] + mp = flrg.get_midpoint(self.partitioner.sets) + mv = flrg.get_membership(sample, self.partitioner.sets) if not fuzzyfied else None + midpoints.append(mp) + memberships.append(mv) + + if explain: + self.append_log("Rule Matching", "{}, Midpoint: {} Membership: {}".format(flrg.get_key(), mp, mv)) + + if mode == "mean" or fuzzyfied: + final = np.nanmean(midpoints) + if explain: self.append_log("Deffuzyfication", "By Mean: {}".format(final)) + else: + final = np.dot(midpoints, memberships)/np.nansum(memberships) + if explain: self.append_log("Deffuzyfication", "By Memberships: {}".format(final)) + + ret.append(final) + + return ret
    + + +
    [docs]class WeightedHighOrderFTS(HighOrderFTS): + """Weighted High Order Fuzzy Time Series""" + def __init__(self, **kwargs): + super(WeightedHighOrderFTS, self).__init__(**kwargs) + self.name = "Weighted High Order FTS" + self.shortname = "WHOFTS" + +
    [docs] def generate_lhs_flrg_fuzzyfied(self, sample, explain=False): + lags = [] + flrgs = [] + + for ct, o in enumerate(self.lags): + lags.append(sample[o-1]) + + if explain: + print("\t (Lag {}) {} \n".format(o, sample[o-1])) + + # Trace the possible paths + for path in product(*lags): + flrg = WeightedHighOrderFLRG(self.order) + + for lhs in path: + flrg.append_lhs(lhs) + + flrgs.append(flrg) + + return flrgs
    +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/models/hwang.html b/docs/build/html/_modules/pyFTS/models/hwang.html new file mode 100644 index 0000000..89f079d --- /dev/null +++ b/docs/build/html/_modules/pyFTS/models/hwang.html @@ -0,0 +1,164 @@ + + + + + + + + + pyFTS.models.hwang — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.models.hwang

    +"""
    +High Order Fuzzy Time Series by Hwang, Chen and Lee (1998)
    +
    +Jeng-Ren Hwang, Shyi-Ming Chen, and Chia-Hoang Lee, “Handling forecasting problems using fuzzy time series,” 
    +Fuzzy Sets Syst., no. 100, pp. 217–228, 1998.
    +"""
    +
    +import numpy as np
    +from pyFTS.common import FuzzySet, FLR, Transformations, fts
    +
    +
    +
    [docs]class HighOrderFTS(fts.FTS): + def __init__(self, **kwargs): + super(HighOrderFTS, self).__init__(**kwargs) + self.is_high_order = True + self.min_order = 2 + self.name = "Hwang High Order FTS" + self.shortname = "Hwang" + self.detail = "Hwang" + self.configure_lags(**kwargs) + +
    [docs] def configure_lags(self, **kwargs): + if "order" in kwargs: + self.order = kwargs.get("order", 2) + + self.max_lag = self.order
    + +
    [docs] def forecast(self, ndata, **kwargs): + + l = len(self.sets) + + cn = np.array([0.0 for k in range(l)]) + ow = np.array([[0.0 for k in range(l)] for z in range(self.order - 1)]) + rn = np.array([[0.0 for k in range(l)] for z in range(self.order - 1)]) + ft = np.array([0.0 for k in range(l)]) + + ret = [] + + for t in np.arange(self.order-1, len(ndata)): + + for ix in range(l): + s = self.partitioner.ordered_sets[ix] + cn[ix] = self.sets[s].membership( FuzzySet.grant_bounds(ndata[t], self.sets, self.partitioner.ordered_sets)) + for w in np.arange(self.order-1): + ow[w, ix] = self.sets[s].membership(FuzzySet.grant_bounds(ndata[t - w], self.sets, self.partitioner.ordered_sets)) + rn[w, ix] = ow[w, ix] * cn[ix] + ft[ix] = max(ft[ix], rn[w, ix]) + mft = max(ft) + out = 0.0 + count = 0.0 + for ix in range(l): + s = self.partitioner.ordered_sets[ix] + if ft[ix] == mft: + out = out + self.sets[s].centroid + count += 1.0 + ret.append(out / count) + + return ret
    + +
    [docs] def train(self, data, **kwargs): + + if self.sets == None: + self.sets = self.partitioner.sets + + self.configure_lags(**kwargs)
    +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/models/ifts.html b/docs/build/html/_modules/pyFTS/models/ifts.html new file mode 100644 index 0000000..4b9e9b8 --- /dev/null +++ b/docs/build/html/_modules/pyFTS/models/ifts.html @@ -0,0 +1,285 @@ + + + + + + + + + pyFTS.models.ifts — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.models.ifts

    +#!/usr/bin/python
    +# -*- coding: utf8 -*-
    +
    +"""
    +High Order Interval Fuzzy Time Series
    +
    +SILVA, Petrônio CL; SADAEI, Hossein Javedani; GUIMARÃES, Frederico Gadelha. Interval Forecasting with Fuzzy Time Series.
    +In: Computational Intelligence (SSCI), 2016 IEEE Symposium Series on. IEEE, 2016. p. 1-8.
    +"""
    +
    +import numpy as np
    +from pyFTS.common import FuzzySet, FLR, fts, tree
    +from pyFTS.models import hofts
    +
    +
    +
    [docs]class IntervalFTS(hofts.HighOrderFTS): + """ + High Order Interval Fuzzy Time Series + """ + def __init__(self, **kwargs): + super(IntervalFTS, self).__init__(**kwargs) + self.shortname = "IFTS" + self.name = "Interval FTS" + self.detail = "Silva, P.; Guimarães, F.; Sadaei, H. (2016)" + self.flrgs = {} + self.has_point_forecasting = False + self.has_interval_forecasting = True + self.is_high_order = True + self.min_order = 1 + +
    [docs] def get_upper(self, flrg): + ret = np.nan + if len(flrg.LHS) > 0: + if flrg.get_key() in self.flrgs: + tmp = self.flrgs[flrg.get_key()] + ret = tmp.get_upper(self.partitioner.sets) + else: + ret = self.partitioner.sets[flrg.LHS[-1]].upper + return ret
    + +
    [docs] def get_lower(self, flrg): + ret = np.nan + if len(flrg.LHS) > 0: + if flrg.get_key() in self.flrgs: + tmp = self.flrgs[flrg.get_key()] + ret = tmp.get_lower(self.partitioner.sets) + else: + ret = self.partitioner.sets[flrg.LHS[-1]].lower + return ret
    + +
    [docs] def get_sequence_membership(self, data, fuzzySets): + mb = [fuzzySets[k].membership(data[k]) for k in np.arange(0, len(data))] + return mb
    + +
    [docs] def forecast_interval(self, ndata, **kwargs): + + ret = [] + + l = len(ndata) + + if l < self.order: + return ndata + + for k in np.arange(self.max_lag, l+1): + + sample = ndata[k - self.max_lag: k] + + flrgs = self.generate_lhs_flrg(sample) + + up = [] + lo = [] + affected_flrgs_memberships = [] + + for flrg in flrgs: + if len(flrg.LHS) > 0: + + mv = flrg.get_membership(sample, self.partitioner.sets) + up.append(mv * self.get_upper(flrg)) + lo.append(mv * self.get_lower(flrg)) + affected_flrgs_memberships.append(mv) + + # gerar o intervalo + norm = np.nansum(affected_flrgs_memberships) + lo_ = np.nansum(lo) / norm + up_ = np.nansum(up) / norm + ret.append([lo_, up_]) + + return ret
    + +
    [docs] def forecast_ahead_interval(self, data, steps, **kwargs): + start = kwargs.get('start_at', 0) + ret = [[x, x] for x in data[start:start+self.max_lag]] + for k in np.arange(self.max_lag, self.max_lag + steps): + interval_lower = self.clip_uod(self.forecast_interval([x[0] for x in ret[k - self.max_lag: k]])[0]) + interval_upper = self.clip_uod(self.forecast_interval([x[1] for x in ret[k - self.max_lag: k]])[0]) + interval = [np.nanmin(interval_lower), np.nanmax(interval_upper)] + ret.append(interval) + + return ret[-steps:]
    + + +
    [docs]class WeightedIntervalFTS(hofts.WeightedHighOrderFTS): + """ + Weighted High Order Interval Fuzzy Time Series + """ + def __init__(self, **kwargs): + super(WeightedIntervalFTS, self).__init__(**kwargs) + self.shortname = "WIFTS" + self.name = "Weighted Interval FTS" + self.detail = "Silva, P.; Guimarães, F.; Sadaei, H. (2016)" + self.flrgs = {} + self.has_point_forecasting = False + self.has_interval_forecasting = True + self.is_high_order = True + self.min_order = 1 + +
    [docs] def get_upper(self, flrg): + ret = np.nan + if len(flrg.LHS) > 0: + if flrg.get_key() in self.flrgs: + tmp = self.flrgs[flrg.get_key()] + ret = tmp.get_upper(self.partitioner.sets) + else: + ret = self.partitioner.sets[flrg.LHS[-1]].upper + return ret
    + +
    [docs] def get_lower(self, flrg): + ret = np.nan + if len(flrg.LHS) > 0: + if flrg.get_key() in self.flrgs: + tmp = self.flrgs[flrg.get_key()] + ret = tmp.get_lower(self.partitioner.sets) + else: + ret = self.partitioner.sets[flrg.LHS[-1]].lower + return ret
    + +
    [docs] def get_sequence_membership(self, data, fuzzySets): + mb = [fuzzySets[k].membership(data[k]) for k in np.arange(0, len(data))] + return mb
    + +
    [docs] def forecast_interval(self, ndata, **kwargs): + ret = [] + + l = len(ndata) + + if l < self.order: + return ndata + + for k in np.arange(self.max_lag, l+1): + + sample = ndata[k - self.max_lag: k] + + flrgs = self.generate_lhs_flrg(sample) + + up = [] + lo = [] + affected_flrgs_memberships = [] + + for flrg in flrgs: + if len(flrg.LHS) > 0: + + mv = flrg.get_membership(sample, self.partitioner.sets) + up.append(mv * self.get_upper(flrg)) + lo.append(mv * self.get_lower(flrg)) + affected_flrgs_memberships.append(mv) + + # gerar o intervalo + norm = np.nansum(affected_flrgs_memberships) + lo_ = np.nansum(lo) / norm + up_ = np.nansum(up) / norm + ret.append([lo_, up_]) + + return ret
    + +
    [docs] def forecast_ahead_interval(self, data, steps, **kwargs): + start = kwargs.get('start_at', 0) + ret = [[x, x] for x in data[start:start + self.max_lag]] + for k in np.arange(self.max_lag, self.max_lag + steps): + interval_lower = self.clip_uod(self.forecast_interval([x[0] for x in ret[k - self.max_lag: k]])[0]) + interval_upper = self.clip_uod(self.forecast_interval([x[1] for x in ret[k - self.max_lag: k]])[0]) + interval = [np.nanmin(interval_lower), np.nanmax(interval_upper)] + ret.append(interval) + + return ret[-steps:]
    + + +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/models/incremental/IncrementalEnsemble.html b/docs/build/html/_modules/pyFTS/models/incremental/IncrementalEnsemble.html new file mode 100644 index 0000000..c3e2664 --- /dev/null +++ b/docs/build/html/_modules/pyFTS/models/incremental/IncrementalEnsemble.html @@ -0,0 +1,224 @@ + + + + + + + + + pyFTS.models.incremental.IncrementalEnsemble — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.models.incremental.IncrementalEnsemble

    +'''
    +Time Variant/Incremental Ensemble of FTS methods
    +'''
    +
    +
    +import numpy as np
    +import pandas as pd
    +from pyFTS.common import FuzzySet, FLR, fts, flrg
    +from pyFTS.partitioners import Grid
    +from pyFTS.models import hofts
    +from pyFTS.models.ensemble import ensemble
    +
    +
    +
    [docs]class IncrementalEnsembleFTS(ensemble.EnsembleFTS): + """ + Time Variant/Incremental Ensemble of FTS methods + """ + def __init__(self, **kwargs): + super(IncrementalEnsembleFTS, self).__init__(**kwargs) + self.shortname = "IncrementalEnsembleFTS" + self.name = "Incremental Ensemble FTS" + + self.order = kwargs.get('order',1) + + self.partitioner_method = kwargs.get('partitioner_method', Grid.GridPartitioner) + """The partitioner method to be called when a new model is build""" + self.partitioner_params = kwargs.get('partitioner_params', {'npart': 10}) + """The partitioner method parameters""" + + self.fts_method = kwargs.get('fts_method', hofts.WeightedHighOrderFTS) + """The FTS method to be called when a new model is build""" + self.fts_params = kwargs.get('fts_params', {}) + """The FTS method specific parameters""" + + self.window_length = kwargs.get('window_length', 100) + """The memory window length""" + + self.batch_size = kwargs.get('batch_size', 10) + """The batch interval between each retraining""" + + self.num_models = kwargs.get('num_models', 5) + """The number of models to hold in the ensemble""" + + self.point_method = kwargs.get('point_method', 'exponential') + + self.is_high_order = True + self.uod_clip = False + self.max_lag = self.window_length + self.order + +
    [docs] def offset(self): + return self.max_lag
    + +
    [docs] def train(self, data, **kwargs): + + partitioner = self.partitioner_method(data=data, **self.partitioner_params) + model = self.fts_method(partitioner=partitioner, **self.fts_params) + if model.is_high_order: + model = self.fts_method(partitioner=partitioner, order=self.order, **self.fts_params) + model.fit(data, **kwargs) + self.append_model(model) + if len(self.models) > self.num_models: + self.models.pop(0)
    + +
    [docs] def forecast(self, data, **kwargs): + l = len(data) + no_update = kwargs.get('no_update', False) + if no_update: + ret = [] + for k in np.arange(self.order, l+1): + sample = data[k-self.order: k] + tmp = self.get_models_forecasts(sample) + point = self.get_point(tmp) + ret.append(point) + return ret + + data_window = [] + + ret = [] + + for k in np.arange(self.max_lag, l): + + k2 = k - self.max_lag + + data_window.append(data[k2]) + + if k2 >= self.window_length: + data_window.pop(0) + + if k % self.batch_size == 0 and k2 >= self.window_length: + self.train(data_window, **kwargs) + + if len(self.models) > 0: + sample = data[k2: k] + tmp = self.get_models_forecasts(sample) + point = self.get_point(tmp) + ret.append(point) + + return ret
    + +
    [docs] def forecast_ahead(self, data, steps, **kwargs): + if len(data) < self.order: + return data + + if isinstance(data, np.ndarray): + data = data.tolist() + + start = kwargs.get('start_at',0) + + ret = data[:start+self.order] + for k in np.arange(start+self.order, steps+start+self.order): + tmp = self.forecast(ret[k-self.order:k], no_update=True, **kwargs) + + if isinstance(tmp,(list, np.ndarray)): + tmp = tmp[-1] + + ret.append(tmp) + data.append(tmp) + + return ret[-steps:]
    + + + + + + +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/models/incremental/TimeVariant.html b/docs/build/html/_modules/pyFTS/models/incremental/TimeVariant.html new file mode 100644 index 0000000..88a3cac --- /dev/null +++ b/docs/build/html/_modules/pyFTS/models/incremental/TimeVariant.html @@ -0,0 +1,215 @@ + + + + + + + + + pyFTS.models.incremental.TimeVariant — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.models.incremental.TimeVariant

    +"""
    +Meta model that wraps another FTS method and continously retrain it using a data window with
    +the most recent data
    +"""
    +
    +import numpy as np
    +from pyFTS.common import FuzzySet, FLR, fts, flrg
    +from pyFTS.partitioners import Grid
    +
    +
    +
    [docs]class Retrainer(fts.FTS): + """ + Meta model for incremental/online learning that retrain its internal model after + data windows controlled by the parameter 'batch_size', using as the training data a + window of recent lags, whose size is controlled by the parameter 'window_length'. + """ + def __init__(self, **kwargs): + super(Retrainer, self).__init__(**kwargs) + + self.partitioner_method = kwargs.get('partitioner_method', Grid.GridPartitioner) + """The partitioner method to be called when a new model is build""" + self.partitioner_params = kwargs.get('partitioner_params', {'npart': 10}) + """The partitioner method parameters""" + self.partitioner = None + """The most recent trained partitioner""" + + self.fts_method = kwargs.get('fts_method', None) + """The FTS method to be called when a new model is build""" + self.fts_params = kwargs.get('fts_params', {}) + """The FTS method specific parameters""" + self.model = None + """The most recent trained model""" + + self.window_length = kwargs.get('window_length',100) + """The memory window length""" + self.auto_update = False + """If true the model is updated at each time and not recreated""" + self.batch_size = kwargs.get('batch_size', 10) + """The batch interval between each retraining""" + self.is_high_order = True + self.is_time_variant = True + self.uod_clip = False + self.max_lag = self.window_length + self.order + self.is_wrapper = True + +
    [docs] def train(self, data, **kwargs): + self.partitioner = self.partitioner_method(data=data, **self.partitioner_params) + self.model = self.fts_method(partitioner=self.partitioner, **self.fts_params) + if self.model.is_high_order: + self.model.order = self.model = self.fts_method(partitioner=self.partitioner, + order=self.order, **self.fts_params) + self.model.fit(data, **kwargs) + self.shortname = "TimeVariant - " + self.model.shortname
    + +
    [docs] def forecast(self, data, **kwargs): + l = len(data) + + no_update = kwargs.get('no_update',False) + + if no_update: + return self.model.predict(data, **kwargs) + + horizon = self.window_length + self.order + + ret = [] + + for k in np.arange(horizon, l+1): + _train = data[k - horizon: k - self.order] + _test = data[k - self.order: k] + + if k % self.batch_size == 0 or self.model is None: + if self.auto_update: + self.model.train(_train) + else: + self.train(_train, **kwargs) + + ret.extend(self.model.predict(_test, **kwargs)) + + return ret
    + +
    [docs] def forecast_ahead(self, data, steps, **kwargs): + if len(data) < self.order: + return data + + if isinstance(data, np.ndarray): + data = data.tolist() + + start = kwargs.get('start_at',0) + + ret = data[:start+self.order] + for k in np.arange(start+self.order, steps+start+self.order): + tmp = self.forecast(ret[k-self.order:k], no_update=True, **kwargs) + + if isinstance(tmp,(list, np.ndarray)): + tmp = tmp[-1] + + ret.append(tmp) + data.append(tmp) + + return ret[-steps:]
    + +
    [docs] def offset(self): + return self.max_lag
    + + def __str__(self): + """String representation of the model""" + + return str(self.model) + + def __len__(self): + """ + The length (number of rules) of the model + + :return: number of rules + """ + return len(self.model)
    +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/models/ismailefendi.html b/docs/build/html/_modules/pyFTS/models/ismailefendi.html new file mode 100644 index 0000000..b59e220 --- /dev/null +++ b/docs/build/html/_modules/pyFTS/models/ismailefendi.html @@ -0,0 +1,211 @@ + + + + + + + + + pyFTS.models.ismailefendi — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.models.ismailefendi

    +"""
    +First Order Improved Weighted Fuzzy Time Series by Efendi, Ismail and Deris (2013)
    +
    +R. Efendi, Z. Ismail, and M. M. Deris, “Improved weight Fuzzy Time Series as used in the exchange rates forecasting of 
    +US Dollar to Ringgit Malaysia,” Int. J. Comput. Intell. Appl., vol. 12, no. 1, p. 1350005, 2013.
    +"""
    +
    +import numpy as np
    +from pyFTS.common import FuzzySet, FLR, fts, flrg
    +
    +
    +
    [docs]class ImprovedWeightedFLRG(flrg.FLRG): + """First Order Improved Weighted Fuzzy Logical Relationship Group""" + def __init__(self, LHS, **kwargs): + super(ImprovedWeightedFLRG, self).__init__(1, **kwargs) + self.LHS = LHS + self.RHS = {} + self.rhs_counts = {} + self.count = 0.0 + self.w = None + +
    [docs] def append_rhs(self, c, **kwargs): + count = kwargs.get('count', 1.0) + if c not in self.RHS: + self.RHS[c] = c + self.rhs_counts[c] = count + else: + self.rhs_counts[c] += count + self.count += count
    + +
    [docs] def weights(self): + if self.w is None: + self.w = np.array([self.rhs_counts[c] / self.count for c in self.RHS.keys()]) + return self.w
    + + def __str__(self): + tmp = self.LHS + " -> " + tmp2 = "" + for c in sorted(self.RHS.keys()): + if len(tmp2) > 0: + tmp2 = tmp2 + "," + tmp2 = tmp2 + c + "(" + str(round(self.rhs_counts[c] / self.count, 3)) + ")" + return tmp + tmp2 + + def __len__(self): + return len(self.RHS)
    + + +
    [docs]class ImprovedWeightedFTS(fts.FTS): + """First Order Improved Weighted Fuzzy Time Series""" + def __init__(self, **kwargs): + super(ImprovedWeightedFTS, self).__init__(order=1, name="IWFTS", **kwargs) + self.name = "Improved Weighted FTS" + self.detail = "Ismail & Efendi" + +
    [docs] def generate_flrg(self, flrs): + for flr in flrs: + if flr.LHS in self.flrgs: + self.flrgs[flr.LHS].append_rhs(flr.RHS) + else: + self.flrgs[flr.LHS] = ImprovedWeightedFLRG(flr.LHS) + self.flrgs[flr.LHS].append_rhs(flr.RHS)
    + +
    [docs] def train(self, ndata, **kwargs): + + tmpdata = self.partitioner.fuzzyfy(ndata, method='maximum', mode='sets') + flrs = FLR.generate_recurrent_flrs(tmpdata) + self.generate_flrg(flrs)
    + +
    [docs] def forecast(self, ndata, **kwargs): + + explain = kwargs.get('explain', False) + + if self.partitioner is not None: + ordered_sets = self.partitioner.ordered_sets + else: + ordered_sets = FuzzySet.set_ordered(self.partitioner.sets) + + ndata = np.array(ndata) + + l = len(ndata) if not explain else 1 + + ret = [] + + for k in np.arange(0, l): + + actual = FuzzySet.get_maximum_membership_fuzzyset(ndata[k], self.partitioner.sets, ordered_sets) + + if explain: + print("Fuzzyfication:\n\n {} -> {} \n".format(ndata[k], actual.name)) + + if actual.name not in self.flrgs: + ret.append(actual.centroid) + + if explain: + print("Rules:\n\n {} -> {} (Naïve)\t Midpoint: {} \n\n".format(actual.name, actual.name,actual.centroid)) + + else: + flrg = self.flrgs[actual.name] + mp = flrg.get_midpoints(self.partitioner.sets) + + final = mp.dot(flrg.weights()) + + ret.append(final) + + if explain: + print("Rules:\n\n {} \n\n ".format(str(flrg))) + print("Midpoints: \n\n {}\n\n".format(mp)) + + print("Deffuzyfied value: {} \n".format(final)) + + return ret
    +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/models/multivariate/cmvfts.html b/docs/build/html/_modules/pyFTS/models/multivariate/cmvfts.html new file mode 100644 index 0000000..b09165c --- /dev/null +++ b/docs/build/html/_modules/pyFTS/models/multivariate/cmvfts.html @@ -0,0 +1,316 @@ + + + + + + + + + pyFTS.models.multivariate.cmvfts — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.models.multivariate.cmvfts

    +
    +import numpy as np
    +import pandas as pd
    +from pyFTS.common import FuzzySet, FLR, fts, flrg
    +from pyFTS.models import hofts
    +from pyFTS.models.multivariate import mvfts, grid, common
    +from types import LambdaType
    +
    +
    +
    [docs]class ClusteredMVFTS(mvfts.MVFTS): + """ + Meta model for high order, clustered multivariate FTS + """ + def __init__(self, **kwargs): + super(ClusteredMVFTS, self).__init__(**kwargs) + + self.fts_method = kwargs.get('fts_method', hofts.WeightedHighOrderFTS) + """The FTS method to be called when a new model is build""" + self.fts_params = kwargs.get('fts_params', {}) + """The FTS method specific parameters""" + self.model = None + """The most recent trained model""" + self.knn = kwargs.get('knn', 2) + + self.is_high_order = True + + self.is_clustered = True + + self.order = kwargs.get("order", 2) + self.lags = kwargs.get("lags", None) + self.alpha_cut = kwargs.get('alpha_cut', 0.0) + + self.shortname = "ClusteredMVFTS" + self.name = "Clustered Multivariate FTS" + + self.pre_fuzzyfy = kwargs.get('pre_fuzzyfy', True) + self.fuzzyfy_mode = kwargs.get('fuzzyfy_mode', 'sets') + +
    [docs] def fuzzyfy(self,data): + ndata = [] + for index, row in data.iterrows() if isinstance(data, pd.DataFrame) else enumerate(data): + data_point = self.format_data(row) + ndata.append(self.partitioner.fuzzyfy(data_point, mode=self.fuzzyfy_mode)) + + return ndata
    + +
    [docs] def train(self, data, **kwargs): + + self.fts_params['order'] = self.order + + self.model = self.fts_method(partitioner=self.partitioner, **self.fts_params) + + ndata = self.apply_transformations(data) + + ndata = self.check_data(ndata) + + self.model.train(ndata, fuzzyfied=self.pre_fuzzyfy) + + self.partitioner.prune()
    + +
    [docs] def check_data(self, data): + if self.pre_fuzzyfy: + ndata = self.fuzzyfy(data) + else: + ndata = [self.format_data(k) for k in data.to_dict('records')] + + return ndata
    + +
    [docs] def forecast(self, data, **kwargs): + + ndata1 = self.apply_transformations(data) + + ndata = self.check_data(ndata1) + + pre_fuzz = kwargs.get('pre_fuzzyfy', self.pre_fuzzyfy) + + ret = self.model.forecast(ndata, fuzzyfied=pre_fuzz, **kwargs) + + ret = self.target_variable.apply_inverse_transformations(ret, + params=data[self.target_variable.data_label].values) + + return ret
    + +
    [docs] def forecast_interval(self, data, **kwargs): + + if not self.model.has_interval_forecasting: + raise Exception("The internal method does not support interval forecasting!") + + data = self.check_data(data) + + pre_fuzz = kwargs.get('pre_fuzzyfy', self.pre_fuzzyfy) + + return self.model.forecast_interval(data, fuzzyfied=pre_fuzz, **kwargs)
    + + + +
    [docs] def forecast_distribution(self, data, **kwargs): + + if not self.model.has_probability_forecasting: + raise Exception("The internal method does not support probabilistic forecasting!") + + data = self.check_data(data) + + pre_fuzz = kwargs.get('pre_fuzzyfy', self.pre_fuzzyfy) + + return self.model.forecast_distribution(data, fuzzyfied=pre_fuzz, **kwargs)
    + +
    [docs] def forecast_ahead_distribution(self, data, steps, **kwargs): + + generators = kwargs.get('generators', None) + + if generators is None: + raise Exception('You must provide parameter \'generators\'! generators is a dict where the keys' + + ' are the dataframe column names (except the target_variable) and the values are ' + + 'lambda functions that accept one value (the actual value of the variable) ' + ' and return the next value or trained FTS models that accept the actual values and ' + 'forecast new ones.') + + ndata = self.apply_transformations(data) + + start = kwargs.get('start_at', 0) + + ret = [] + sample = ndata.iloc[start: start + self.max_lag] + for k in np.arange(0, steps): + tmp = self.forecast_distribution(sample.iloc[-self.max_lag:], **kwargs)[0] + + ret.append(tmp) + + new_data_point = {} + + for data_label in generators.keys(): + if data_label != self.target_variable.data_label: + if isinstance(generators[data_label], LambdaType): + last_data_point = sample.iloc[-1] + new_data_point[data_label] = generators[data_label](last_data_point[data_label]) + + elif isinstance(generators[data_label], fts.FTS): + gen_model = generators[data_label] + last_data_point = sample.iloc[-gen_model.order:] + + if not gen_model.is_multivariate: + last_data_point = last_data_point[data_label].values + + new_data_point[data_label] = gen_model.forecast(last_data_point)[0] + + new_data_point[self.target_variable.data_label] = tmp.expected_value() + + sample = sample.append(new_data_point, ignore_index=True) + + return ret[-steps:]
    + +
    [docs] def forecast_multivariate(self, data, **kwargs): + + ndata = self.check_data(data) + + generators = kwargs.get('generators', {}) + + already_processed_cols = [] + + ret = {} + + ret[self.target_variable.data_label] = self.model.forecast(ndata, fuzzyfied=self.pre_fuzzyfy, **kwargs) + + for var in self.explanatory_variables: + if var.data_label not in already_processed_cols: + if var.data_label in generators: + if isinstance(generators[var.data_label], LambdaType): + fx = generators[var.data_label] + if len(data[var.data_label].values) > self.order: + ret[var.data_label] = [fx(k) for k in data[var.data_label].values[self.order:]] + else: + ret[var.data_label] = [fx(data[var.data_label].values[-1])] + elif isinstance(generators[var.data_label], fts.FTS): + model = generators[var.data_label] + if not model.is_multivariate: + ret[var.data_label] = model.forecast(data[var.data_label].values) + else: + ret[var.data_label] = model.forecast(data) + elif self.target_variable.name != var.name: + self.target_variable = var + self.partitioner.change_target_variable(var) + self.model.partitioner = self.partitioner + self.model.reset_calculated_values() + ret[var.data_label] = self.model.forecast(ndata, fuzzyfied=self.pre_fuzzyfy, **kwargs) + + already_processed_cols.append(var.data_label) + + return pd.DataFrame(ret, columns=ret.keys())
    + +
    [docs] def forecast_ahead_multivariate(self, data, steps, **kwargs): + + ndata = self.apply_transformations(data) + + start = kwargs.get('start_at', 0) + + ret = ndata.iloc[start:self.order+start] + + for k in np.arange(0, steps): + sample = ret.iloc[k:self.order+k] + tmp = self.forecast_multivariate(sample, **kwargs) + ret = ret.append(tmp, ignore_index=True) + + return ret
    + + def __str__(self): + """String representation of the model""" + return str(self.model) + + def __len__(self): + """ + The length (number of rules) of the model + + :return: number of rules + """ + return len(self.model)
    + +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/models/multivariate/granular.html b/docs/build/html/_modules/pyFTS/models/multivariate/granular.html new file mode 100644 index 0000000..44bb5ac --- /dev/null +++ b/docs/build/html/_modules/pyFTS/models/multivariate/granular.html @@ -0,0 +1,127 @@ + + + + + + + + + pyFTS.models.multivariate.granular — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.models.multivariate.granular

    +from pyFTS.models.multivariate import cmvfts, grid
    +from pyFTS.models import hofts
    +
    +
    +
    [docs]class GranularWMVFTS(cmvfts.ClusteredMVFTS): + """ + Granular multivariate weighted high order FTS + """ + + def __init__(self, **kwargs): + super(GranularWMVFTS, self).__init__(**kwargs) + + self.fts_method = kwargs.get('fts_method', hofts.WeightedHighOrderFTS) + self.model = None + """The most recent trained model""" + self.knn = kwargs.get('knn', 2) + self.order = kwargs.get("order", 2) + self.shortname = "FIG-FTS" + self.name = "Fuzzy Information Granular FTS" + self.mode = kwargs.get('mode','sets') + +
    [docs] def train(self, data, **kwargs): + self.partitioner = grid.IncrementalGridCluster( + explanatory_variables=self.explanatory_variables, + target_variable=self.target_variable, + neighbors=self.knn) + super(GranularWMVFTS, self).train(data, mode=self.mode, **kwargs)
    + +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/models/multivariate/mvfts.html b/docs/build/html/_modules/pyFTS/models/multivariate/mvfts.html new file mode 100644 index 0000000..2eaec27 --- /dev/null +++ b/docs/build/html/_modules/pyFTS/models/multivariate/mvfts.html @@ -0,0 +1,427 @@ + + + + + + + + + pyFTS.models.multivariate.mvfts — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.models.multivariate.mvfts

    +from pyFTS.common import fts, FuzzySet, FLR, Membership
    +from pyFTS.partitioners import Grid
    +from pyFTS.models.multivariate import FLR as MVFLR, common, flrg as mvflrg
    +from itertools import product
    +from types import LambdaType
    +from copy import deepcopy
    +
    +import numpy as np
    +import pandas as pd
    +
    +
    +
    [docs]def product_dict(**kwargs): + """ + Code by Seth Johnson + :param kwargs: + :return: + """ + keys = kwargs.keys() + vals = kwargs.values() + for instance in product(*vals): + yield dict(zip(keys, instance))
    + + +
    [docs]class MVFTS(fts.FTS): + """ + Multivariate extension of Chen's ConventionalFTS method + """ + def __init__(self, **kwargs): + super(MVFTS, self).__init__(**kwargs) + self.explanatory_variables = kwargs.get('explanatory_variables',[]) + self.target_variable = kwargs.get('target_variable',None) + self.flrgs = {} + self.is_multivariate = True + self.shortname = "MVFTS" + self.name = "Multivariate FTS" + self.uod_clip = False + +
    [docs] def append_transformation(self, transformation, **kwargs): + if not transformation.is_multivariate: + raise Exception('The transformation is not multivariate') + self.transformations.append(transformation) + self.transformations_param.append(kwargs)
    + +
    [docs] def append_variable(self, var): + """ + Append a new endogenous variable to the model + + :param var: variable object + :return: + """ + self.explanatory_variables.append(var)
    + +
    [docs] def format_data(self, data): + ndata = {} + for var in self.explanatory_variables: + ndata[var.name] = var.partitioner.extractor(data[var.data_label]) + + return ndata
    + +
    [docs] def apply_transformations(self, data, params=None, updateUoD=False, **kwargs): + ndata = data.copy(deep=True) + for ct, transformation in enumerate(self.transformations): + ndata = transformation.apply(ndata, **self.transformations_param[ct]) + + for var in self.explanatory_variables: + try: + values = ndata[var.data_label].values #if isinstance(ndata, pd.DataFrame) else ndata[var.data_label] + if self.uod_clip and var.partitioner.type == 'common': + ndata[var.data_label] = np.clip(values, + var.partitioner.min, var.partitioner.max) + + ndata[var.data_label] = var.apply_transformations(values) + except: + pass + + return ndata
    + +
    [docs] def generate_lhs_flrs(self, data): + flrs = [] + lags = {} + for vc, var in enumerate(self.explanatory_variables): + data_point = data[var.name] + lags[var.name] = common.fuzzyfy_instance(data_point, var, tuples=False) + + for path in product_dict(**lags): + flr = MVFLR.FLR() + + flr.LHS = path + + #for var, fset in path.items(): + # flr.set_lhs(var, fset) + + if len(flr.LHS.keys()) == len(self.explanatory_variables): + flrs.append(flr) + + return flrs
    + +
    [docs] def generate_flrs(self, data): + flrs = [] + for ct in np.arange(1, len(data.index)): + ix = data.index[ct-1] + data_point = self.format_data( data.loc[ix] ) + + tmp_flrs = self.generate_lhs_flrs(data_point) + + target_ix = data.index[ct] + target_point = data[self.target_variable.data_label][target_ix] + target = common.fuzzyfy_instance(target_point, self.target_variable) + + for flr in tmp_flrs: + for v, s in target: + new_flr = deepcopy(flr) + new_flr.set_rhs(s) + flrs.append(new_flr) + + return flrs
    + +
    [docs] def generate_flrg(self, flrs): + for flr in flrs: + flrg = mvflrg.FLRG(lhs=flr.LHS) + + if flrg.get_key() not in self.flrgs: + self.flrgs[flrg.get_key()] = flrg + + self.flrgs[flrg.get_key()].append_rhs(flr.RHS)
    + +
    [docs] def train(self, data, **kwargs): + + ndata = self.apply_transformations(data) + + flrs = self.generate_flrs(ndata) + self.generate_flrg(flrs)
    + +
    [docs] def forecast(self, data, **kwargs): + ret = [] + ndata = self.apply_transformations(data) + c = 0 + for index, row in ndata.iterrows() if isinstance(ndata, pd.DataFrame) else enumerate(ndata): + data_point = self.format_data(row) + flrs = self.generate_lhs_flrs(data_point) + mvs = [] + mps = [] + for flr in flrs: + flrg = mvflrg.FLRG(lhs=flr.LHS) + if flrg.get_key() not in self.flrgs: + #Naïve approach is applied when no rules were found + if self.target_variable.name in flrg.LHS: + fs = flrg.LHS[self.target_variable.name] + fset = self.target_variable.partitioner.sets[fs] + mp = fset.centroid + mv = fset.membership(data_point[self.target_variable.name]) + mvs.append(mv) + mps.append(mp) + else: + mvs.append(0.) + mps.append(0.) + else: + _flrg = self.flrgs[flrg.get_key()] + mvs.append(_flrg.get_membership(data_point, self.explanatory_variables)) + mps.append(_flrg.get_midpoint(self.target_variable.partitioner.sets)) + + mv = np.array(mvs) + mp = np.array(mps) + + ret.append(np.dot(mv,mp.T)/np.nansum(mv)) + + ret = self.target_variable.apply_inverse_transformations(ret, + params=data[self.target_variable.data_label].values) + return ret
    + +
    [docs] def forecast_ahead(self, data, steps, **kwargs): + generators = kwargs.get('generators',None) + + if generators is None: + raise Exception('You must provide parameter \'generators\'! generators is a dict where the keys' + + ' are the dataframe column names (except the target_variable) and the values are ' + + 'lambda functions that accept one value (the actual value of the variable) ' + ' and return the next value or trained FTS models that accept the actual values and ' + 'forecast new ones.') + + ndata = self.apply_transformations(data) + + start = kwargs.get('start_at', 0) + + ndata = ndata.iloc[start: start + self.max_lag] + ret = [] + for k in np.arange(0, steps): + sample = ndata.iloc[-self.max_lag:] + tmp = self.forecast(sample, **kwargs) + + if isinstance(tmp, (list, np.ndarray)): + tmp = tmp[-1] + + ret.append(tmp) + + new_data_point = {} + + for data_label in generators.keys(): + if data_label != self.target_variable.data_label: + if isinstance(generators[data_label], LambdaType): + last_data_point = ndata.loc[ndata.index[-1]] + new_data_point[data_label] = generators[data_label](last_data_point[data_label]) + elif isinstance(generators[data_label], fts.FTS): + gen_model = generators[data_label] + last_data_point = sample.iloc[-gen_model.order:] + + if not gen_model.is_multivariate: + last_data_point = last_data_point[data_label].values + + new_data_point[data_label] = gen_model.forecast(last_data_point)[0] + + new_data_point[self.target_variable.data_label] = tmp + + ndata = ndata.append(new_data_point, ignore_index=True) + + return ret[-steps:]
    + +
    [docs] def forecast_interval(self, data, **kwargs): + ret = [] + ndata = self.apply_transformations(data) + c = 0 + for index, row in ndata.iterrows() if isinstance(ndata, pd.DataFrame) else enumerate(ndata): + data_point = self.format_data(row) + flrs = self.generate_lhs_flrs(data_point) + mvs = [] + ups = [] + los = [] + for flr in flrs: + flrg = mvflrg.FLRG(lhs=flr.LHS) + if flrg.get_key() not in self.flrgs: + #Naïve approach is applied when no rules were found + if self.target_variable.name in flrg.LHS: + fs = flrg.LHS[self.target_variable.name] + fset = self.target_variable.partitioner.sets[fs] + up = fset.upper + lo = fset.lower + mv = fset.membership(data_point[self.target_variable.name]) + mvs.append(mv) + ups.append(up) + los.append(lo) + else: + mvs.append(0.) + ups.append(0.) + los.append(0.) + else: + _flrg = self.flrgs[flrg.get_key()] + mvs.append(_flrg.get_membership(data_point, self.explanatory_variables)) + ups.append(_flrg.get_upper(self.target_variable.partitioner.sets)) + los.append(_flrg.get_lower(self.target_variable.partitioner.sets)) + + mv = np.array(mvs) + up = np.dot(mv, np.array(ups).T) / np.nansum(mv) + lo = np.dot(mv, np.array(los).T) / np.nansum(mv) + + ret.append([lo, up]) + + ret = self.target_variable.apply_inverse_transformations(ret, + params=data[self.target_variable.data_label].values) + return ret
    + +
    [docs] def forecast_ahead_interval(self, data, steps, **kwargs): + generators = kwargs.get('generators', None) + + if generators is None: + raise Exception('You must provide parameter \'generators\'! generators is a dict where the keys' + + ' are the dataframe column names (except the target_variable) and the values are ' + + 'lambda functions that accept one value (the actual value of the variable) ' + ' and return the next value or trained FTS models that accept the actual values and ' + 'forecast new ones.') + + ndata = self.apply_transformations(data) + + start = kwargs.get('start_at', 0) + + ret = [] + ix = ndata.index[start: start + self.max_lag] + lo = ndata.loc[ix] #[ndata.loc[k] for k in ix] + up = ndata.loc[ix] #[ndata.loc[k] for k in ix] + for k in np.arange(0, steps): + tmp_lo = self.forecast_interval(lo[-self.max_lag:], **kwargs)[0] + tmp_up = self.forecast_interval(up[-self.max_lag:], **kwargs)[0] + + ret.append([min(tmp_lo), max(tmp_up)]) + + new_data_point_lo = {} + new_data_point_up = {} + + for data_label in generators.keys(): + if data_label != self.target_variable.data_label: + if isinstance(generators[data_label], LambdaType): + last_data_point_lo = lo.loc[lo.index[-1]] + new_data_point_lo[data_label] = generators[data_label](last_data_point_lo[data_label]) + last_data_point_up = up.loc[up.index[-1]] + new_data_point_up[data_label] = generators[data_label](last_data_point_up[data_label]) + elif isinstance(generators[data_label], fts.FTS): + model = generators[data_label] + last_data_point_lo = lo.loc[lo.index[-model.order:]] + last_data_point_up = up.loc[up.index[-model.order:]] + + if not model.is_multivariate: + last_data_point_lo = last_data_point_lo[data_label].values + last_data_point_up = last_data_point_up[data_label].values + + new_data_point_lo[data_label] = model.forecast(last_data_point_lo)[0] + new_data_point_up[data_label] = model.forecast(last_data_point_up)[0] + + new_data_point_lo[self.target_variable.data_label] = min(tmp_lo) + new_data_point_up[self.target_variable.data_label] = max(tmp_up) + + lo = lo.append(new_data_point_lo, ignore_index=True) + up = up.append(new_data_point_up, ignore_index=True) + + return ret[-steps:]
    + +
    [docs] def clone_parameters(self, model): + super(MVFTS, self).clone_parameters(model) + + self.explanatory_variables = model.explanatory_variables + self.target_variable = model.target_variable
    + + def __str__(self): + _str = self.name + ":\n" + for k in self.flrgs.keys(): + _str += str(self.flrgs[k]) + "\n" + + return _str
    + + +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/models/multivariate/variable.html b/docs/build/html/_modules/pyFTS/models/multivariate/variable.html new file mode 100644 index 0000000..bcc1afb --- /dev/null +++ b/docs/build/html/_modules/pyFTS/models/multivariate/variable.html @@ -0,0 +1,181 @@ + + + + + + + + + pyFTS.models.multivariate.variable — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.models.multivariate.variable

    +import pandas as pd
    +from pyFTS.common import fts, FuzzySet, FLR, Membership, tree
    +from pyFTS.partitioners import Grid
    +from pyFTS.models.multivariate import FLR as MVFLR
    +
    +
    +
    [docs]class Variable: + """ + A variable of a fuzzy time series multivariate model. Each variable contains its own + transformations and partitioners. + """ + def __init__(self, name, **kwargs): + """ + + :param name: + :param \**kwargs: See below + + :Keyword Arguments: + * *alias* -- Alternative name for the variable + """ + self.name = name + """A string with the name of the variable""" + self.alias = kwargs.get('alias', self.name) + """A string with the alias of the variable""" + self.data_label = kwargs.get('data_label', self.name) + """A string with the column name on DataFrame""" + self.type = kwargs.get('type', 'common') + self.data_type = kwargs.get('data_type', None) + """The type of the data column on Pandas Dataframe""" + self.mask = kwargs.get('mask', None) + """The mask for format the data column on Pandas Dataframe""" + self.transformation = kwargs.get('transformation', None) + """Pre processing transformation for the variable""" + self.transformation_params = kwargs.get('transformation_params', None) + self.partitioner = None + """UoD partitioner for the variable data""" + self.alpha_cut = kwargs.get('alpha_cut', 0.0) + """Minimal membership value to be considered on fuzzyfication process""" + + + if kwargs.get('data', None) is not None: + self.build(**kwargs) + +
    [docs] def build(self, **kwargs): + """ + + :param kwargs: + :return: + """ + fs = kwargs.get('partitioner', Grid.GridPartitioner) + mf = kwargs.get('func', Membership.trimf) + np = kwargs.get('npart', 10) + data = kwargs.get('data', None) + kw = kwargs.get('partitioner_specific', {}) + self.partitioner = fs(data=data[self.data_label].values, npart=np, func=mf, + transformation=self.transformation, prefix=self.alias, + variable=self.name, **kw) + + self.partitioner.name = self.name + " " + self.partitioner.name
    + +
    [docs] def apply_transformations(self, data, **kwargs): + + if kwargs.get('params', None) is not None: + self.transformation_params = kwargs.get('params', None) + + if self.transformation is not None: + return self.transformation.apply(data, self.transformation_params) + + return data
    + +
    [docs] def apply_inverse_transformations(self, data, **kwargs): + + if kwargs.get('params', None) is not None: + self.transformation_params = kwargs.get('params', None) + + if self.transformation is not None: + return self.transformation.inverse(data, self.transformation_params) + + return data
    + + def __str__(self): + return self.name
    +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/models/multivariate/wmvfts.html b/docs/build/html/_modules/pyFTS/models/multivariate/wmvfts.html new file mode 100644 index 0000000..6d528a1 --- /dev/null +++ b/docs/build/html/_modules/pyFTS/models/multivariate/wmvfts.html @@ -0,0 +1,178 @@ + + + + + + + + + pyFTS.models.multivariate.wmvfts — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.models.multivariate.wmvfts

    +from pyFTS.common import fts, FuzzySet, FLR, Membership, tree
    +from pyFTS.partitioners import Grid
    +from pyFTS.models.multivariate import mvfts, FLR as MVFLR, common, flrg as mvflrg
    +
    +import numpy as np
    +import pandas as pd
    +
    +
    +
    [docs]class WeightedFLRG(mvflrg.FLRG): + """ + Weighted Multivariate Fuzzy Logical Rule Group + """ + + def __init__(self, **kwargs): + super(WeightedFLRG, self).__init__(**kwargs) + self.order = kwargs.get('order', 1) + self.LHS = kwargs.get('lhs', {}) + self.RHS = {} + self.count = 0.0 + self.w = None + +
    [docs] def append_rhs(self, fset, **kwargs): + count = kwargs.get('count', 1.0) + if fset not in self.RHS: + self.RHS[fset] = count + else: + self.RHS[fset] += count + self.count += count
    + +
    [docs] def weights(self): + if self.w is None: + self.w = np.array([self.RHS[c] / self.count for c in self.RHS.keys()]) + return self.w
    + +
    [docs] def get_midpoint(self, sets): + if self.midpoint is None: + mp = np.array([sets[c].centroid for c in self.RHS.keys()]) + self.midpoint = mp.dot(self.weights()) + + return self.midpoint
    + +
    [docs] def get_lower(self, sets): + if self.lower is None: + lw = np.array([sets[s].lower for s in self.RHS.keys()]) + self.lower = lw.dot(self.weights()) + return self.lower
    + +
    [docs] def get_upper(self, sets): + if self.upper is None: + up = np.array([sets[s].upper for s in self.RHS.keys()]) + self.upper = up.dot(self.weights()) + return self.upper
    + + def __str__(self): + _str = "" + for k in self.RHS.keys(): + _str += ", " if len(_str) > 0 else "" + _str += k + " (" + str(round( self.RHS[k] / self.count, 3)) + ")" + + return self.get_key() + " -> " + _str
    + + +
    [docs]class WeightedMVFTS(mvfts.MVFTS): + """ + Weighted Multivariate FTS + """ + def __init__(self, **kwargs): + super(WeightedMVFTS, self).__init__(order=1, **kwargs) + self.shortname = "WeightedMVFTS" + self.name = "Weighted Multivariate FTS" + +
    [docs] def generate_flrg(self, flrs): + for flr in flrs: + flrg = WeightedFLRG(lhs=flr.LHS) + + if flrg.get_key() not in self.flrgs: + self.flrgs[flrg.get_key()] = flrg + + self.flrgs[flrg.get_key()].append_rhs(flr.RHS)
    +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/models/nonstationary/cvfts.html b/docs/build/html/_modules/pyFTS/models/nonstationary/cvfts.html new file mode 100644 index 0000000..29c3f72 --- /dev/null +++ b/docs/build/html/_modules/pyFTS/models/nonstationary/cvfts.html @@ -0,0 +1,371 @@ + + + + + + + + + pyFTS.models.nonstationary.cvfts — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.models.nonstationary.cvfts

    +import numpy as np
    +from pyFTS.models import hofts
    +from pyFTS.models.nonstationary import common,nsfts
    +from pyFTS.common import FLR, flrg, tree
    +
    +
    +
    [docs]class HighOrderNonstationaryFLRG(hofts.HighOrderFTS): + """Conventional High Order Fuzzy Logical Relationship Group""" + def __init__(self, order, **kwargs): + super(HighOrderNonstationaryFLRG, self).__init__(order, **kwargs) + self.LHS = [] + self.RHS = {} + self.strlhs = "" + +
    [docs] def append_rhs(self, c, **kwargs): + if c not in self.RHS: + self.RHS[c] = c
    + +
    [docs] def append_lhs(self, c): + self.LHS.append(c)
    + + def __str__(self): + tmp = "" + for c in sorted(self.RHS): + if len(tmp) > 0: + tmp = tmp + "," + tmp = tmp + c + return self.get_key() + " -> " + tmp + + + def __len__(self): + return len(self.RHS)
    + + +
    [docs]class ConditionalVarianceFTS(hofts.HighOrderFTS): + def __init__(self, **kwargs): + super(ConditionalVarianceFTS, self).__init__(**kwargs) + self.name = "Conditional Variance FTS" + self.shortname = "CVFTS " + self.detail = "" + self.flrgs = {} + self.is_high_order = False + if self.partitioner is not None: + self.append_transformation(self.partitioner.transformation) + + self.min_stack = [0,0,0] + self.max_stack = [0,0,0] + self.uod_clip = False + self.order = 1 + self.min_order = 1 + self.max_lag = 1 + self.inputs = [] + self.forecasts = [] + self.residuals = [] + self.variance_residual = 0. + self.mean_residual = 0. + self.memory_window = kwargs.get("memory_window",5) + self.sets = {} + +
    [docs] def train(self, ndata, **kwargs): + + tmpdata = common.fuzzySeries(ndata, self.sets, + self.partitioner.ordered_sets, + method='fuzzy', const_t=0) + flrs = FLR.generate_non_recurrent_flrs(tmpdata) + self.generate_flrg(flrs) + + self.forecasts = self.forecast(ndata, no_update=True) + self.residuals = np.array(ndata[1:]) - np.array(self.forecasts[:-1]) + + self.variance_residual = np.var(self.residuals) # np.max(self.residuals + self.mean_residual = np.mean(self.residuals) + + self.residuals = self.residuals[-self.memory_window:].tolist() + self.forecasts = self.forecasts[-self.memory_window:] + self.inputs = np.array(ndata[-self.memory_window:]).tolist()
    + + +
    [docs] def generate_flrg(self, flrs, **kwargs): + for flr in flrs: + if flr.LHS.name in self.flrgs: + self.flrgs[flr.LHS.name].append_rhs(flr.RHS.name) + else: + self.flrgs[flr.LHS.name] = nsfts.ConventionalNonStationaryFLRG(flr.LHS.name) + self.flrgs[flr.LHS.name].append_rhs(flr.RHS.name)
    + + + def _smooth(self, a): + return .1 * a[0] + .3 * a[1] + .6 * a[2] + +
    [docs] def perturbation_factors(self, data, **kwargs): + npart = len(self.partitioner.sets) + _max = 0 + _min = 0 + if data < self.original_min: + _min = data - self.original_min if data < 0 else self.original_min - data + elif data > self.original_max: + _max = data - self.original_max if data > 0 else self.original_max - data + self.min_stack.pop(2) + self.min_stack.insert(0, _min) + _min = min(self.min_stack) + self.max_stack.pop(2) + self.max_stack.insert(0, _max) + _max = max(self.max_stack) + + _range = (_max - _min)/2 + + translate = np.linspace(_min, _max, npart) + + var = np.std(self.residuals) + + var = 0 if var < 1 else var + + loc = (self.mean_residual + np.mean(self.residuals)) + + location = [_range + w + loc + k for k in np.linspace(-var,var, npart) for w in translate] + + scale = [abs(location[0] - location[2])] + scale.extend([abs(location[k - 1] - location[k + 1]) for k in np.arange(1, npart)]) + scale.append(abs(location[-1] - location[-3])) + + perturb = [[location[k], scale[k]] for k in np.arange(npart)] + + return perturb
    + +
    [docs] def perturbation_factors__old(self, data): + npart = len(self.partitioner.sets) + _max = 0 + _min = 0 + if data < self.original_min: + _min = data - self.original_min if data < 0 else self.original_min - data + elif data > self.original_max: + _max = data - self.original_max if data > 0 else self.original_max - data + self.min_stack.pop(2) + self.min_stack.insert(0,_min) + _min = min(self.min_stack) + self.max_stack.pop(2) + self.max_stack.insert(0, _max) + _max = max(self.max_stack) + + location = np.linspace(_min, _max, npart) + scale = [abs(location[0] - location[2])] + scale.extend([abs(location[k-1] - location[k+1]) for k in np.arange(1, npart)]) + scale.append(abs(location[-1] - location[-3])) + + perturb = [[location[k], scale[k]] for k in np.arange(0, npart)] + + return perturb
    + + def _fsset_key(self, ix): + return self.partitioner.ordered_sets[ix] + + def _affected_sets(self, sample, perturb): + + affected_sets = [[ct, self.sets[self._fsset_key(ct)].membership(sample, perturb[ct])] + for ct in np.arange(len(self.partitioner.sets)) + if self.sets[self._fsset_key(ct)].membership(sample, perturb[ct]) > 0.0] + + if len(affected_sets) == 0: + + if sample < self.partitioner.lower_set().get_lower(perturb[0]): + affected_sets.append([0, 1]) + elif sample > self.partitioner.upper_set().get_upper(perturb[-1]): + affected_sets.append([len(self.sets) - 1, 1]) + + return affected_sets + +
    [docs] def forecast(self, ndata, **kwargs): + l = len(ndata) + + ret = [] + + no_update = kwargs.get("no_update",False) + + for k in np.arange(0, l): + + sample = ndata[k] + + if not no_update: + perturb = self.perturbation_factors(sample) + else: + perturb = [[0, 1] for k in np.arange(len(self.partitioner.sets))] + + affected_sets = self._affected_sets(sample, perturb) + + numerator = [] + denominator = [] + + if len(affected_sets) == 1: + ix = affected_sets[0][0] + aset = self.partitioner.ordered_sets[ix] + if aset in self.flrgs: + numerator.append(self.flrgs[aset].get_midpoint(self.sets, perturb[ix])) + else: + fuzzy_set = self.sets[aset] + numerator.append(fuzzy_set.get_midpoint(perturb[ix])) + denominator.append(1) + else: + for aset in affected_sets: + ix = aset[0] + fs = self.partitioner.ordered_sets[ix] + tdisp = perturb[ix] + if fs in self.flrgs: + numerator.append(self.flrgs[fs].get_midpoint(self.sets, tdisp) * aset[1]) + else: + fuzzy_set = self.sets[fs] + numerator.append(fuzzy_set.get_midpoint(tdisp) * aset[1]) + denominator.append(aset[1]) + + if sum(denominator) > 0: + pto = sum(numerator) /sum(denominator) + else: + pto = sum(numerator) + + ret.append(pto) + + if not no_update: + self.forecasts.append(pto) + self.residuals.append(self.inputs[-1] - self.forecasts[-1]) + self.inputs.append(sample) + + self.inputs.pop(0) + self.forecasts.pop(0) + self.residuals.pop(0) + + return ret
    + + +
    [docs] def forecast_interval(self, ndata, **kwargs): + l = len(ndata) + + ret = [] + + for k in np.arange(0, l): + + sample = ndata[k] + + perturb = self.perturbation_factors(sample) + + affected_sets = self._affected_sets(sample, perturb) + + upper = [] + lower = [] + + if len(affected_sets) == 1: + ix = affected_sets[0][0] + aset = self.partitioner.ordered_sets[ix] + if aset in self.flrgs: + lower.append(self.flrgs[aset].get_lower(perturb[ix])) + upper.append(self.flrgs[aset].get_upper(perturb[ix])) + else: + fuzzy_set = self.sets[aset] + lower.append(fuzzy_set.get_lower(perturb[ix])) + upper.append(fuzzy_set.get_upper(perturb[ix])) + else: + for aset in affected_sets: + ix = aset[0] + fs = self.partitioner.ordered_sets[ix] + tdisp = perturb[ix] + if fs in self.flrgs: + lower.append(self.flrgs[fs].get_lower(tdisp) * aset[1]) + upper.append(self.flrgs[fs].get_upper(tdisp) * aset[1]) + else: + fuzzy_set = self.sets[fs] + lower.append(fuzzy_set.get_lower(tdisp) * aset[1]) + upper.append(fuzzy_set.get_upper(tdisp) * aset[1]) + + itvl = [sum(lower), sum(upper)] + + ret.append(itvl) + + return ret
    +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/models/nonstationary/honsfts.html b/docs/build/html/_modules/pyFTS/models/nonstationary/honsfts.html new file mode 100644 index 0000000..a07c2d8 --- /dev/null +++ b/docs/build/html/_modules/pyFTS/models/nonstationary/honsfts.html @@ -0,0 +1,357 @@ + + + + + + + + + pyFTS.models.nonstationary.honsfts — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.models.nonstationary.honsfts

    +import numpy as np
    +from pyFTS.common import FuzzySet, FLR, fts
    +from pyFTS.models import hofts
    +from pyFTS.models.nonstationary import common, flrg, nsfts
    +from itertools import product
    +
    +
    +
    [docs]class HighOrderNonStationaryFLRG(flrg.NonStationaryFLRG): + """First Order NonStationary Fuzzy Logical Relationship Group""" + def __init__(self, order, **kwargs): + super(HighOrderNonStationaryFLRG, self).__init__(order, **kwargs) + self.LHS = [] + self.RHS = {} + self.count = 0.0 + self.strlhs = "" + self.w = None + +
    [docs] def append_rhs(self, fset, **kwargs): + count = kwargs.get('count',1.0) + if fset not in self.RHS: + self.RHS[fset] = count + else: + self.RHS[fset] += count + self.count += count
    + +
    [docs] def append_lhs(self, c): + self.LHS.append(c)
    + +
    [docs] def weights(self): + if self.w is None: + self.w = np.array([self.RHS[c] / self.count for c in self.RHS.keys()]) + return self.w
    + +
    [docs] def get_midpoint(self, sets, perturb): + mp = np.array([sets[c].get_midpoint(perturb) for c in self.RHS.keys()]) + midpoint = mp.dot(self.weights()) + return midpoint
    + +
    [docs] def get_lower(self, sets, perturb): + lw = np.array([sets[s].get_lower(perturb) for s in self.RHS.keys()]) + lower = lw.dot(self.weights()) + return lower
    + +
    [docs] def get_upper(self, sets, perturb): + up = np.array([sets[s].get_upper(perturb) for s in self.RHS.keys()]) + upper = up.dot(self.weights()) + return upper
    + + def __str__(self): + _str = "" + for k in self.RHS.keys(): + _str += ", " if len(_str) > 0 else "" + _str += k + " (" + str(round(self.RHS[k] / self.count, 3)) + ")" + + return self.get_key() + " -> " + _str + + def __len__(self): + return len(self.RHS)
    + + +
    [docs]class HighOrderNonStationaryFTS(nsfts.NonStationaryFTS): + """NonStationaryFTS Fuzzy Time Series""" + def __init__(self, **kwargs): + super(HighOrderNonStationaryFTS, self).__init__(**kwargs) + self.name = "High Order Non Stationary FTS" + self.shortname = "HONSFTS" + self.detail = "" + self.flrgs = {} + self.is_high_order = True + self.order = kwargs.get("order",2) + self.configure_lags(**kwargs) + +
    [docs] def configure_lags(self, **kwargs): + if "order" in kwargs: + self.order = kwargs.get("order", self.min_order) + + if "lags" in kwargs: + self.lags = kwargs.get("lags", None) + + if self.lags is not None: + self.max_lag = max(self.lags) + else: + self.max_lag = self.order + self.lags = np.arange(1, self.order + 1)
    + +
    [docs] def train(self, data, **kwargs): + + self.generate_flrg(data) + + if self.method == 'conditional': + self.forecasts = self.forecast(data, no_update=True) + self.residuals = np.array(data[self.order:]) - np.array(self.forecasts) + + self.variance_residual = np.var(self.residuals) # np.max(self.residuals + self.mean_residual = np.mean(self.residuals) + + self.residuals = self.residuals[-self.memory_window:].tolist() + self.forecasts = self.forecasts[-self.memory_window:] + self.inputs = np.array(data[-self.memory_window:]).tolist()
    + +
    [docs] def generate_flrg(self, data, **kwargs): + l = len(data) + for k in np.arange(self.max_lag, l): + if self.dump: print("FLR: " + str(k)) + + sample = data[k - self.max_lag: k] + + rhs = [key for key in self.partitioner.ordered_sets + if self.partitioner.sets[key].membership(data[k], [0,1]) > 0.0] + + if len(rhs) == 0: + rhs = [common.check_bounds(data[k], self.partitioner, [0,1]).name] + + lags = [] + + for o in np.arange(0, self.order): + tdisp = [0,1] + lhs = [key for key in self.partitioner.ordered_sets + if self.partitioner.sets[key].membership(sample[o], tdisp) > 0.0] + + if len(lhs) == 0: + lhs = [common.check_bounds(sample[o], self.partitioner, tdisp).name] + + lags.append(lhs) + + # Trace the possible paths + for path in product(*lags): + flrg = HighOrderNonStationaryFLRG(self.order) + + for c, e in enumerate(path, start=0): + flrg.append_lhs(e) + + if flrg.get_key() not in self.flrgs: + self.flrgs[flrg.get_key()] = flrg; + + for st in rhs: + self.flrgs[flrg.get_key()].append_rhs(st)
    + + def _affected_flrgs(self, sample, perturb): + + affected_flrgs = [] + affected_flrgs_memberships = [] + + lags = [] + + for ct, dat in enumerate(sample): + affected_sets = [key for ct, key in enumerate(self.partitioner.ordered_sets) + if self.partitioner.sets[key].membership(dat, perturb[ct]) > 0.0] + + if len(affected_sets) == 0: + + if dat < self.partitioner.lower_set().get_lower(perturb[0]): + affected_sets.append(self.partitioner.lower_set().name) + elif dat > self.partitioner.upper_set().get_upper(perturb[-1]): + affected_sets.append(self.partitioner.upper_set().name) + + lags.append(affected_sets) + + # Build the tree with all possible paths + + # Trace the possible paths + for path in product(*lags): + + flrg = HighOrderNonStationaryFLRG(self.order) + + for kk in path: + flrg.append_lhs(kk) + + affected_flrgs.append(flrg) + mv = [] + for ct, dat in enumerate(sample): + fset = self.partitioner.sets[flrg.LHS[ct]] + ix = self.partitioner.ordered_sets.index(flrg.LHS[ct]) + tmp = fset.membership(dat, perturb[ix]) + + mv.append(tmp) + + affected_flrgs_memberships.append(np.prod(mv)) + + return [affected_flrgs, affected_flrgs_memberships] + +
    [docs] def forecast(self, ndata, **kwargs): + + explain = kwargs.get('explain', False) + + time_displacement = kwargs.get("time_displacement", 0) + + window_size = kwargs.get("window_size", 1) + + no_update = kwargs.get("no_update", False) + + ret = [] + + l = len(ndata) if not explain else self.max_lag + 1 + + if l < self.max_lag: + return ndata + elif l == self.max_lag: + l += 1 + + for k in np.arange(self.max_lag, l): + + sample = ndata[k - self.max_lag: k] + + if self.method == 'unconditional': + perturb = common.window_index(k + time_displacement, window_size) + elif self.method == 'conditional': + if no_update: + perturb = [[0, 1] for k in np.arange(self.partitioner.partitions)] + else: + perturb = self.conditional_perturbation_factors(sample[-1]) + + affected_flrgs, affected_flrgs_memberships = self._affected_flrgs(sample, perturb) + + tmp = [] + + perturb2 = perturb[0] + if len(affected_flrgs) == 0: + tmp.append(common.check_bounds(sample[-1], self.partitioner.sets, perturb2)) + elif len(affected_flrgs) == 1: + flrg = affected_flrgs[0] + if flrg.get_key() in self.flrgs: + tmp.append(self.flrgs[flrg.get_key()].get_midpoint(self.partitioner.sets, perturb2)) + else: + fset = self.partitioner.sets[flrg.LHS[-1]] + ix = self.partitioner.ordered_sets.index(flrg.LHS[-1]) + tmp.append(fset.get_midpoint(perturb[ix])) + else: + for ct, aset in enumerate(affected_flrgs): + if aset.get_key() in self.flrgs: + + tmp.append(self.flrgs[aset.get_key()].get_midpoint(self.partitioner.sets, perturb2) * + affected_flrgs_memberships[ct]) + else: + fset = self.partitioner.sets[aset.LHS[-1]] + ix = self.partitioner.ordered_sets.index(aset.LHS[-1]) + tmp.append(fset.get_midpoint(perturb[ix])*affected_flrgs_memberships[ct]) + pto = sum(tmp) + + ret.append(pto) + + if self.method == 'conditional' and not no_update: + self.forecasts.append(pto) + self.residuals.append(self.inputs[-1] - self.forecasts[-1]) + self.inputs.extend(sample) + + for g in range(self.order): + self.inputs.pop(0) + self.forecasts.pop(0) + self.residuals.pop(0) + + return ret
    + + def __str__(self): + tmp = self.name + ":\n" + for r in self.flrgs: + tmp = "{0}{1}\n".format(tmp, str(self.flrgs[r])) + return tmp
    +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/models/nonstationary/nsfts.html b/docs/build/html/_modules/pyFTS/models/nonstationary/nsfts.html new file mode 100644 index 0000000..a09da74 --- /dev/null +++ b/docs/build/html/_modules/pyFTS/models/nonstationary/nsfts.html @@ -0,0 +1,458 @@ + + + + + + + + + pyFTS.models.nonstationary.nsfts — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.models.nonstationary.nsfts

    +import numpy as np
    +from pyFTS.common import FLR, fts
    +from pyFTS.models.nonstationary import common, flrg
    +
    +
    +
    [docs]class ConventionalNonStationaryFLRG(flrg.NonStationaryFLRG): + """First Order NonStationary Fuzzy Logical Relationship Group""" + + def __init__(self, LHS, **kwargs): + super(ConventionalNonStationaryFLRG, self).__init__(1, **kwargs) + self.LHS = LHS + self.RHS = set() + +
    [docs] def get_key(self): + return self.LHS
    + +
    [docs] def append_rhs(self, c, **kwargs): + self.RHS.add(c)
    + + def __str__(self): + tmp = self.LHS + " -> " + tmp2 = "" + for c in sorted(self.RHS): + if len(tmp2) > 0: + tmp2 = tmp2 + "," + tmp2 = tmp2 + c + return tmp + tmp2
    + + +
    [docs]class WeightedNonStationaryFLRG(flrg.NonStationaryFLRG): + """First Order NonStationary Fuzzy Logical Relationship Group""" + + def __init__(self, LHS, **kwargs): + super(WeightedNonStationaryFLRG, self).__init__(1, **kwargs) + self.LHS = LHS + self.RHS = {} + self.count = 0.0 + self.strlhs = "" + self.w = None + +
    [docs] def get_key(self): + return self.LHS
    + +
    [docs] def append_rhs(self, c, **kwargs): + if c not in self.RHS: + self.RHS[c] = 1 + else: + self.RHS[c] += 1 + self.count += 1
    + +
    [docs] def weights(self): + if self.w is None: + self.w = np.array([self.RHS[c] / self.count for c in self.RHS.keys()]) + return self.w
    + +
    [docs] def get_midpoint(self, sets, perturb): + mp = np.array([sets[c].get_midpoint(perturb) for c in self.RHS.keys()]) + midpoint = mp.dot(self.weights()) + return midpoint
    + + def __str__(self): + _str = "" + for k in self.RHS.keys(): + _str += ", " if len(_str) > 0 else "" + _str += k + " (" + str(round(self.RHS[k] / self.count, 3)) + ")" + + return self.get_key() + " -> " + _str
    + + +
    [docs]class NonStationaryFTS(fts.FTS): + """NonStationaryFTS Fuzzy Time Series""" + def __init__(self, **kwargs): + super(NonStationaryFTS, self).__init__(**kwargs) + self.name = "Non Stationary FTS" + self.shortname = "NSFTS" + self.detail = "" + self.flrgs = {} + self.method = kwargs.get('method','conditional') + self.is_high_order = False + if self.partitioner is not None: + self.append_transformation(self.partitioner.transformation) + + if self.method == 'conditional': + self.min_stack = [0, 0, 0] + self.max_stack = [0, 0, 0] + self.uod_clip = False + self.order = 1 + self.min_order = 1 + self.max_lag = 1 + self.inputs = [] + self.forecasts = [] + self.residuals = [] + self.variance_residual = 0. + self.mean_residual = 0. + self.memory_window = kwargs.get("memory_window", 5) + +
    [docs] def generate_flrg(self, flrs, **kwargs): + for flr in flrs: + if flr.LHS.name in self.flrgs: + self.flrgs[flr.LHS.name].append_rhs(flr.RHS.name) + else: + self.flrgs[flr.LHS.name] = ConventionalNonStationaryFLRG(flr.LHS.name) + self.flrgs[flr.LHS.name].append_rhs(flr.RHS.name)
    + + def _smooth(self, a): + return .1 * a[0] + .3 * a[1] + .6 * a[2] + +
    [docs] def train(self, data, **kwargs): + + if self.method == 'unconditional': + window_size = kwargs.get('parameters', 1) + tmpdata = common.fuzzySeries(data, self.partitioner.sets, + self.partitioner.ordered_sets, + window_size, method='fuzzy') + else: + tmpdata = common.fuzzySeries(data, self.partitioner.sets, + self.partitioner.ordered_sets, + method='fuzzy', const_t=0) + + flrs = FLR.generate_non_recurrent_flrs(tmpdata) + self.generate_flrg(flrs) + + if self.method == 'conditional': + self.forecasts = self.forecast(data, no_update=True) + self.residuals = np.array(data[1:]) - np.array(self.forecasts[:-1]) + + self.variance_residual = np.var(self.residuals) # np.max(self.residuals + self.mean_residual = np.mean(self.residuals) + + self.residuals = self.residuals[-self.memory_window:].tolist() + self.forecasts = self.forecasts[-self.memory_window:] + self.inputs = np.array(data[-self.memory_window:]).tolist()
    + +
    [docs] def conditional_perturbation_factors(self, data, **kwargs): + npart = len(self.partitioner.sets) + _max = 0 + _min = 0 + if data < self.original_min: + _min = data - self.original_min if data < 0 else self.original_min - data + elif data > self.original_max: + _max = data - self.original_max if data > 0 else self.original_max - data + self.min_stack.pop(2) + self.min_stack.insert(0, _min) + _min = min(self.min_stack) + self.max_stack.pop(2) + self.max_stack.insert(0, _max) + _max = max(self.max_stack) + + _range = (_max - _min)/2 + + translate = np.linspace(_min, _max, npart) + + var = np.std(self.residuals) + + var = 0 if var < 1 else var + + loc = (self.mean_residual + np.mean(self.residuals)) + + location = [_range + w + loc + k for k in np.linspace(-var,var, npart) for w in translate] + + scale = [abs(location[0] - location[2])] + scale.extend([abs(location[k - 1] - location[k + 1]) for k in np.arange(1, npart)]) + scale.append(abs(location[-1] - location[-3])) + + perturb = [[location[k], scale[k]] for k in np.arange(npart)] + + return perturb
    + + def _affected_sets(self, sample, perturb): + + if self.method == 'conditional': + + affected_sets = [[ct, self.partitioner.sets[key].membership(sample, perturb[ct])] + for ct, key in enumerate(self.partitioner.ordered_sets) + if self.partitioner.sets[key].membership(sample, perturb[ct]) > 0.0] + + if len(affected_sets) == 0: + if sample < self.partitioner.lower_set().get_lower(perturb[0]): + affected_sets.append([0, 1]) + elif sample > self.partitioner.upper_set().get_upper(perturb[-1]): + affected_sets.append([len(self.sets) - 1, 1]) + + else: + affected_sets = [[ct, self.partitioner.sets[key].membership(sample, perturb)] + for ct, key in enumerate(self.partitioner.ordered_sets) + if self.partitioner.sets[key].membership(sample, perturb) > 0.0] + + if len(affected_sets) == 0: + + if sample < self.partitioner.lower_set().get_lower(perturb): + affected_sets.append([0, 1]) + elif sample > self.partitioner.upper_set().get_upper(perturb): + affected_sets.append([len(self.sets) - 1, 1]) + + return affected_sets + +
    [docs] def forecast(self, ndata, **kwargs): + + time_displacement = kwargs.get("time_displacement",0) + + window_size = kwargs.get("window_size", 1) + + no_update = kwargs.get("no_update", False) + + l = len(ndata) + + ret = [] + + for k in np.arange(0, l): + + sample = ndata[k] + + if self.method == 'unconditional': + perturb = common.window_index(k + time_displacement, window_size) + elif self.method == 'conditional': + if not no_update: + perturb = self.conditional_perturbation_factors(sample) + else: + perturb = [[0, 1] for k in np.arange(len(self.partitioner.sets))] + + affected_sets = self._affected_sets(sample, perturb) + + numerator = [] + denominator = [] + + if len(affected_sets) == 1: + ix = affected_sets[0][0] + aset = self.partitioner.ordered_sets[ix] + if aset in self.flrgs: + numerator.append(self.flrgs[aset].get_midpoint(self.partitioner.sets, perturb[ix])) + else: + fuzzy_set = self.partitioner.sets[aset] + numerator.append(fuzzy_set.get_midpoint(perturb[ix])) + denominator.append(1) + else: + for aset in affected_sets: + ix = aset[0] + fs = self.partitioner.ordered_sets[ix] + tdisp = perturb[ix] + if fs in self.flrgs: + numerator.append(self.flrgs[fs].get_midpoint(self.partitioner.sets, tdisp) * aset[1]) + else: + fuzzy_set = self.partitioner.sets[fs] + numerator.append(fuzzy_set.get_midpoint(tdisp) * aset[1]) + denominator.append(aset[1]) + + if sum(denominator) > 0: + pto = sum(numerator) / sum(denominator) + else: + pto = sum(numerator) + + ret.append(pto) + + if self.method == 'conditional' and not no_update: + self.forecasts.append(pto) + self.residuals.append(self.inputs[-1] - self.forecasts[-1]) + self.inputs.append(sample) + + self.inputs.pop(0) + self.forecasts.pop(0) + self.residuals.pop(0) + + return ret
    + +
    [docs] def forecast_interval(self, ndata, **kwargs): + + time_displacement = kwargs.get("time_displacement", 0) + + window_size = kwargs.get("window_size", 1) + + l = len(ndata) + + ret = [] + + for k in np.arange(0, l): + + # print("input: " + str(ndata[k])) + + tdisp = common.window_index(k + time_displacement, window_size) + + affected_sets = [[self.partitioner.sets[key], self.partitioner.sets[key].membership(ndata[k], tdisp)] + for key in self.partitioner.ordered_sets + if self.partitioner.sets[key].membership(ndata[k], tdisp) > 0.0] + + if len(affected_sets) == 0: + affected_sets.append([common.check_bounds(ndata[k], self.partitioner, tdisp), 1.0]) + + upper = [] + lower = [] + + if len(affected_sets) == 1: + aset = affected_sets[0][0] + if aset.name in self.flrgs: + lower.append(self.flrgs[aset.name].get_lower(tdisp)) + upper.append(self.flrgs[aset.name].get_upper(tdisp)) + else: + lower.append(aset.get_lower(tdisp)) + upper.append(aset.get_upper(tdisp)) + else: + for aset in affected_sets: + if aset[0].name in self.flrgs: + lower.append(self.flrgs[aset[0].name].get_lower(tdisp) * aset[1]) + upper.append(self.flrgs[aset[0].name].get_upper(tdisp) * aset[1]) + else: + lower.append(aset[0].get_lower(tdisp) * aset[1]) + upper.append(aset[0].get_upper(tdisp) * aset[1]) + + + ret.append([sum(lower), sum(upper)]) + + return ret
    + + def __str__(self): + tmp = self.name + ":\n" + for r in self.flrgs: + tmp = "{0}{1}\n".format(tmp, str(self.flrgs[r])) + return tmp
    + + +
    [docs]class WeightedNonStationaryFTS(NonStationaryFTS): + """Weighted NonStationaryFTS Fuzzy Time Series""" + def __init__(self, **kwargs): + super(WeightedNonStationaryFTS, self).__init__(**kwargs) + self.name = "Weighted Non Stationary FTS" + self.shortname = "WNSFTS" + +
    [docs] def train(self, data, **kwargs): + + if self.method == 'unconditional': + window_size = kwargs.get('parameters', 1) + tmpdata = common.fuzzySeries(data, self.partitioner.sets, + self.partitioner.ordered_sets, + window_size, method='fuzzy') + else: + tmpdata = common.fuzzySeries(data, self.partitioner.sets, + self.partitioner.ordered_sets, + method='fuzzy', const_t=0) + + flrs = FLR.generate_recurrent_flrs(tmpdata) + self.generate_flrg(flrs) + + if self.method == 'conditional': + self.forecasts = self.forecast(data, no_update=True) + self.residuals = np.array(data[1:]) - np.array(self.forecasts[:-1]) + + self.variance_residual = np.var(self.residuals) # np.max(self.residuals + self.mean_residual = np.mean(self.residuals) + + self.residuals = self.residuals[-self.memory_window:].tolist() + self.forecasts = self.forecasts[-self.memory_window:] + self.inputs = np.array(data[-self.memory_window:]).tolist()
    + +
    [docs] def generate_flrg(self, flrs, **kwargs): + for flr in flrs: + if flr.LHS.name in self.flrgs: + self.flrgs[flr.LHS.name].append_rhs(flr.RHS.name) + else: + self.flrgs[flr.LHS.name] = WeightedNonStationaryFLRG(flr.LHS.name) + self.flrgs[flr.LHS.name].append_rhs(flr.RHS.name)
    +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/models/nonstationary/util.html b/docs/build/html/_modules/pyFTS/models/nonstationary/util.html new file mode 100644 index 0000000..873cbe3 --- /dev/null +++ b/docs/build/html/_modules/pyFTS/models/nonstationary/util.html @@ -0,0 +1,194 @@ + + + + + + + + + pyFTS.models.nonstationary.util — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.models.nonstationary.util

    +import numpy as np
    +import pandas as pd
    +import matplotlib as plt
    +import matplotlib.colors as pltcolors
    +import matplotlib.pyplot as plt
    +from pyFTS.common import Membership, Util
    +
    +
    +
    [docs]def plot_sets(partitioner, start=0, end=10, step=1, tam=[5, 5], colors=None, + save=False, file=None, axes=None, data=None, window_size = 1, only_lines=False, legend=True): + + range = np.arange(start,end,step) + ticks = [] + if axes is None: + fig, axes = plt.subplots(nrows=1, ncols=1, figsize=tam) + + for ct, key in enumerate(partitioner.ordered_sets): + fset = partitioner.sets[key] + if not only_lines: + for t in range: + tdisp = t - (t % window_size) + fset.membership(0, tdisp) + param = fset.perturbated_parameters[str(tdisp)] + + if fset.mf == Membership.trimf: + if t == start: + line = axes.plot([t, t+1, t], param, label=fset.name) + fset.metadata['color'] = line[0].get_color() + else: + axes.plot([t, t + 1, t], param,c=fset.metadata['color']) + + ticks.extend(["t+"+str(t),""]) + else: + tmp = [] + for t in range: + tdisp = t - (t % window_size) + fset.membership(0, tdisp) + param = fset.perturbated_parameters[str(tdisp)] + tmp.append(np.polyval(param, tdisp)) + axes.plot(range, tmp, ls="--", c="blue") + + axes.set_ylabel("Universe of Discourse") + axes.set_xlabel("Time") + plt.xticks([k for k in range], ticks, rotation='vertical') + + if legend: + handles0, labels0 = axes.get_legend_handles_labels() + lgd = axes.legend(handles0, labels0, loc=2, bbox_to_anchor=(1, 1)) + + if data is not None: + axes.plot(np.arange(start, start + len(data), 1), data,c="black") + + if file is not None: + plt.tight_layout() + Util.show_and_save_image(fig, file, save)
    + + +
    [docs]def plot_sets_conditional(model, data, step=1, size=[5, 5], colors=None, + save=False, file=None, axes=None, fig=None): + range = np.arange(0, len(data), step) + ticks = [] + if axes is None: + fig, axes = plt.subplots(nrows=1, ncols=1, figsize=size) + + for t in range: + model.forecast([data[t]]) + perturb = model.conditional_perturbation_factors(data[t]) + + for ct, key in enumerate(model.partitioner.ordered_sets): + set = model.partitioner.sets[key] + set.perturbate_parameters(perturb[ct]) + param = set.perturbated_parameters[str(perturb[ct])] + + if set.mf == Membership.trimf: + if t == 0: + line = axes.plot([t, t+1, t], param, label=set.name) + set.metadata['color'] = line[0].get_color() + else: + axes.plot([t, t + 1, t], param,c=set.metadata['color']) + + #ticks.extend(["t+"+str(t),""]) + + axes.set_ylabel("Universe of Discourse") + axes.set_xlabel("Time") + #plt.xticks([k for k in range], ticks, rotation='vertical') + + handles0, labels0 = axes.get_legend_handles_labels() + lgd = axes.legend(handles0, labels0, loc=2, bbox_to_anchor=(1, 1)) + + if data is not None: + axes.plot(np.arange(0, len(data), 1), data,c="black") + + plt.tight_layout() + + Util.show_and_save_image(fig, file, save)
    +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/models/pwfts.html b/docs/build/html/_modules/pyFTS/models/pwfts.html new file mode 100644 index 0000000..f4772b9 --- /dev/null +++ b/docs/build/html/_modules/pyFTS/models/pwfts.html @@ -0,0 +1,794 @@ + + + + + + + + + pyFTS.models.pwfts — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.models.pwfts

    +#!/usr/bin/python
    +# -*- coding: utf8 -*-
    +
    +import numpy as np
    +import pandas as pd
    +import math
    +from operator import itemgetter
    +from pyFTS.common import FLR, FuzzySet
    +from pyFTS.models import hofts, ifts
    +from pyFTS.probabilistic import ProbabilityDistribution
    +from itertools import product
    +
    +
    +
    [docs]class ProbabilisticWeightedFLRG(hofts.HighOrderFLRG): + """High Order Probabilistic Weighted Fuzzy Logical Relationship Group""" + def __init__(self, order): + super(ProbabilisticWeightedFLRG, self).__init__(order) + self.RHS = {} + self.frequency_count = 0.0 + self.Z = None + +
    [docs] def get_membership(self, data, sets): + if isinstance(data, (np.ndarray, list, tuple, set)): + return np.nanprod([sets[key].membership(data[count]) + for count, key in enumerate(self.LHS, start=0)]) + else: + return sets[self.LHS[0]].membership(data)
    + +
    [docs] def append_rhs(self, c, **kwargs): + count = kwargs.get('count', 1.0) + self.frequency_count += count + if c in self.RHS: + self.RHS[c] += count + else: + self.RHS[c] = count
    + +
    [docs] def lhs_conditional_probability(self, x, sets, norm, uod, nbins): + pk = self.frequency_count / norm + + tmp = pk * (self.get_membership(x, sets) / self.partition_function(sets, uod, nbins=nbins)) + + return tmp
    + +
    [docs] def lhs_conditional_probability_fuzzyfied(self, lhs_mv, sets, norm, uod, nbins): + pk = self.frequency_count / norm + + tmp = pk * (lhs_mv / self.partition_function(sets, uod, nbins=nbins)) + + return tmp
    + +
    [docs] def rhs_unconditional_probability(self, c): + return self.RHS[c] / self.frequency_count
    + +
    [docs] def rhs_conditional_probability(self, x, sets, uod, nbins): + total = 0.0 + for rhs in self.RHS.keys(): + set = sets[rhs] + wi = self.rhs_unconditional_probability(rhs) + mv = set.membership(x) / set.partition_function(uod, nbins=nbins) + total += wi * mv + + return total
    + +
    [docs] def partition_function(self, sets, uod, nbins=100): + if self.Z is None: + self.Z = 0.0 + for k in np.linspace(uod[0], uod[1], nbins): + for key in self.LHS: + self.Z += sets[key].membership(k) + + return self.Z
    + +
    [docs] def get_midpoint(self, sets): + '''Return the expectation of the PWFLRG, the weighted sum''' + if self.midpoint is None: + self.midpoint = np.nansum(np.array([self.rhs_unconditional_probability(s) * sets[s].centroid + for s in self.RHS.keys()])) + + return self.midpoint
    + +
    [docs] def get_upper(self, sets): + if self.upper is None: + self.upper = np.nansum(np.array([self.rhs_unconditional_probability(s) * sets[s].upper + for s in self.RHS.keys()])) + + return self.upper
    + +
    [docs] def get_lower(self, sets): + if self.lower is None: + self.lower = np.nansum(np.array([self.rhs_unconditional_probability(s) * sets[s].lower + for s in self.RHS.keys()])) + + return self.lower
    + + def __str__(self): + tmp2 = "" + for c in sorted(self.RHS.keys()): + if len(tmp2) > 0: + tmp2 = tmp2 + ", " + tmp2 = tmp2 + "(" + str(round(self.RHS[c] / self.frequency_count, 3)) + ")" + c + return self.get_key() + " -> " + tmp2
    + + +
    [docs]class ProbabilisticWeightedFTS(ifts.IntervalFTS): + """High Order Probabilistic Weighted Fuzzy Time Series""" + def __init__(self, **kwargs): + super(ProbabilisticWeightedFTS, self).__init__(**kwargs) + self.shortname = "PWFTS" + self.name = "Probabilistic FTS" + self.detail = "Silva, P.; Guimarães, F.; Sadaei, H." + self.flrgs = {} + self.global_frequency_count = 0 + self.has_point_forecasting = True + self.has_interval_forecasting = True + self.has_probability_forecasting = True + self.is_high_order = True + self.min_order = 1 + self.auto_update = kwargs.get('update',False) + self.configure_lags(**kwargs) + +
    [docs] def train(self, data, **kwargs): + + self.configure_lags(**kwargs) + + if not kwargs.get('fuzzyfied',False): + self.generate_flrg2(data) + else: + self.generate_flrg_fuzzyfied(data)
    + +
    [docs] def generate_flrg2(self, data): + fuzz = [] + l = len(data) + for k in np.arange(0, l): + fuzz.append(self.partitioner.fuzzyfy(data[k], mode='both', method='fuzzy', + alpha_cut=self.alpha_cut)) + + self.generate_flrg_fuzzyfied(fuzz)
    + +
    [docs] def generate_flrg_fuzzyfied(self, data): + l = len(data) + for k in np.arange(self.max_lag, l): + sample = data[k - self.max_lag: k] + set_sample = [] + for instance in sample: + set_sample.append([k for k, v in instance]) + + flrgs = self.generate_lhs_flrg_fuzzyfied(set_sample) + + for flrg in flrgs: + + if flrg.get_key() not in self.flrgs: + self.flrgs[flrg.get_key()] = flrg; + + lhs_mv = self.pwflrg_lhs_memberhip_fuzzyfied(flrg, sample) + + mvs = [] + inst = data[k] + for set, mv in inst: + self.flrgs[flrg.get_key()].append_rhs(set, count=lhs_mv * mv) + mvs.append(mv) + + tmp_fq = np.nansum([lhs_mv * kk for kk in mvs if kk > 0]) + + self.global_frequency_count += tmp_fq
    + +
    [docs] def pwflrg_lhs_memberhip_fuzzyfied(self, flrg, sample): + vals = [] + for ct in range(len(flrg.LHS)): # fuzz in enumerate(sample): + vals.append([mv for fset, mv in sample[ct] if fset == flrg.LHS[ct]]) + + return np.nanprod(vals)
    + +
    [docs] def generate_lhs_flrg(self, sample, explain=False): + if not isinstance(sample, (tuple, list, np.ndarray)): + sample = [sample] + + nsample = [self.partitioner.fuzzyfy(k, mode="sets", alpha_cut=self.alpha_cut) + for k in sample] + + return self.generate_lhs_flrg_fuzzyfied(nsample, explain)
    + +
    [docs] def generate_lhs_flrg_fuzzyfied(self, sample, explain=False): + lags = [] + + flrgs = [] + + for ct, o in enumerate(self.lags): + lhs = sample[o - 1] + lags.append( lhs ) + + if explain: + print("\t (Lag {}) {} -> {} \n".format(o, sample[o-1], lhs)) + + # Trace the possible paths + for path in product(*lags): + flrg = ProbabilisticWeightedFLRG(self.order) + + for lhs in path: + flrg.append_lhs(lhs) + + flrgs.append(flrg) + + return flrgs
    + +
    [docs] def generate_flrg(self, data): + l = len(data) + for k in np.arange(self.max_lag, l): + if self.dump: print("FLR: " + str(k)) + + sample = data[k - self.max_lag: k] + + flrgs = self.generate_lhs_flrg(sample) + + for flrg in flrgs: + + lhs_mv = flrg.get_membership(sample, self.partitioner.sets) + + if flrg.get_key() not in self.flrgs: + self.flrgs[flrg.get_key()] = flrg; + + fuzzyfied = self.partitioner.fuzzyfy(data[k], mode='both', method='fuzzy', + alpha_cut=self.alpha_cut) + + mvs = [] + for set, mv in fuzzyfied: + self.flrgs[flrg.get_key()].append_rhs(set, count=lhs_mv * mv) + mvs.append(mv) + + tmp_fq = np.nansum([lhs_mv*kk for kk in mvs if kk > 0]) + + self.global_frequency_count += tmp_fq
    + + +
    [docs] def update_model(self,data): + pass
    + + +
    [docs] def add_new_PWFLGR(self, flrg): + if flrg.get_key() not in self.flrgs: + tmp = ProbabilisticWeightedFLRG(self.order) + for fs in flrg.LHS: tmp.append_lhs(fs) + tmp.append_rhs(flrg.LHS[-1]) + self.flrgs[tmp.get_key()] = tmp; + self.global_frequency_count += 1
    + +
    [docs] def flrg_lhs_unconditional_probability(self, flrg): + if flrg.get_key() in self.flrgs: + return self.flrgs[flrg.get_key()].frequency_count / self.global_frequency_count + else: + return 1.0
    + #self.add_new_PWFLGR(flrg) + #return self.flrg_lhs_unconditional_probability(flrg) + +
    [docs] def flrg_lhs_conditional_probability(self, x, flrg): + mv = flrg.get_membership(x, self.partitioner.sets) + pb = self.flrg_lhs_unconditional_probability(flrg) + return mv * pb
    + +
    [docs] def flrg_lhs_conditional_probability_fuzzyfied(self, x, flrg): + mv = self.pwflrg_lhs_memberhip_fuzzyfied(flrg, x) + pb = self.flrg_lhs_unconditional_probability(flrg) + return mv * pb
    + +
    [docs] def get_midpoint(self, flrg): + if flrg.get_key() in self.flrgs: + tmp = self.flrgs[flrg.get_key()] + ret = tmp.get_midpoint(self.partitioner.sets) #sum(np.array([tmp.rhs_unconditional_probability(s) * self.setsDict[s].centroid for s in tmp.RHS])) + else: + if len(flrg.LHS) > 0: + pi = 1 / len(flrg.LHS) + ret = np.nansum(np.array([pi * self.partitioner.sets[s].centroid for s in flrg.LHS])) + else: + ret = np.nan + return ret
    + +
    [docs] def flrg_rhs_conditional_probability(self, x, flrg): + + if flrg.get_key() in self.flrgs: + _flrg = self.flrgs[flrg.get_key()] + cond = [] + for s in _flrg.RHS.keys(): + _set = self.partitioner.sets[s] + tmp = _flrg.rhs_unconditional_probability(s) * (_set.membership(x) / _set.partition_function(uod=self.get_UoD())) + cond.append(tmp) + ret = np.nansum(np.array(cond)) + else: + pi = 1 / len(flrg.LHS) + ret = np.nansum(np.array([pi * self.partitioner.sets[s].membership(x) for s in flrg.LHS])) + return ret
    + +
    [docs] def get_upper(self, flrg): + if flrg.get_key() in self.flrgs: + tmp = self.flrgs[flrg.get_key()] + ret = tmp.get_upper(self.partitioner.sets) + else: + ret = 0 + return ret
    + +
    [docs] def get_lower(self, flrg): + if flrg.get_key() in self.flrgs: + tmp = self.flrgs[flrg.get_key()] + ret = tmp.get_lower(self.partitioner.sets) + else: + ret = 0 + return ret
    + +
    [docs] def forecast(self, data, **kwargs): + method = kwargs.get('method','heuristic') + + l = len(data)+1 + + ret = [] + + for k in np.arange(self.max_lag, l): + sample = data[k - self.max_lag: k] + + if method == 'heuristic': + ret.append(self.point_heuristic(sample, **kwargs)) + elif method == 'expected_value': + ret.append(self.point_expected_value(sample, **kwargs)) + else: + raise ValueError("Unknown point forecasting method!") + + if self.auto_update and k > self.order+1: self.update_model(data[k - self.order - 1 : k]) + + return ret
    + +
    [docs] def point_heuristic(self, sample, **kwargs): + + explain = kwargs.get('explain', False) + fuzzyfied = kwargs.get('fuzzyfied', False) + + if explain: + print("Fuzzyfication \n") + + if not fuzzyfied: + flrgs = self.generate_lhs_flrg(sample, explain) + else: + fsets = self.get_sets_from_both_fuzzyfication(sample) + flrgs = self.generate_lhs_flrg_fuzzyfied(fsets, explain) + + mp = [] + norms = [] + + if explain: + print("Rules:\n") + + for flrg in flrgs: + if not fuzzyfied: + norm = self.flrg_lhs_conditional_probability(sample, flrg) + else: + norm = self.flrg_lhs_conditional_probability_fuzzyfied(sample, flrg) + + if norm == 0: + norm = self.flrg_lhs_unconditional_probability(flrg) + + if explain: + print("\t {} \t Midpoint: {}\t Norm: {}\n".format(str(self.flrgs[flrg.get_key()]), + self.get_midpoint(flrg), norm)) + mp.append(norm * self.get_midpoint(flrg)) + norms.append(norm) + + norm = np.nansum(norms) + + final = np.nansum(mp) / norm if norm != 0 else 0 + + if explain: + print("Deffuzyfied value: {} \n".format(final)) + return final
    + +
    [docs] def get_sets_from_both_fuzzyfication(self, sample): + return [[k for k, v in inst] for inst in sample]
    + +
    [docs] def point_expected_value(self, sample, **kwargs): + explain = kwargs.get('explain', False) + + dist = self.forecast_distribution(sample, **kwargs)[0] + + final = dist.expected_value() + return final
    + +
    [docs] def forecast_interval(self, ndata, **kwargs): + + method = kwargs.get('method','heuristic') + alpha = kwargs.get('alpha', 0.05) + + l = len(ndata) + + ret = [] + + for k in np.arange(self.max_lag - 1, l): + + sample = ndata[k - (self.max_lag - 1): k + 1] + + if method == 'heuristic': + ret.append(self.interval_heuristic(sample, **kwargs)) + elif method == 'quantile': + ret.append(self.interval_quantile(sample, alpha, **kwargs)) + else: + raise ValueError("Unknown interval forecasting method!") + + return ret
    + +
    [docs] def interval_quantile(self, ndata, alpha, **kwargs): + dist = self.forecast_distribution(ndata, **kwargs) + itvl = dist[0].quantile([alpha, 1.0 - alpha]) + return itvl
    + +
    [docs] def interval_heuristic(self, sample, **kwargs): + fuzzyfied = kwargs.get('fuzzyfied', False) + + if not fuzzyfied: + flrgs = self.generate_lhs_flrg(sample) + else: + fsets = self.get_sets_from_both_fuzzyfication(sample) + flrgs = self.generate_lhs_flrg_fuzzyfied(fsets) + + up = [] + lo = [] + norms = [] + for flrg in flrgs: + if not fuzzyfied: + norm = self.flrg_lhs_conditional_probability(sample, flrg) + else: + norm = self.flrg_lhs_conditional_probability_fuzzyfied(sample, flrg) + + if norm == 0: + norm = self.flrg_lhs_unconditional_probability(flrg) + up.append(norm * self.get_upper(flrg)) + lo.append(norm * self.get_lower(flrg)) + norms.append(norm) + + # gerar o intervalo + norm = np.nansum(norms) + if norm == 0: + return [0, 0] + else: + lo_ = np.nansum(lo) / norm + up_ = np.nansum(up) / norm + return [lo_, up_]
    + +
    [docs] def forecast_distribution(self, ndata, **kwargs): + + smooth = kwargs.get("smooth", "none") + + from_distribution = kwargs.get('from_distribution', False) + + fuzzyfied = kwargs.get('fuzzyfied', False) + + l = len(ndata) + uod = self.get_UoD() + + if 'bins' in kwargs: + _bins = kwargs.pop('bins') + nbins = len(_bins) + else: + nbins = kwargs.get("num_bins", 100) + _bins = np.linspace(uod[0], uod[1], nbins) + + ret = [] + + for k in np.arange(self.max_lag - 1, l): + sample = ndata[k - (self.max_lag - 1): k + 1] + + if from_distribution: + dist = self.forecast_distribution_from_distribution(sample,smooth,uod,_bins) + else: + + if not fuzzyfied: + flrgs = self.generate_lhs_flrg(sample) + else: + fsets = self.get_sets_from_both_fuzzyfication(sample) + flrgs = self.generate_lhs_flrg_fuzzyfied(fsets) + + if 'type' in kwargs: + kwargs.pop('type') + + dist = ProbabilityDistribution.ProbabilityDistribution(smooth, uod=uod, bins=_bins, **kwargs) + + for bin in _bins: + num = [] + den = [] + for s in flrgs: + if s.get_key() in self.flrgs: + flrg = self.flrgs[s.get_key()] + wi = flrg.rhs_conditional_probability(bin, self.partitioner.sets, uod, nbins) + if not fuzzyfied: + pk = flrg.lhs_conditional_probability(sample, self.partitioner.sets, self.global_frequency_count, uod, nbins) + else: + lhs_mv = self.pwflrg_lhs_memberhip_fuzzyfied(flrg, sample) + pk = flrg.lhs_conditional_probability_fuzzyfied(lhs_mv, self.partitioner.sets, + self.global_frequency_count, uod, nbins) + + num.append(wi * pk) + den.append(pk) + else: + num.append(0.0) + den.append(0.000000001) + pf = np.nansum(num) / np.nansum(den) + + dist.set(bin, pf) + + ret.append(dist) + + return ret
    + + def __check_point_bounds(self, point): + lower_set = self.partitioner.lower_set() + upper_set = self.partitioner.upper_set() + return point <= lower_set.lower or point >= upper_set.upper + +
    [docs] def forecast_ahead(self, data, steps, **kwargs): + + l = len(data) + + fuzzyfied = kwargs.get('fuzzyfied', False) + + start = kwargs.get('start_at', 0) + + if isinstance(data, np.ndarray): + data = data.tolist() + + ret = data[start: start+self.max_lag] + + for k in np.arange(self.max_lag, steps+self.max_lag): + + if self.__check_point_bounds(ret[-1]) and not fuzzyfied: + ret.append(ret[-1]) + else: + mp = self.forecast(ret[k - self.max_lag: k], **kwargs) + ret.append(mp[0]) + + return ret[-steps:]
    + + def __check_interval_bounds(self, interval): + if len(self.transformations) > 0: + lower_set = self.partitioner.lower_set() + upper_set = self.partitioner.upper_set() + return interval[0] <= lower_set.lower and interval[1] >= upper_set.upper + elif len(self.transformations) == 0: + return interval[0] <= self.original_min and interval[1] >= self.original_max + +
    [docs] def forecast_ahead_interval(self, data, steps, **kwargs): + + start = kwargs.get('start_at', 0) + + if 'fuzzyfied' in kwargs: + fuzzyfied = kwargs.pop('fuzzyfied') + else: + fuzzyfied = False + + sample = data[start: start + self.max_lag] + + if not fuzzyfied: + ret = [[k, k] for k in sample] + else: + ret = [] + for k in sample: + kv = self.partitioner.defuzzyfy(k, mode='both') + ret.append([kv, kv]) + + ret.append(self.forecast_interval(sample, **kwargs)[0]) + + for k in np.arange(start + self.max_lag, steps + start + self.max_lag): + + if len(ret) > 0 and self.__check_interval_bounds(ret[-1]): + ret.append(ret[-1]) + else: + lower = self.forecast_interval([ret[x][0] for x in np.arange(k - self.max_lag, k)], **kwargs) + upper = self.forecast_interval([ret[x][1] for x in np.arange(k - self.max_lag, k)], **kwargs) + + ret.append([np.min(lower), np.max(upper)]) + + return ret[-steps:]
    + +
    [docs] def forecast_ahead_distribution(self, ndata, steps, **kwargs): + + ret = [] + + if 'type' in kwargs: + kwargs.pop('type') + + smooth = kwargs.get("smooth", "none") + + uod = self.get_UoD() + + if 'bins' in kwargs: + _bins = kwargs.pop('bins') + nbins = len(_bins) + else: + nbins = kwargs.get("num_bins", 100) + _bins = np.linspace(uod[0], uod[1], nbins) + + start = kwargs.get('start_at', 0) + + if 'fuzzyfied' in kwargs: + fuzzyfied = kwargs.pop('fuzzyfied') + else: + fuzzyfied = False + + if not fuzzyfied: + sample = ndata[start: start + self.max_lag] + else: + sample = [] + for k in ndata[start: start + self.max_lag]: + kv = self.partitioner.defuzzyfy(k, mode='both') + sample.append(kv) + + for dat in sample: + if not isinstance(dat, ProbabilityDistribution.ProbabilityDistribution): + tmp = ProbabilityDistribution.ProbabilityDistribution(smooth, uod=uod, bins=_bins, **kwargs) + tmp.set(dat, 1.0) + ret.append(tmp) + else: + ret.append(dat) + + dist = self.forecast_distribution_from_distribution(ret, smooth,uod,_bins,**kwargs) + + ret.append(dist) + + for k in np.arange(start + self.max_lag, steps + start + self.max_lag): + dist = self.forecast_distribution_from_distribution(ret[k-self.max_lag:], smooth, uod, _bins, **kwargs) + ret.append(dist) + + return ret[-steps:]
    + +
    [docs] def forecast_distribution_from_distribution(self, previous_dist, smooth, uod, bins, **kwargs): + dist = ProbabilityDistribution.ProbabilityDistribution(smooth, uod=uod, bins=bins, **kwargs) + + lags = [] + + # Find all bins of past distributions with probability greater than zero + + for ct, lag in enumerate(self.lags): + dd = previous_dist[-lag] + vals = [float(v) for v in dd.bins if np.round(dd.density(v), 4) > 0.0] + lags.append(sorted(vals)) + + # Trace all possible combinations between the bins of past distributions + + for path in product(*lags): + + # get the combined probabilities for this path + pk = np.prod([previous_dist[-lag].density(path[ct]) + for ct, lag in enumerate(self.lags)]) + + d = self.forecast_distribution(path)[0] + + for bin in bins: + dist.set(bin, dist.density(bin) + pk * d.density(bin)) + + return dist
    + + def __str__(self): + tmp = self.name + ":\n" + for r in sorted(self.flrgs.keys()): + p = round(self.flrgs[r].frequency_count / self.global_frequency_count, 3) + tmp = tmp + "(" + str(p) + ") " + str(self.flrgs[r]) + "\n" + return tmp
    + + +
    [docs]def visualize_distributions(model, **kwargs): + import matplotlib.pyplot as plt + from matplotlib import gridspec + import seaborn as sns + + ordered_sets = model.partitioner.ordered_sets + ftpg_keys = sorted(model.flrgs.keys(), key=lambda x: model.flrgs[x].get_midpoint(model.sets)) + + lhs_probs = [model.flrg_lhs_unconditional_probability(model.flrgs[k]) + for k in ftpg_keys] + + mat = np.zeros((len(ftpg_keys), len(ordered_sets))) + for row, w in enumerate(ftpg_keys): + for col, k in enumerate(ordered_sets): + if k in model.flrgs[w].RHS: + mat[row, col] = model.flrgs[w].rhs_unconditional_probability(k) + + size = kwargs.get('size', (5,10)) + + fig = plt.figure(figsize=size) + + gs = gridspec.GridSpec(1, 2, width_ratios=[1, 4]) + ax1 = plt.subplot(gs[0]) + sns.barplot(x='y', y='x', color='darkblue', data={'x': ftpg_keys, 'y': lhs_probs}, ax=ax1) + ax1.set_ylabel("LHS Probabilities") + + ind_sets = range(len(ordered_sets)) + ax = plt.subplot(gs[1]) + sns.heatmap(mat, cmap='Blues', ax=ax, yticklabels=False) + ax.set_title("RHS probabilities") + ax.set_xticks(ind_sets) + ax.set_xticklabels(ordered_sets) + ax.grid(True) + ax.xaxis.set_tick_params(rotation=90)
    +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/models/sadaei.html b/docs/build/html/_modules/pyFTS/models/sadaei.html new file mode 100644 index 0000000..29210a1 --- /dev/null +++ b/docs/build/html/_modules/pyFTS/models/sadaei.html @@ -0,0 +1,215 @@ + + + + + + + + + pyFTS.models.sadaei — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.models.sadaei

    +"""
    +First Order Exponentialy Weighted Fuzzy Time Series by Sadaei et al. (2013)
    +
    +H. J. Sadaei, R. Enayatifar, A. H. Abdullah, and A. Gani, “Short-term load forecasting using a hybrid model with a 
    +refined exponentially weighted fuzzy time series and an improved harmony search,” Int. J. Electr. Power Energy Syst., vol. 62, no. from 2005, pp. 118–129, 2014.
    +"""
    +
    +import numpy as np
    +from pyFTS.common import FuzzySet,FLR,fts, flrg
    +
    +default_c = 1.1
    +
    +
    +
    [docs]class ExponentialyWeightedFLRG(flrg.FLRG): + """First Order Exponentialy Weighted Fuzzy Logical Relationship Group""" + def __init__(self, LHS, **kwargs): + super(ExponentialyWeightedFLRG, self).__init__(1, **kwargs) + self.LHS = LHS + self.RHS = [] + self.count = 0.0 + self.c = kwargs.get("c",default_c) + self.w = None + +
    [docs] def append_rhs(self, c, **kwargs): + count = kwargs.get('count', 1.0) + self.RHS.append(c) + self.count += count
    + +
    [docs] def weights(self): + if self.w is None: + wei = [self.c ** k for k in np.arange(0.0, self.count, 1.0)] + tot = sum(wei) + self.w = np.array([k / tot for k in wei]) + return self.w
    + + def __str__(self): + tmp = self.LHS + " -> " + tmp2 = "" + cc = 0 + wei = [self.c ** k for k in np.arange(0.0, self.count, 1.0)] + tot = sum(wei) + for c in sorted(self.RHS): + if len(tmp2) > 0: + tmp2 = tmp2 + "," + tmp2 = tmp2 + c + "(" + str(wei[cc] / tot) + ")" + cc = cc + 1 + return tmp + tmp2 + + def __len__(self): + return len(self.RHS)
    + + +
    [docs]class ExponentialyWeightedFTS(fts.FTS): + """First Order Exponentialy Weighted Fuzzy Time Series""" + def __init__(self, **kwargs): + super(ExponentialyWeightedFTS, self).__init__(order=1, name="EWFTS", **kwargs) + self.name = "Exponentialy Weighted FTS" + self.detail = "Sadaei" + self.c = kwargs.get('c', default_c) + +
    [docs] def generate_flrg(self, flrs, c): + for flr in flrs: + if flr.LHS in self.flrgs: + self.flrgs[flr.LHS].append_rhs(flr.RHS) + else: + self.flrgs[flr.LHS] = ExponentialyWeightedFLRG(flr.LHS, c=c); + self.flrgs[flr.LHS].append_rhs(flr.RHS)
    + +
    [docs] def train(self, data, **kwargs): + tmpdata = self.partitioner.fuzzyfy(data, method='maximum', mode='sets') + flrs = FLR.generate_recurrent_flrs(tmpdata) + self.generate_flrg(flrs, self.c)
    + +
    [docs] def forecast(self, ndata, **kwargs): + + explain = kwargs.get('explain', False) + + if self.partitioner is not None: + ordered_sets = self.partitioner.ordered_sets + else: + ordered_sets = FuzzySet.set_ordered(self.partitioner.sets) + + data = np.array(ndata) + + l = len(ndata) + + ret = [] + + for k in np.arange(0, l): + + actual = FuzzySet.get_maximum_membership_fuzzyset(ndata[k], self.partitioner.sets, ordered_sets) + + if explain: + print("Fuzzyfication:\n\n {} -> {} \n".format(ndata[k], actual.name)) + + if actual.name not in self.flrgs: + ret.append(actual.centroid) + + if explain: + print("Rules:\n\n {} -> {} (Naïve)\t Midpoint: {} \n\n".format(actual.name, actual.name,actual.centroid)) + + else: + flrg = self.flrgs[actual.name] + mp = flrg.get_midpoints(self.partitioner.sets) + + final = mp.dot(flrg.weights()) + + ret.append(final) + + if explain: + print("Rules:\n\n {} \n\n ".format(str(flrg))) + print("Midpoints: \n\n {}\n\n".format(mp)) + + print("Deffuzyfied value: {} \n".format(final)) + + return ret
    +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/models/seasonal/cmsfts.html b/docs/build/html/_modules/pyFTS/models/seasonal/cmsfts.html new file mode 100644 index 0000000..e03a8e8 --- /dev/null +++ b/docs/build/html/_modules/pyFTS/models/seasonal/cmsfts.html @@ -0,0 +1,209 @@ + + + + + + + + + pyFTS.models.seasonal.cmsfts — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.models.seasonal.cmsfts

    +import numpy as np
    +from pyFTS.common import FuzzySet, FLR
    +from pyFTS.models.seasonal import sfts
    +from pyFTS.models import chen
    +
    +
    +
    [docs]class ContextualSeasonalFLRG(sfts.SeasonalFLRG): + """ + Contextual Seasonal Fuzzy Logical Relationship Group + """ + def __init__(self, seasonality): + super(ContextualSeasonalFLRG, self).__init__(seasonality) + self.RHS = {} + +
    [docs] def append_rhs(self, flr, **kwargs): + if flr.LHS in self.RHS: + self.RHS[flr.LHS].append_rhs(flr.RHS) + else: + self.RHS[flr.LHS] = chen.ConventionalFLRG(flr.LHS) + self.RHS[flr.LHS].append_rhs(flr.RHS)
    + + def __str__(self): + tmp = str(self.LHS) + ": \n " + tmp2 = "\t" + for r in sorted(self.RHS): + tmp2 += str(self.RHS[r]) + "\n\t" + return tmp + tmp2 + "\n"
    + + +
    [docs]class ContextualMultiSeasonalFTS(sfts.SeasonalFTS): + """ + Contextual Multi-Seasonal Fuzzy Time Series + """ + def __init__(self, **kwargs): + super(ContextualMultiSeasonalFTS, self).__init__(**kwargs) + self.name = "Contextual Multi Seasonal FTS" + self.shortname = "CMSFTS " + self.detail = "" + self.seasonality = 1 + self.has_seasonality = True + self.has_point_forecasting = True + self.is_high_order = True + self.is_multivariate = True + self.order = 1 + self.flrgs = {} + +
    [docs] def generate_flrg(self, flrs): + for flr in flrs: + + if str(flr.index) not in self.flrgs: + self.flrgs[str(flr.index)] = ContextualSeasonalFLRG(flr.index) + + self.flrgs[str(flr.index)].append_rhs(flr)
    + +
    [docs] def train(self, data, **kwargs): + if kwargs.get('sets', None) is not None: + self.sets = kwargs.get('sets', None) + if kwargs.get('parameters', None) is not None: + self.seasonality = kwargs.get('parameters', None) + flrs = FLR.generate_indexed_flrs(self.sets, self.indexer, data, + transformation=self.partitioner.transformation, + alpha_cut=self.alpha_cut) + self.generate_flrg(flrs)
    + +
    [docs] def get_midpoints(self, flrg, data): + ret = [] + for d in data: + if d in flrg.RHS: + ret.extend([self.sets[s].centroid for s in flrg.RHS[d].RHS]) + else: + ret.extend([self.sets[d].centroid]) + + return np.array(ret)
    + +
    [docs] def forecast(self, data, **kwargs): + ordered_sets = FuzzySet.set_ordered(self.sets) + + ret = [] + + index = self.indexer.get_season_of_data(data) + ndata = self.indexer.get_data(data) + + for k in np.arange(0, len(data)): + + if str(index[k]) in self.flrgs: + + flrg = self.flrgs[str(index[k])] + + d = FuzzySet.get_fuzzysets(ndata[k], self.sets, ordered_sets, alpha_cut=self.alpha_cut) + + mp = self.get_midpoints(flrg, d) + + ret.append(sum(mp) / len(mp)) + else: + ret.append(np.nan) + + return ret
    + +
    [docs] def forecast_ahead(self, data, steps, **kwargs): + ret = [] + for i in steps: + flrg = self.flrgs[str(i)] + + mp = self.get_midpoints(flrg) + + ret.append(sum(mp) / len(mp)) + + return ret
    + + +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/models/seasonal/msfts.html b/docs/build/html/_modules/pyFTS/models/seasonal/msfts.html new file mode 100644 index 0000000..c5f8f46 --- /dev/null +++ b/docs/build/html/_modules/pyFTS/models/seasonal/msfts.html @@ -0,0 +1,165 @@ + + + + + + + + + pyFTS.models.seasonal.msfts — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.models.seasonal.msfts

    +import numpy as np
    +from pyFTS.common import FLR
    +from pyFTS.models.seasonal import sfts
    +
    +
    +
    [docs]class MultiSeasonalFTS(sfts.SeasonalFTS): + """ + Multi-Seasonal Fuzzy Time Series + """ + def __init__(self, name, indexer, **kwargs): + super(MultiSeasonalFTS, self).__init__("MSFTS") + self.name = "Multi Seasonal FTS" + self.shortname = "MSFTS " + name + self.detail = "" + self.seasonality = 1 + self.has_seasonality = True + self.has_point_forecasting = True + self.is_high_order = False + self.is_multivariate = True + self.indexer = indexer + self.flrgs = {} + +
    [docs] def generate_flrg(self, flrs): + for flr in flrs: + + if str(flr.index) not in self.flrgs: + self.flrgs[str(flr.index)] = sfts.SeasonalFLRG(flr.index) + + self.flrgs[str(flr.index)].append_rhs(flr.RHS)
    + +
    [docs] def train(self, data, **kwargs): + if kwargs.get('sets', None) is not None: + self.sets = kwargs.get('sets', None) + if kwargs.get('parameters', None) is not None: + self.seasonality = kwargs.get('parameters', None) + #ndata = self.indexer.set_data(data,self.doTransformations(self.indexer.get_data(data))) + flrs = FLR.generate_indexed_flrs(self.sets, self.indexer, data) + self.generate_flrg(flrs)
    + +
    [docs] def forecast(self, data, **kwargs): + + ret = [] + + index = self.indexer.get_season_of_data(data) + ndata = self.indexer.get_data(data) + + for k in np.arange(0, len(index)): + + flrg = self.flrgs[str(index[k])] + + mp = self.getMidpoints(flrg) + + ret.append(sum(mp) / len(mp)) + + return ret
    + +
    [docs] def forecast_ahead(self, data, steps, **kwargs): + ret = [] + for i in steps: + flrg = self.flrgs[str(i)] + + mp = self.getMidpoints(flrg) + + ret.append(sum(mp) / len(mp)) + + return ret
    +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/models/seasonal/sfts.html b/docs/build/html/_modules/pyFTS/models/seasonal/sfts.html new file mode 100644 index 0000000..798e701 --- /dev/null +++ b/docs/build/html/_modules/pyFTS/models/seasonal/sfts.html @@ -0,0 +1,200 @@ + + + + + + + + + pyFTS.models.seasonal.sfts — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.models.seasonal.sfts

    +"""
    +Simple First Order Seasonal Fuzzy Time Series implementation of Song (1999) based of Conventional FTS by Chen (1996)
    +
    +Q. Song, “Seasonal forecasting in fuzzy time series,” Fuzzy sets Syst., vol. 107, pp. 235–236, 1999.
    +
    +S.-M. Chen, “Forecasting enrollments based on fuzzy time series,” Fuzzy Sets Syst., vol. 81, no. 3, pp. 311–319, 1996.
    +"""
    +
    +import numpy as np
    +from pyFTS.common import FuzzySet, FLR, flrg, fts
    +
    +
    +
    [docs]class SeasonalFLRG(flrg.FLRG): + """First Order Seasonal Fuzzy Logical Relationship Group""" + def __init__(self, seasonality): + super(SeasonalFLRG, self).__init__(1) + self.LHS = seasonality + self.RHS = [] + +
    [docs] def get_key(self): + return self.LHS
    + +
    [docs] def append_rhs(self, c, **kwargs): + self.RHS.append(c)
    + + def __str__(self): + tmp = str(self.LHS) + " -> " + tmp2 = "" + for c in sorted(self.RHS, key=lambda s: str(s)): + if len(tmp2) > 0: + tmp2 = tmp2 + "," + tmp2 = tmp2 + str(c) + return tmp + tmp2 + + def __len__(self): + return len(self.RHS)
    + + +
    [docs]class SeasonalFTS(fts.FTS): + """First Order Seasonal Fuzzy Time Series""" + def __init__(self, **kwargs): + super(SeasonalFTS, self).__init__(**kwargs) + self.name = "Seasonal FTS" + self.shortname = "SFTS" + self.order = 1 + self.seasonality = 1 + self.has_seasonality = True + self.has_point_forecasting = True + self.is_high_order = False + self.flrgs = {} + +
    [docs] def generate_flrg(self, flrs): + + for ct, flr in enumerate(flrs, start=1): + + season = self.indexer.get_season_by_index(ct)[0] + + ss = str(season) + + if ss not in self.flrgs: + self.flrgs[ss] = SeasonalFLRG(season) + + #print(season) + self.flrgs[ss].append_rhs(flr.RHS)
    + +
    [docs] def get_midpoints(self, flrg): + ret = np.array([self.sets[s].centroid for s in flrg.RHS]) + return ret
    + +
    [docs] def train(self, data, **kwargs): + if kwargs.get('sets', None) is not None: + self.sets = kwargs.get('sets', None) + tmpdata = FuzzySet.fuzzyfy_series_old(data, self.sets) + flrs = FLR.generate_non_recurrent_flrs(tmpdata) + self.generate_flrg(flrs)
    + +
    [docs] def forecast(self, data, **kwargs): + + l = len(data) + + ret = [] + + for k in np.arange(0, l): + + season = self.indexer.get_season_by_index(k)[0] + + flrg = self.flrgs[str(season)] + + mp = self.get_midpoints(flrg) + + ret.append(np.percentile(mp, 50)) + + return ret
    + + def __str__(self): + """String representation of the model""" + + tmp = self.name + ":\n" + for r in self.flrgs: + tmp = tmp + str(self.flrgs[r]) + "\n" + return tmp
    +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/models/song.html b/docs/build/html/_modules/pyFTS/models/song.html new file mode 100644 index 0000000..6f4b440 --- /dev/null +++ b/docs/build/html/_modules/pyFTS/models/song.html @@ -0,0 +1,186 @@ + + + + + + + + + pyFTS.models.song — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.models.song

    +"""
    +First Order Traditional Fuzzy Time Series method by Song & Chissom (1993)
    +
    +Q. Song and B. S. Chissom, “Fuzzy time series and its models,” Fuzzy Sets Syst., vol. 54, no. 3, pp. 269–277, 1993.
    +"""
    +
    +import numpy as np
    +from pyFTS.common import FuzzySet, FLR, fts
    +
    +
    +
    [docs]class ConventionalFTS(fts.FTS): + """Traditional Fuzzy Time Series""" + def __init__(self, **kwargs): + super(ConventionalFTS, self).__init__(order=1, name="FTS", **kwargs) + self.name = "Traditional FTS" + self.detail = "Song & Chissom" + if self.sets is not None and self.partitioner is not None: + self.sets = self.partitioner.sets + + self.R = None + + if self.sets is not None: + l = len(self.sets) + self.R = np.zeros((l,l)) + +
    [docs] def flr_membership_matrix(self, flr): + ordered_set = FuzzySet.set_ordered(self.sets) + centroids = [self.sets[k].centroid for k in ordered_set] + lm = [self.sets[flr.LHS].membership(k) for k in centroids] + rm = [self.sets[flr.RHS].membership(k) for k in centroids] + + l = len(ordered_set) + r = np.zeros((l, l)) + for k in range(0,l): + for l in range(0, l): + r[k][l] = min(lm[k], rm[l]) + + return r
    + +
    [docs] def operation_matrix(self, flrs): + l = len(self.sets) + if self.R is None or len(self.R) == 0 : + self.R = np.zeros((l, l)) + for k in flrs: + mm = self.flr_membership_matrix(k) + for k in range(0, l): + for l in range(0, l): + self.R[k][l] = max(self.R[k][l], mm[k][l])
    + + +
    [docs] def train(self, data, **kwargs): + + tmpdata = self.partitioner.fuzzyfy(data, method='maximum', mode='sets') + flrs = FLR.generate_non_recurrent_flrs(tmpdata) + self.operation_matrix(flrs)
    + +
    [docs] def forecast(self, ndata, **kwargs): + + if self.partitioner is not None: + ordered_sets = self.partitioner.ordered_sets + else: + ordered_sets = FuzzySet.set_ordered(self.sets) + + l = len(ndata) + npart = len(self.sets) + + ret = [] + + for k in np.arange(0, l): + mv = FuzzySet.fuzzyfy_instance(ndata[k], self.sets) + + r = [max([ min(self.R[i][j], mv[j]) for j in np.arange(0,npart) ]) for i in np.arange(0,npart)] + + fs = np.ravel(np.argwhere(r == max(r))) + + if len(fs) == 1: + ret.append(self.sets[ordered_sets[fs[0]]].centroid) + else: + mp = [self.sets[ordered_sets[s]].centroid for s in fs] + + ret.append( sum(mp)/len(mp)) + + return ret
    + + def __str__(self): + tmp = self.name + ":\n" + return tmp + str(self.R)
    +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/models/yu.html b/docs/build/html/_modules/pyFTS/models/yu.html new file mode 100644 index 0000000..fbc1a53 --- /dev/null +++ b/docs/build/html/_modules/pyFTS/models/yu.html @@ -0,0 +1,207 @@ + + + + + + + + + pyFTS.models.yu — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.models.yu

    +"""
    +First Order Weighted Fuzzy Time Series by Yu(2005)
    +
    +H.-K. Yu, “Weighted fuzzy time series models for TAIEX forecasting,” 
    +Phys. A Stat. Mech. its Appl., vol. 349, no. 3, pp. 609–624, 2005.
    +"""
    +
    +import numpy as np
    +from pyFTS.common import FuzzySet, FLR, fts, flrg
    +from pyFTS.models import chen
    +
    +
    +
    [docs]class WeightedFLRG(flrg.FLRG): + """First Order Weighted Fuzzy Logical Relationship Group""" + def __init__(self, LHS, **kwargs): + super(WeightedFLRG, self).__init__(1, **kwargs) + self.LHS = LHS + self.RHS = [] + self.count = 1.0 + self.w = None + +
    [docs] def append_rhs(self, c, **kwargs): + count = kwargs.get('count', 1.0) + self.RHS.append(c) + self.count += count
    + +
    [docs] def weights(self, sets): + if self.w is None: + tot = sum(np.arange(1.0, self.count, 1.0)) + self.w = np.array([k / tot for k in np.arange(1.0, self.count, 1.0)]) + return self.w
    + + def __str__(self): + tmp = self.LHS + " -> " + tmp2 = "" + cc = 1.0 + tot = sum(np.arange(1.0, self.count, 1.0)) + for c in sorted(self.RHS): + if len(tmp2) > 0: + tmp2 = tmp2 + "," + tmp2 = tmp2 + c + "(" + str(round(cc / tot, 3)) + ")" + cc = cc + 1.0 + return tmp + tmp2
    + + +
    [docs]class WeightedFTS(fts.FTS): + """First Order Weighted Fuzzy Time Series""" + def __init__(self, **kwargs): + super(WeightedFTS, self).__init__(order=1, name="WFTS", **kwargs) + self.name = "Weighted FTS" + self.detail = "Yu" + +
    [docs] def generate_FLRG(self, flrs): + for flr in flrs: + if flr.LHS in self.flrgs: + self.flrgs[flr.LHS].append_rhs(flr.RHS) + else: + self.flrgs[flr.LHS] = WeightedFLRG(flr.LHS); + self.flrgs[flr.LHS].append_rhs(flr.RHS)
    + +
    [docs] def train(self, ndata, **kwargs): + tmpdata = self.partitioner.fuzzyfy(ndata, method='maximum', mode='sets') + flrs = FLR.generate_recurrent_flrs(tmpdata) + self.generate_FLRG(flrs)
    + +
    [docs] def forecast(self, ndata, **kwargs): + + explain = kwargs.get('explain', False) + + if self.partitioner is not None: + ordered_sets = self.partitioner.ordered_sets + else: + ordered_sets = FuzzySet.set_ordered(self.partitioner.sets) + + ndata = np.array(ndata) + + l = len(ndata) if not explain else 1 + + ret = [] + + for k in np.arange(0, l): + + actual = FuzzySet.get_maximum_membership_fuzzyset(ndata[k], self.partitioner.sets, ordered_sets) + + if explain: + print("Fuzzyfication:\n\n {} -> {} \n\n".format(ndata[k], actual.name)) + + if actual.name not in self.flrgs: + ret.append(actual.centroid) + + if explain: + print("Rules:\n\n {} -> {} (Naïve)\t Midpoint: {} \n\n".format(actual.name, actual.name,actual.centroid)) + + else: + flrg = self.flrgs[actual.name] + mp = flrg.get_midpoints(self.partitioner.sets) + + final = mp.dot(flrg.weights(self.partitioner.sets)) + + ret.append(final) + + if explain: + print("Rules:\n\n {} \n\n ".format(str(flrg))) + print("Midpoints: \n\n {}\n\n".format(mp)) + + print("Deffuzyfied value: {} \n".format(final)) + + return ret
    +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/partitioners/Huarng.html b/docs/build/html/_modules/pyFTS/partitioners/Huarng.html new file mode 100644 index 0000000..acf2a78 --- /dev/null +++ b/docs/build/html/_modules/pyFTS/partitioners/Huarng.html @@ -0,0 +1,154 @@ + + + + + + + + + pyFTS.partitioners.Huarng — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.partitioners.Huarng

    +"""
    +K. H. Huarng, “Effective lengths of intervals to improve forecasting in fuzzy time series,”
    +Fuzzy Sets Syst., vol. 123, no. 3, pp. 387–394, Nov. 2001.
    +"""
    +
    +import numpy as np
    +import math
    +import random as rnd
    +import functools, operator
    +from pyFTS.common import FuzzySet, Membership, Transformations
    +
    +from pyFTS.partitioners import partitioner
    +
    +
    [docs]class HuarngPartitioner(partitioner.Partitioner): + """Huarng Empirical Partitioner""" + def __init__(self, **kwargs): + super(HuarngPartitioner, self).__init__(name="Huarng", **kwargs) + +
    [docs] def build(self, data): + diff = Transformations.Differential(1) + data2 = diff.apply(data) + davg = np.abs( np.mean(data2) / 2 ) + + if davg <= 1.0: + base = 0.1 + elif 1 < davg <= 10: + base = 1.0 + elif 10 < davg <= 100: + base = 10 + else: + base = 100 + + sets = {} + + kwargs = {'type': self.type, 'variable': self.variable} + + dlen = self.max - self.min + npart = math.ceil(dlen / base) + partition = math.ceil(self.min) + for c in range(npart): + _name = self.get_name(c) + if self.membership_function == Membership.trimf: + sets[_name] = FuzzySet.FuzzySet(_name, Membership.trimf, + [partition - base, partition, partition + base], partition, **kwargs) + elif self.membership_function == Membership.gaussmf: + sets[_name] = FuzzySet.FuzzySet(_name, Membership.gaussmf, + [partition, base/2], partition) + elif self.membership_function == Membership.trapmf: + sets[_name] = FuzzySet.FuzzySet(_name, Membership.trapmf, + [partition - base, partition - (base/2), + partition + (base / 2), partition + base], partition, **kwargs) + + partition += base + + return sets
    +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/partitioners/Util.html b/docs/build/html/_modules/pyFTS/partitioners/Util.html new file mode 100644 index 0000000..c3855c7 --- /dev/null +++ b/docs/build/html/_modules/pyFTS/partitioners/Util.html @@ -0,0 +1,188 @@ + + + + + + + + + pyFTS.partitioners.Util — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.partitioners.Util

    +"""
    +Facility methods for pyFTS partitioners module
    +"""
    +
    +import numpy as np
    +import pandas as pd
    +import matplotlib as plt
    +import matplotlib.colors as pltcolors
    +import matplotlib.pyplot as plt
    +#from mpl_toolkits.mplot3d import Axes3D
    +
    +from pyFTS.benchmarks import Measures
    +from pyFTS.common import Membership, Util
    +from pyFTS.partitioners import Grid,Huarng,FCM,Entropy
    +
    +all_methods = [Grid.GridPartitioner, Entropy.EntropyPartitioner, FCM.FCMPartitioner, Huarng.HuarngPartitioner]
    +
    +mfs = [Membership.trimf, Membership.gaussmf, Membership.trapmf]
    +
    +
    +
    [docs]def plot_sets(data, sets, titles, size=[12, 10], save=False, file=None, axis=None): + num = len(sets) + + if axis is None: + fig, axes = plt.subplots(nrows=num, ncols=1,figsize=size) + for k in np.arange(0,num): + ticks = [] + x = [] + ax = axes[k] if axis is None else axis + ax.set_title(titles[k]) + ax.set_ylim([0, 1.1]) + for key in sets[k].keys(): + s = sets[k][key] + if s.mf == Membership.trimf: + ax.plot(s.parameters,[0,1,0]) + elif s.mf == Membership.gaussmf: + tmpx = [ kk for kk in np.arange(s.lower, s.upper)] + tmpy = [s.membership(kk) for kk in np.arange(s.lower, s.upper)] + ax.plot(tmpx, tmpy) + elif s.mf == Membership.trapmf: + ax.plot(s.parameters, [0, 1, 1, 0]) + ticks.append(str(round(s.centroid, 0)) + '\n' + s.name) + x.append(s.centroid) + ax.xaxis.set_ticklabels(ticks) + ax.xaxis.set_ticks(x) + + if axis is None: + plt.tight_layout() + + Util.show_and_save_image(fig, file, save)
    + + +
    [docs]def plot_partitioners(data, objs, tam=[12, 10], save=False, file=None, axis=None): + sets = [k.sets for k in objs] + titles = [k.name for k in objs] + plot_sets(data, sets, titles, tam, save, file, axis)
    + + +
    [docs]def explore_partitioners(data, npart, methods=None, mf=None, transformation=None, + size=[12, 10], save=False, file=None): + """ + Create partitioners for the mf membership functions and npart partitions and show the partitioning images. + :data: Time series data + :npart: Maximum number of partitions of the universe of discourse + :methods: A list with the partitioning methods to be used + :mf: A list with the membership functions to be used + :transformation: a transformation to be used in partitioner + :size: list, the size of the output image [width, height] + :save: boolean, if the image will be saved on disk + :file: string, the file path to save the image + :return: the list of the built partitioners + """ + if methods is None: + methods = all_methods + + if mf is None: + mf = mfs + + objs = [] + + for p in methods: + for m in mf: + obj = p(data=data, npart=npart, func=m, transformation=transformation) + obj.name = obj.name + " - " + obj.membership_function.__name__ + objs.append(obj) + + plot_partitioners(data, objs, size, save, file) + + return objs
    +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/partitioners/parallel_util.html b/docs/build/html/_modules/pyFTS/partitioners/parallel_util.html new file mode 100644 index 0000000..71e4683 --- /dev/null +++ b/docs/build/html/_modules/pyFTS/partitioners/parallel_util.html @@ -0,0 +1,131 @@ + + + + + + + + + pyFTS.partitioners.parallel_util — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.partitioners.parallel_util

    +from copy import deepcopy
    +from joblib import Parallel, delayed
    +import multiprocessing
    +import  numpy as np
    +
    +from pyFTS.common import Membership, Util
    +from pyFTS.partitioners import Grid,Huarng,FCM,Entropy
    +from pyFTS.partitioners import Util
    +
    +
    +
    [docs]def explore_partitioners(data, npart, methods=None, mf=None, tam=[12, 10], save=False, file=None): + all_methods = [Grid.GridPartitioner, Entropy.EntropyPartitioner, FCM.FCMPartitioner] + mfs = [Membership.trimf, Membership.gaussmf, Membership.trapmf] + + if methods is None: + methods = all_methods + + if mf is None: + mf = mfs + + num_cores = multiprocessing.cpu_count() + + objs = [] + for method in methods: + print(str(method)) + tmp = Parallel(n_jobs=num_cores)(delayed(method)(deepcopy(data), npart, m) for m in mf) + objs.append(tmp) + + objs = np.ravel(objs).tolist() + + Util.plot_partitioners(data, objs, tam, save, file)
    + +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/probabilistic/ProbabilityDistribution.html b/docs/build/html/_modules/pyFTS/probabilistic/ProbabilityDistribution.html new file mode 100644 index 0000000..0e65d07 --- /dev/null +++ b/docs/build/html/_modules/pyFTS/probabilistic/ProbabilityDistribution.html @@ -0,0 +1,462 @@ + + + + + + + + + pyFTS.probabilistic.ProbabilityDistribution — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.probabilistic.ProbabilityDistribution

    +import numpy as np
    +import pandas as pd
    +import matplotlib.pyplot as plt
    +from pyFTS.common import FuzzySet,SortedCollection,tree
    +from pyFTS.probabilistic import kde
    +
    +
    +
    [docs]def from_point(x,**kwargs): + """ + Create a probability distribution from a scalar value + + :param x: scalar value + :param kwargs: common parameters of the distribution + :return: the ProbabilityDistribution object + """ + tmp = ProbabilityDistribution(**kwargs) + tmp.set(x, 1.0) + return tmp
    + + +
    [docs]class ProbabilityDistribution(object): + """ + Represents a discrete or continous probability distribution + If type is histogram, the PDF is discrete + If type is KDE the PDF is continuous + """ + def __init__(self, type = "KDE", **kwargs): + self.uod = kwargs.get("uod", None) + """Universe of discourse""" + + self.data = [] + + data = kwargs.get("data", None) + + self.type = type + """ + If type is histogram, the PDF is discrete + If type is KDE the PDF is continuous + """ + + self.bins = kwargs.get("bins", None) + """Number of bins on a discrete PDF""" + self.labels = kwargs.get("bins_labels", None) + """Bins labels on a discrete PDF""" + + if self.type == "KDE": + self.kde = kde.KernelSmoothing(h=kwargs.get("h", 0.5), kernel=kwargs.get("kernel", "epanechnikov")) + + if data is not None and self.uod is None: + _min = np.nanmin(data) + _min = _min * .7 if _min > 0 else _min * 1.3 + _max = np.nanmax(data) + _max = _max * 1.3 if _max > 0 else _max * .7 + self.uod = [_min, _max] + + self.nbins = kwargs.get("num_bins", 100) + + if self.bins is None: + self.bins = np.linspace(int(self.uod[0]), int(self.uod[1]), int(self.nbins)).tolist() + self.labels = [str(k) for k in self.bins] + + if self.uod is not None: + self.resolution = (self.uod[1] - self.uod[0]) / self.nbins + + self.bin_index = SortedCollection.SortedCollection(iterable=sorted(self.bins)) + self.quantile_index = None + self.distribution = {} + self.cdf = None + self.qtl = None + self.count = 0 + for k in self.bins: self.distribution[k] = 0 + + if data is not None: + self.append(data) + + self.name = kwargs.get("name", "") + +
    [docs] def set(self, value, density): + """ + Assert a probability 'density' for a certain value 'value', such that P(value) = density + + :param value: A value in the universe of discourse from the distribution + :param density: The probability density to assign to the value + """ + k = self.bin_index.find_ge(value) + self.distribution[k] = density
    + +
    [docs] def append(self, values): + """ + Increment the frequency count for the values + + :param values: A list of values to account the frequency + """ + if self.type == "histogram": + for k in values: + v = self.bin_index.find_ge(k) + self.distribution[v] += 1 + self.count += 1 + else: + self.data.extend(values) + self.distribution = {} + dens = self.density(self.bins) + for v,d in enumerate(dens): + self.distribution[self.bins[v]] = d
    + +
    [docs] def append_interval(self, intervals): + """ + Increment the frequency count for all values inside an interval + + :param intervals: A list of intervals do increment the frequency + """ + if self.type == "histogram": + for interval in intervals: + for k in self.bin_index.inside(interval[0], interval[1]): + self.distribution[k] += 1 + self.count += 1
    + +
    [docs] def density(self, values): + """ + Return the probability densities for the input values + + :param values: List of values to return the densities + :return: List of probability densities for the input values + """ + ret = [] + scalar = False + + if not isinstance(values, list): + values = [values] + scalar = True + + for k in values: + if self.type == "histogram": + v = self.bin_index.find_ge(k) + ret.append(self.distribution[v] / (self.count + 1e-5)) + elif self.type == "KDE": + v = self.kde.probability(k, data=self.data) + ret.append(v) + else: + v = self.bin_index.find_ge(k) + ret.append(self.distribution[v]) + + if scalar: + return ret[0] + + return ret
    + +
    [docs] def differential_offset(self, value): + """ + Auxiliary function for probability distributions of differentiated data + + :param value: + :return: + """ + nbins = [] + dist = {} + + for k in self.bins: + nk = k+value + nbins.append(nk) + dist[nk] = self.distribution[k] + + self.bins = nbins + self.distribution = dist + self.labels = [str(k) for k in self.bins] + + self.bin_index = SortedCollection.SortedCollection(iterable=sorted(self.bins)) + self.quantile_index = None + self.cdf = None + self.qtl = None
    + +
    [docs] def expected_value(self): + """ + Return the expected value of the distribution, as E[X] = ∑ x * P(x) + + :return: The expected value of the distribution + """ + return np.nansum([v * self.distribution[v] for v in self.bins])
    + +
    [docs] def build_cdf_qtl(self): + ret = 0.0 + self.cdf = {} + self.qtl = {} + for k in sorted(self.bins): + ret += self.density(k) + if k not in self.cdf: + self.cdf[k] = ret + + if str(ret) not in self.qtl: + self.qtl[str(ret)] = [] + + self.qtl[str(ret)].append(k) + + _keys = [float(k) for k in sorted(self.qtl.keys())] + + self.quantile_index = SortedCollection.SortedCollection(iterable=_keys)
    + +
    [docs] def cumulative(self, values): + """ + Return the cumulative probability densities for the input values, + such that F(x) = P(X <= x) + + :param values: A list of input values + :return: The cumulative probability densities for the input values + """ + if self.cdf is None: + self.build_cdf_qtl() + + if isinstance(values, list): + ret = [] + for val in values: + try: + k = self.bin_index.find_ge(val) + #ret.append(self.cdf[k]) + ret.append(self.cdf[val]) + except: + ret.append(np.nan) + else: + try: + k = self.bin_index.find_ge(values) + return self.cdf[k] + except: + return np.nan
    + +
    [docs] def quantile(self, values): + """ + Return the Universe of Discourse values in relation to the quantile input values, + such that Q(tau) = min( {x | F(x) >= tau }) + + :param values: input values + :return: The list of the quantile values for the input values + """ + if self.qtl is None: + self.build_cdf_qtl() + + if isinstance(values, list): + ret = [] + for val in values: + try: + k = self.quantile_index.find_ge(val) + ret.append(self.qtl[str(k)][0]) + except: + ret.append(np.nan) + else: + try: + k = self.quantile_index.find_ge(values) + ret = self.qtl[str(k)] + except: + return np.nan + + return ret
    + +
    [docs] def entropy(self): + """ + Return the entropy of the probability distribution, H(P) = E[ -ln P(X) ] = - ∑ P(x) log ( P(x) ) + + :return:the entropy of the probability distribution + """ + h = -np.nansum([self.distribution[k] * np.log(self.distribution[k]) if self.distribution[k] > 0 else 0 + for k in self.bins]) + return h
    + +
    [docs] def crossentropy(self,q): + """ + Cross entropy between the actual probability distribution and the informed one, + H(P,Q) = - ∑ P(x) log ( Q(x) ) + + :param q: a probabilistic.ProbabilityDistribution object + :return: Cross entropy between this probability distribution and the given distribution + """ + h = -np.nansum([self.distribution[k] * np.log(q.distribution[k]) if self.distribution[k] > 0 else 0 + for k in self.bins]) + return h
    + +
    [docs] def kullbackleiblerdivergence(self,q): + """ + Kullback-Leibler divergence between the actual probability distribution and the informed one. + DKL(P || Q) = - ∑ P(x) log( P(X) / Q(x) ) + + :param q: a probabilistic.ProbabilityDistribution object + :return: Kullback-Leibler divergence + """ + h = np.nansum([self.distribution[k] * np.log(self.distribution[k]/q.distribution[k]) if self.distribution[k] > 0 else 0 + for k in self.bins]) + return h
    + +
    [docs] def empiricalloglikelihood(self): + """ + Empirical Log Likelihood of the probability distribution, L(P) = ∑ log( P(x) ) + + :return: + """ + _s = 0 + for k in self.bins: + if self.distribution[k] > 0: + _s += np.log(self.distribution[k]) + return _s
    + +
    [docs] def pseudologlikelihood(self, data): + """ + Pseudo log likelihood of the probability distribution with respect to data + + :param data: + :return: + """ + + densities = self.density(data) + + _s = 0 + for k in densities: + if k > 0: + _s += np.log(k) + return _s
    + +
    [docs] def averageloglikelihood(self, data): + """ + Average log likelihood of the probability distribution with respect to data + + :param data: + :return: + """ + + densities = self.density(data) + + _s = 0 + for k in densities: + if k > 0: + _s += np.log(k) + return _s / len(data)
    + +
    [docs] def plot(self,axis=None,color="black",tam=[10, 6], title = None): + + if axis is None: + fig = plt.figure(figsize=tam) + axis = fig.add_subplot(111) + + if self.type == "histogram": + ys = [self.distribution[k]/self.count for k in self.bins] + else: + ys = [self.distribution[k] for k in self.bins] + yp = [0 for k in self.data] + axis.plot(self.data, yp, c="red") + + if title is None: + title = self.name + axis.plot(self.bins, ys, c=color) + axis.set_title(title) + + axis.set_xlabel('Universe of Discourse') + axis.set_ylabel('Probability')
    + + def __str__(self): + ret = "" + for k in sorted(self.bins): + ret += str(round(k,2)) + ':\t' + if self.type == "histogram": + ret += str(round(self.distribution[k] / self.count,3)) + elif self.type == "KDE": + ret += str(round(self.density(k),3)) + else: + ret += str(round(self.distribution[k], 6)) + ret += '\n' + return ret
    +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/pyFTS/probabilistic/kde.html b/docs/build/html/_modules/pyFTS/probabilistic/kde.html new file mode 100644 index 0000000..d8971b3 --- /dev/null +++ b/docs/build/html/_modules/pyFTS/probabilistic/kde.html @@ -0,0 +1,169 @@ + + + + + + + + + pyFTS.probabilistic.kde — pyFTS 1.6 documentation + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +

    Source code for pyFTS.probabilistic.kde

    +# -*- coding: utf8 -*-
    +
    +"""
    +Kernel Density Estimation 
    +"""
    +
    +from pyFTS.common import Transformations
    +import numpy as np
    +
    +
    +
    [docs]class KernelSmoothing(object): + """Kernel Density Estimation""" + def __init__(self, **kwargs): + self.h = kwargs.get('h',.5) + """Width parameter""" + self.kernel = kwargs.get("kernel", "epanechnikov") + """Kernel function""" + self.data = kwargs.get("data",None) + self.transf = Transformations.Scale(min=0,max=1) + + if self.data is not None: + self.data = self.transf.apply(self.data) + +
    [docs] def kernel_function(self, u): + """ + Apply the kernel + + :param u: + :return: + """ + if self.kernel == "epanechnikov": + tmp = (3/4)*(1.0 - u**2) + return tmp if tmp > 0 else 0 + elif self.kernel == "gaussian": + return (1.0/np.sqrt(2*np.pi))*np.exp(-0.5*u**2) + elif self.kernel == "uniform": + return 0.5 + elif self.kernel == "triangular": + tmp = 1.0 - np.abs(u) + return tmp if tmp > 0 else 0 + elif self.kernel == "logistic": + return 1.0/(np.exp(u)+2+np.exp(-u)) + elif self.kernel == "cosine": + return (np.pi/4.0)*np.cos((np.pi/2.0)*u) + elif self.kernel == "sigmoid": + return (2.0/np.pi)*(1.0/(np.exp(u)+np.exp(-u))) + elif self.kernel == "tophat": + return 1 if np.abs(u) < 0.5 else 0 + elif self.kernel == "exponential": + return 0.5 * np.exp(-np.abs(u))
    + +
    [docs] def probability(self, x, **kwargs): + """ + Probability of the point x on data + + :param x: + :param data: + :return: + """ + + if self.data is None: + self.data = kwargs.get('data',None) + self.data = self.transf.apply(self.data) + + l = len(self.data) + + nx = self.transf.apply(x) + p = sum([self.kernel_function((nx - k)/self.h) for k in self.data]) / l*self.h + + return p
    +
    + +
    +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/docs/build/html/_sources/pyFTS.common.rst.txt b/docs/build/html/_sources/pyFTS.common.rst.txt index 1e6db4b..412bd44 100644 --- a/docs/build/html/_sources/pyFTS.common.rst.txt +++ b/docs/build/html/_sources/pyFTS.common.rst.txt @@ -52,14 +52,6 @@ pyFTS.common.SortedCollection module :undoc-members: :show-inheritance: -pyFTS.common.transformations module ------------------------------------ - -.. automodule:: pyFTS.common.Transformations - :members: - :undoc-members: - :show-inheritance: - pyFTS.common.Util module ------------------------ diff --git a/docs/build/html/_sources/pyFTS.common.transformations.rst.txt b/docs/build/html/_sources/pyFTS.common.transformations.rst.txt index a604d7d..089f361 100644 --- a/docs/build/html/_sources/pyFTS.common.transformations.rst.txt +++ b/docs/build/html/_sources/pyFTS.common.transformations.rst.txt @@ -60,6 +60,14 @@ pyFTS.common.transformations.scale module :undoc-members: :show-inheritance: +pyFTS.common.transformations.smoothing module +--------------------------------------------- + +.. automodule:: pyFTS.common.transformations.smoothing + :members: + :undoc-members: + :show-inheritance: + pyFTS.common.transformations.som module --------------------------------------- diff --git a/docs/build/html/genindex.html b/docs/build/html/genindex.html index d9425f3..88bf84d 100644 --- a/docs/build/html/genindex.html +++ b/docs/build/html/genindex.html @@ -86,7 +86,29 @@

    Index

    A

    - +
  • append_complex() (pyFTS.partitioners.Simple.SimplePartitioner method)
  • -
    @@ -122,18 +230,38 @@

    A

    B