From c0c7197891d6b0cd03e64308d8c43476b25e5bcd Mon Sep 17 00:00:00 2001 From: Jan Nowak Date: Tue, 1 Jun 2021 00:47:01 +0200 Subject: [PATCH] Drobne poprawki. --- KernelRegression.ipynb | 2 +- files/est_weights.png | Bin 0 -> 70413 bytes kernel_regression.ipynb | 2647 ++++++++++++++++++++++++++++++++++++++- 3 files changed, 2621 insertions(+), 28 deletions(-) create mode 100644 files/est_weights.png diff --git a/KernelRegression.ipynb b/KernelRegression.ipynb index 251906b..8ed79cb 100644 --- a/KernelRegression.ipynb +++ b/KernelRegression.ipynb @@ -22634,7 +22634,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.8" + "version": "3.8.5" } }, "nbformat": 4, diff --git a/files/est_weights.png b/files/est_weights.png new file mode 100644 index 0000000000000000000000000000000000000000..38550162a245912fe03cd06afd1e8bb9f29a9c04 GIT binary patch literal 70413 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

hv5{)hP$RJ{h{iT_G0&al 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%0ALimr=oVNwKDHGE2V~6o zeq=S|5~h4;lqMoQ^MZJMM?m4G)`iKSA)Bgxl09vk7dKCb5Q`Lgp5j;>VRez^yySi2 z?SQ%5Ef&yw(- zwr=#>`+MJhDYG zt#t#O^>>^T{>}X;N{5_X%S581OgO@A`0Eu+<)BI#?cMg5<}cXrA2j>|p3gBy}mH-+(eTrZpG=nE}?c8WT~O!LJap- z?F>8nX|qm5Mg$qF3-1!ZYlQi@3YSi{K@5O{3-imJRk zV=>Y9U7-PAM(wDsyy`l9NjW7_#km>T#qCpUuvwW5;Go?Gq1 z9@zZ!>t=0R5v+FUF{8ew3=vMSs(SYh{SDQ5>-5GKj!vU23~u`w_H$SWBI0UoWp!FK zFQ@cMz2vj>*n*&le4w4qBS+j;1zoR9{sa(+XAjP+x7^x(-zEh6}6U!>As2#w~ah(|2A? zPMfzP`Wt%0534W|mXi)Eb_zs?ujg+xOUN+iPCz#9R1xuxk%#E?&B45e zd9ybs-!nO0ys>18a>L4Rp{M76(HT7Z%78k|XH(65qzPfUwJoZuC)Rx^T#xsKqSIrw zE^7!j@<=9Wr0`Mmi$?vgR|+|}ber2&MqKuw2ib!*G|=?e0PY(cyTa1K?7|fC!rzR2 zth2EKvOAZj(8{!x5t1hM`5ITgqotzXj6V$Hj3-s*z$XSNHu`<(Z9B=foRLL%PEnQ) zHyMXUe$EibR%$vEg=`LA4?iz6yP!L6qRw-NW|Ts{NpkgxvEF?&2hvu+yJP#z|x~i@m+HB%V)G)et zafUYn`8uZ(%<23m+Km-usV8j-BRSf6WF`d@Rpx$0d1bS4#GcJT#iZ|LpUC=DF83A{ z^Rf2TcC!)i?kxx9WJuFxsnRf>^V1F?nc$e`d7dY)fw<(FWWa!^`80-FL}Aw3C5vMM zFQJ-K=WJNBy=Lmk1g`0uQ{|M?S-@2e~$>TN`(8R(rn9P@BSwpxkwxyhXz4&yhX zzYBD~HwP#hEk(TZzn8|ZBwYVdc{z3vQATmB{pfV0xtk}O6&y170e1Q6T%k$g=aHnz zY`OG#=}}Mq+JskzNEJLp-P4WBK(ICjyFL*h+Kz*JCPjo-uge21ugbrVJ`;W=lUgzy zCa+~RFt}uLHEDX(PNEL^Dh{q2;uYaYw{yhjjONiJk0TSw42ea9eoP)7zlw4>(kXn9z3;M89x?3JjNEYl<*1-IuZ)_1-1jwX|r z*r|sMywg^iAg5Sc3_=xfYmr(eyigI}pg)jC#5^$IQw%b-bA? zzlsAOQb+16e1$XY#3OS0A5wuQTDZ*-_b6f<3w~Xur8l~KtRp&NpZnhDW#Rl;al6(D zQ*mGaYQN*?u!tnlc&x~qdQGQUZS zw60f512gjCsf1VC{Z4a2v*d!uSKfLZ6H@0M$V7LsJZaFPLkuL?9Jg_3HhcZvQFuO> zX(Q`?J`8V`6A)`$8zwuSx420e;BnMX>n3#fwi?b)T~29qh#WgCtNY z!J6={CUB?HmddC}TFA{68*Jn=d|k+AF`|0t%NpI!Q^bz_SEFLpV2#oe1Ium(Y9dGV zu;H0uIi>3r3;`caPmM`$9(#SSMLhmaYv|3DhB7wu=2Rf#%{Ce1HrbW_yz?(49PJtDg88r5p^F> zXMb%R#x(0ve?+Z!f1V8iTPY5stVb#IA6AQA_$y|p?eB~FEqSE~7hEYB2`-QpMMYdc zUInl7XX0oKSZ9fSf1X||=cSw+bEWxHMJlKN)KKSQ0+J^$gD27Bzg0>>y(v}F%kWd6 zeNT)2gaXr#L%oRNK2{jYdJLSfGUZXF)7JU)i-o;dx^AMF7ly1LY6(JjSAyi*6;mPYA3173E zc4rgYF2<_dO+LR3YvWJ@q@$>f-2~93Uow7@jdBSmULT3vb5dvUhv(=h)-I*)bv~VH zx&i;bTAv%6Gdg;w4Bpvj&O5N^kHGUTzTTULWH*^N{`AV;<>x$+7_q!a0*`u3aTC4p zD@*ta`~1pgeu~UQJ1Rq4(eDg)qH>baS^M3Gf9U4AbcPV4y=)P;6&23^c19rJc$|0e zOnT(mWYgaLT8qdp^m^_eNHs@7l1FY>8bZ!pob4gv4tr@p@@)Q1J@v_9b#mNvriz0xtsq}TE7nlmszy5&@) zQsv-yi)5}iuSi|%UpcJ{p50?yAG+4JfDKE)dxD_hQ9LV_Bg9i<9&y{GWEW}Xf!0H% zFYdI58pn*Chb zFLOou_$`I>S}Y1chqj#VrUWrT*JJddMe5x=YO)C?$q8x{J;~`B~jSHq_ycrewP$+=pSTD_LH;bQTu(!H!AWUY2M|8UkZ+bE-TektntAz+Mvk98wrObLAl zHdhR}+<-{n7VRa33`4KC6(6tNoviu)$olHID8J|5kAfhrC|yd3(%m5nA}yUucXurz ztblZPO83&eARygKw{$HXOLHIne82bp?!Eut-a=!0s^(f0)37M2=0tWt)AG z$W=S8R>w6yPp|A4J5Ag5t?ymFca0elncN$i3CH(W!FvIIlZt#idwQZg%$LMN%r<9s zz6;d%bA1w*ZJ5&zWP+op5haG1+mKiZYZ`eUml&)?-e>e8v*0q z&9@6}d&L7>5!@YCQ;j~{YpOPzc7~X=s93318eG_PzOSa-`dR68HofdE7PhZHiF^pf zE!BBF9p>SCY$txJQd|-3igarw!}b?-JIXqWnC+4|yu-7ZM`q~IG`U@D;m~mT#h^O; zw(f`|LrWk)_1#6hUZJQCE%2$6efhNZ=(Y>Q<>hQy>1>_lU35*;G0Lz%mHK#EMVbI8 znp~^&d%51Ywf^(#o|^DYsRMN>2TYaF`l~}Y69$HX=C zD@By)7Xdh&JfpwXP{W+=20gBC$NPI_;!#F?Q%UdoE69BwmKBlhm1}zUW^1~NuO?QZ z`4RZ+DgtRzy?^D~SofJb_RV~;X71&A^7Ps~fDVkdeU3uEovBu+!H}NWTJsS#SKI3% z1A{An;kG><(>nKVuO~l6?5O)##POP%`TE?mk=Mob{;bE@aq`ovweJ(n5moJCz zd{x-=({yCQvMGhJQTCR<{V2vPUe~gW z!(+?|%4`YubXHdS*d~^@kHc6#)7pn^Z$~NMf4{{j`a?8cjwVH5lB=RY<85c)H{%jZbW&c1r16e*LA19!mSzI`d%~#nH`f}!4c6XY zYR>612{56wUiyXXG&#*ZtDJd~XnZNtsj=p9O5Wg%g5FZlf3-iq(<{RY_=m6Shkme_ z#jCfO!-WlZo-PLA6gXsFmGVtk>!&X_LgYcjq+UWk6aY4r(){alO_^^p>LW1^QM*u& z#nE{~Q`9$DJyt{PVcZ@e-{H8DBfp?DGs%7qlYLjiF~~4HF5khcY5m}`!1yQAO{Bsa z1XQ=fF>X6QD~TWVVI1ANwSDyCaatn(Ib2(W2($v7lNz9ja#GzQ@stwK_1uv`-HFBg zcDVY!_6Lc-X5{%oD}3z;zQC*}6_jGo`G-TSG@m@)RA)r5@V$jnJu_wXJKh`zdl&x{-MC)EI6Ds|>_VQ_Q0g=xE;}L?0o+)u%fCj94d%sMcyREpWg)t#$n8 zW_jrQz6lB6Y3D?lb*>I)*hyk5nKGrZ1~vJTavxZ9+3`JUtM=_k=t5KPwe7p?2jqLl z{UCh5HRw!l)#WUspz@z#^grxBu$7TRvJVz5CQv&y68Fkkgn>%&HiET?4w7$qG?SG} zS8EUXRxgN@#PrUSVHZmejl z$YUch*1HUki9{v<2iE=evIK9I(6>t|iv@k@c<2FJ+TGP@8Sg>xawaXl;jYoFtAWPe zhT%1O%Cg_tuf+$_+6dKRuj}?hRH{@fgR(MplNT`(U7An6g&|o*F9$BmtYY-%10jZ$ z<}LOyDNvqq1wvK=2Msa4gx%Q8m!DK*MxH*ZB?q7Ph&o=Ear~lPpg*E8y3!8|Wf}N5 ze5@|xV=R;~GVAt6fED*NG*Q<|u_0gAN_`xstSgx zkFt{ly3mkn%1-|vSu-eoEw!rD>Tk53bBy62C<;d#mUx}0m z`+vZ+GZh{ikqk?A&JvBsWyYk`J-C_pPb47=-n?T_9}`l=%HJaC*7}uU=05|6kcp`r zGNBIFF3ldFzt{>*+Ow=*?SEZ^-k;xV`#aKr%S*Qu&@RX+e2&4u!FV|iPjQ63vSik2 zOhI@!1SX^Q4_K%nt#cH7uT}n>Li1v|eejpLy>?n#p~}*t-V{ad3pw@ehlKqY?eDhf zI`XlSv*SGU_&UQYFWeYL7VMU0C|ACMwq}6OUuV(ji$uQ8@%IDKJQ+F!cgje zCG+1)HGZlwou>Lmi!q0?Rvde>MQ}dxO8NKf@2eR4ySuZ69CWyzuw#zS8ozZ;xZsd% zo4CP9bUZ~bWnQvgjh-4-5LTF$---2t%@yRjL+<4Tx#p}NLb1us6_I5isPAEKpG@+0 zqN!Vo7?p!&1M1EnTek|qsh2Q-j?-fFmvr}>& zat_WB`~YD|HP=_*xWMHH0``bcYw@Ova*L~D7$0L;&iM5=AMc9%!j3arJD9at(sTrRkAz)VZr z3OG(?&bWCPtdu)T;fwC}T2*!&Vl&nA31(^fRPx?qjdQ;0K5~-}6T#o~sv2cB=a(2_ zCvc;kRxVP@J6@#ldchJ*t*x40vxIfy;dA)t)T*AU@T< z#TU5wNYHMWJy_l5KH}!IBI$7`4PvKR+6BMP0F!!HY|6)!P)hZ_u zT~MRIwn%&td2M$mS@FeuC#jNaGY9Jvx*Qn$E~l+&Q;iE$OVT=q=UADc{-3MN<$ z8hP+p84@!pUvYlnectwQ%_zI_M3fL6h}9LB`zn#(?gW<9;ANP42$Ps4sGFL;zn}KPI9<_0!U&pGMm#IP4;njv2cN;hD7hKjV zLomHsJ&zM7BpPFDCcj65&l&Vb+wX$#J%xw+V~evHasp!VV7r#45P3bWOh|Zf+ z{1k)JJ|mnW0p&$-bqK1u#q>tcUAN9^J7v{7lp+7xw4ynIQgLF{jK-qG$Dd!8!+q|| zm3`LvZ-0+O4}ARANmag%U{qV^jRfL!^y`qg!zK`Fr%1spwK?)Dt!=|b2ZcpLkA*6v~T+=6}fHBatzZj8l;<9L|LFW!Q_vyh}F}vd5V`b zN?M2%mb_v6vwp|=ogp|(JW71_&YclCHG5wWGq^m(7qC3q;=N2S4r23+cedA739p9u zGnX1^ULO*Wsk$^TCs^fAGl0YpV-04*TN~fEw~IgyFm)#M*7KI)L?@(?lTx`E0WR>W z)kPooxK&;v=r5br2K#J6GS3Cq9)H$__?&BaMb$Q?Iv~)@4EX;(~8s0-}75-b-?M5|w;)pH%oZUfFRhp99DTQCyhGzUnBh7K8nl6i@uIHsO zCVYveQ91%u!sW;i55wEh-!~En-$F~A9M~02K<6_zbs`w#}b<8 zM<51ssl4C1;1^PPyEW+aCD)}pq^K>5i4X>`3`xK26gsU0cBkUF0 zz#^r_Sk3zUqn@}dCmw4y`$mlbZ9Z`+16Gkd4sl+Dh}@s*q_YAy6CpKJpSCFln-hNN z=9i%y7%LTA8u{r#1GT$HuI=7vk{8MWoac3d(a#*@9hW2)r6tH!m@;^L(lnseK?YeO zB8qtfZZBEB%(;9$!Q^QvT8+-Gv>m|6F4+`H`WQgL`Y@)*cVKDmYofuTS&n`AnOtX= zX6<({yBT_f&KHU4goi|f?WB1fkf+kvdeASvbnGPI)FwRD_(Nn{OU&n+!8)&Jq&N9J z{4VcySyr<+aERXSkAIwG)^6+JOL+AZP$4R~j4x_&buY7ldrg-yJ*BMy6fs!!Y^+5+ zTfb24vB5z$)NH}ZgnhY$7M}(E`2e^}x1{!-2*3(JiyVHi?1rfkW(c;iNYeI;iJ$6L zPFr?ysJ=gm)vMCOHHH$PM{5gR6Y&NSVohESKtWY#9ERtdYb%ToO z-Q=PE`4d*;0{Ln!{MbvEdvi19nJXBYV~YxO#>I(Z19Ej^`_&q$`n+cBQD zlLr%E{0>{^#hXNlkgrJTM{C6|+I1Nj-Mwy)?qB4 zCBxg1G_yA6!KA3)t{1ul5seb%?+yvTWu>d>X|+Aa3bXz&^_<$RAf)sd09*LK3n)Xb zE^e#}Io!34ib~lj#a2q-7kznE-B&jMbimXyoAmOs&0cs@Mz^T1=rRghv1)HSecyy( zdX~|8PU+T-ZawP*6CBif{-(Jgt6b47xx(v#p688xMCwY=ELfcrRYMbVwzp3|CnBXY zC20@iH)^X!t1qaZAJoD*FAyIxKXUzjc4;0EQ{S+u#?zwixv5WksM;`XIq^b4X@Egh zJp?inYC5mCAw(&JhjpRLjo0|GJb9@^Mv?~;8Xu5Ro5*~|{}Y_o3tsF0Z~f;hLm^9H zk>U_beUiYLHIb8veJrfHl48`1(<*+sb4G^)NoRMU61n9m)hH=+w=TEWp7_4t)Uwlu~k^ z0}fIV-%3#{XECj_d=tC{6L>g4QmoZheMK^GT-oSc{TG|aI9W8q63TuN&ANJX2visU z3!^*xU=YP2f3BqotT_HLK%4>ahBzP&pc!RgJ+3U3aMF*A=f&U)y#G=8hT>RD(|G*f zH<eN7V?`pPx5BbqnZ5;04ifGkD^Lne?RS17$0x{O%v(7D*< z|5kA~8TI`asE?(Ck5jgkyuPBfd0kl2vyAD();hjR1F`Kef(sC2+v~%gF6`{yS8y1R z?f_P`t9!RnFaQTW`$~ODEU*T)og5p#?V10UBs$~V{I4!jsc83WtDa_#JGFT! zL?CFkVfdB3EZ5yurdWk2BX^QYx+PS$Gl{MMg9fBD6ns9O==ROMjL9xKMfrV;-m*4P z<1DIxTd0|H*@DVUltD-0@4@dvc?c7l|%AY=o!s{HM)YToy*APX6y*ORs; z7Xc{f8yNZp$uI&WYAa3DkJy5g@|eQXJa?R`G#V@iRh`Er=u~kYr|+E{uuhGWn*p2nR6hgF zRHv3lG$>ndO^-cDV=Z$1R;xUqbv^`gC|vxLN^%_l9QbMg2cGXM2+I;l+?^0oUku3?VA!_@&g|pNLg9gD0bF=*(z1&qDw;RF9UA5T06sXI1|Ogp60R<*aI?<}Khlbc==J>_6! zcH@oss?xbFuRXo%t$~L=d6vWJ!WRtCZ~&{I*rJBA*rYywSyF~ZOTo6-XHMpz@MgXm zz@^k`ad+tLpsa8{zU{Yh6h8~TQK8YKKjAMcI?dxQF20&j$ZaFBkW5CNKPW_ezbFSu zQBA;JO%FDy$!`p&#?jl)lU5%yIz6m0xKGJXS$yih4T?d&)zrAdQAote-F$p%SbZC3 z@$JE*Is|+(!89pNuX!+$B2cYp?lvN}dFnLj`9+soZ_}t2?I3J>lVXuQUodi zV5Jywm*E?n^{6Uu-PMHin13?d8?Fy~khK_>S`g9Xh94p-)vxv&ivdJy1>qpw{~%g_ zLpAJrFBIqvAY(@nGHbo8svu&bu-9)OARq4faF`lIduhZ% zD6mgBd)|gpp&qWiMt%rwp*>8qCGcBu!P#^IDBdjY`lm1!Wi zWp?W0`YV8|U^~Jk#A}<#bp)3pb-yp1=@v#ED2U9dGvaXm#a0}`aKPS!>sM0eWR+He zg1N1vNk+k;+et7h|6S%&&4J>+UD{&~bOOLe1pg`0=Vt(|mK?_{@8?;*#v35jNGR<& zR(p+4m1z2V9&G+dTVw13TwII&aVra4#?;xhBP3);9WGe1%ZiiAFT-Ww%0UjEoST#& z>Mk1Ortj7Ya9Yc~+39~yptqVK!ZX7(E6)QfSQ-Itb7z(uQVggKl%bQ&)Sjg~W~MPbyw?#s_ z51*K8U49YqJ9G1MMrdm6`^_w=j2;~ai-1318{2=uHk9*7KG>6eQVLLKq-L-()~q)( z8q&a<)l-!5bA5g|8-y~utWm&Xi8m6CsBGT0;EV)jOT zhg&UD05&K|;6S&@Q3G_DzZByYrX-}HG=Ev%|1$Ll2{VOBzJU(KbXbYpme$U!4MWsj z^q#UWE^PWWud}?Q{teB6BG+j#NBP{FMP|up1F8LU@04#PB+SWxFSUo}6Q|W{9n4iT z5KySg7>eFq>|rb7z{2RakCZ3*Y&+DzkSv_2RnHu273iQ!GH;Z`+<(|8_^W||#2e_k z&^@^#H!)@2rp~SU8^+P+v=(yw#fI&lMU4;Gj6AI$>I2Y9B^zO_%YK0br}+T-7l?!V zD!Q9>!Qus4Xyv$t&W%WXP4cNN14|x~C3k93^o4z({zq0iH)p*`;_9s|<(azsx3wTn z)|i0Ba`DF6j&~<@oh`DUZvl#`4X);!JZs z`eFf1MY=0A%htw}wUsjfw!MMn-Ni>r-n-;H6vj$6k%Kk#Hq!gX`6r40VY<2$yHjdL z_^eZu!C?xeb7uI@ixM(5#l$H_L$7ifRsm;A(I@3R!7jtN#v}1B_}ym}%0Pn-$5;Q< zmhqD)si;JfIN=}Zx?rvqJDn_G(qV{jxn+~{XHtxm*d7XAgCy-r7hjZ)ZK&{l91W@6 zh0lCi#H;N_@Nd6VYb`EbaU*m1R(GIFSvq1u)RdbqV{^>s%Kd&kfj4@u(P=+ne#uHN z%5fwM@YfeUo*}-@f3y|6oW$y=o_wCaR7#uVj9Qm@{hNfJ+OvMZ*wb53T_EzF-18Nf zr$sHSu$#rGtRDr3>)jVBK%-qC8g3F^EWdrpL>QB#c&h$Fwm3Y#sJme@LCS?xshN4F4!foUZ7fU+ z^+Sj3CLwhjH-?qT8L%C9c&WKCdirDJ)_ij(cCIS{TH$=f+G?%+q-*nMx+qvnXy{UF zBl;re+li0y*e}3@@Zv^cb4$DUjtuM_Y-=++h4J<>!-Z9bTy7AfxQj>m9A&UIT9x)U zb)(E>L*2`qbMlEkQ++UyZtCoFS+2vg9bfS(*AA<=87%e(CerL5VcfCVP|AlpU z&nC@%F&RxrCyU|r7kayJg>6PH=8c}_a ziczNW4{RZrC74UrE>*Mg4mr;;ZD;>L_3%nkd^+qf9vuvgwdzKOeMFfhS)AvraA70R z<%mdUUus*&YbRzGNthP73?~*0AJ(m<=vJl7276KtKbMM{Um$l^zk8f|Hx^0!kjfo` zM=mJSvkrBoZ~rtIfl{)OlKh%jw-&ae0h!sNZ5SHbNSkjMB=2ll>e`2Wk zR_C45^wpIs3RZHAbKXPNG?v)Y|MP{^;XvX}xsCSDeUlv5QHMw4>1^5^kCdF}K$jq<>r~?6rMsBH%L?#w$a=u(`QTdQRdZdI4-K*)7&vl0EX& zy@ceZ6%V-_j|)`PfW^ki|-zMEr{%13rHG%@T+t1*Tt>|h3*?UKzFhn^D02?tjj;cQ_^#eP4;gX(NNp}I2= z8`^4e$+>>rX%4=6CNQR~D)_Me9pBSL&CMWg_7QmgEM(tv(@6490`A&O(w3*6!xDCz zk4X6Lv~npY>tqp=o@x5=T8HCk{7XVpx+w3va^(pIqq3&Bmm%04XUmJdAr)~brGoI)YYK9KT6Xt{mjnr; z+luvH+{z5WonWir>%tN1(1fdPTEPFU54uJi@)d`C+!ACfKZ#NhwMQwt-O+=)wQdh; z_1_Z2NW7t^Wh_c)eGbuHE(*Ng|?>NJu4hSQ9@F8l$ic8oha5$JOD zceguK1is1Pb9=jQJ#9)f-DZ{1)~R~jerVneB0g_X%F3DdlM)DeBYl>IqP(GqI@?#ods4JQk7A4tZM!$y~8tUgf8I^U3rt)e&(M_My zRp$~BkXlst1?{X}Y8PMMRRC#6Q#QLnodbz>*}S~`Bh`Zlp<H?^!c3WoSiH367Q>h=_`F{e z=N_U03EyMokZ!1CUkwIT49%L1{ecj}JMK`2Dkk$MJA!^PM9`-r@m+}dAs+VFPs_5P z<|HQ(@Cq@7KzWs1Y=8`F#a6#zN`gxwrg|9F$x5=X%?Ei-i+69chV51*E)vy3)U6u2Esmu(WH37i(Pj&zoa9$=<4kg({jPbK5MU76&=YnZQi!!eza!cVOKOGv+ zz5a9OTZGA+&&)lkY0>C{V>E7tl8NFQZ1z+xyd>__5YME{F~*+A@vekN>oJ*{2~QxC zn-pk0AeVO>GP^nrUev_7nZU|=tZ4>4W(+ebPx7?0$62!om$J?Ekyv(z zkkg7KC#>o8%V(RCD;il=qc>wF)iK$Rn_Q}PB`n6A25~0xpd`dgo>%@)XCk}KQ9MI2 zPh}er7DP;`nzdy!Yn0Vv=Q<(3mQ!R8I?fd{y|>?hNlWU3J5zTT z_N|C%SzuD96-C)~lP!JySOtJ=FN9MgaAFQXgLU!(kj;0j&(IM>a$oXP&c1pVu*-A4 z6#S?!2<(KaXVy&)$in_t=`49W3tN;ll7W7srK45}EBlbT<&=0o$O!z6_LWQBKZ`Q^0SpzO_hHE4bsGr=at5SW|f8+gdz7bz@ zL^UG29T-;Di2WczkFE(;0*WS~aT9V|TG_04HA#RxY2?v0HgNR&?UP+WZcZ?}jt~%j zDx|u^zsL{*xp!YMv9wls!VPxg+{laWycyrZwadn6t{aQ?`zZdqbO`&YAkra>M0}K|X?{k*w zow0cCp7%0;;Arm;_l={$pLHR3BETZZI?Qe=Na%Ig^l&Mu6L{`KfCHfC!G?l) zbwF1!(w%0VAx7m0!!JbD1jE&PAHwq=m%T(m-yYGsLc?1dIvO-xmj_ga1TvdVTV!fJ&!S@6IvNC{uTLQ=43;z3zl*z4^yo-H zP|iq1Ztz5I=o!d;QyXoq&1VaB+r|Mocn^KWB2NBv*J7-om&7}ns@|h+A1WBaviKU2 zCd5iAUaauVhZHJ#mR;?-g?WoCIMSqGh!E_En-0`! zeE2gq2Xz*8zd~-`ydQpZXp8#gWMq%GB0>U(<-ehvm5q#C4fJfoRc~TR(tzG7Cjbng zOv}oqk_5YN$^W>Ac|<#Kv6Yecp3IkuA#p@ zoc9USGLaSrckv}H+VYSK$TO=o|H!`3Wd}%zetz(&<~o%gYlU3QI~kFG&CII&jZ z;pdffCb*-lK(9Pfm>aDNT+ehJlMVTFjZftjSQFY;_5lV*tZZcoQ^B{cgz%E^LBDf_QJBeo3D z`VSapro3}v1-t+R?O&{I5U!g(Vdra>wYm(@wm=Br2fUb3}CGsvk_$2k6}vh|nF zPOECosqPCNv7QP%2ky+a`rt)$=?_&Ui*kH+h*8oQ1+tHSvmc14Na^d77Pb^62&UUo zGeRa$DOEB=?_2=4a(2Vw1suUgdPr^<8R-$ZiM16roqk1y&$tV8TnI9wqZCy4Nfodo zt^dU;e)EfV(#^JOWdhbjuT~yKGkahMOv?*ud74H^<7&TRQu!diE1uJ(A|jS^(r zvbHI1M{HI15YqFVq1pxC3GTiaz*|hHX49NL-)VPkelCLGr);*CWEpS#FO-dUQ%dPF z#(yrQvSEK9Zv}v|*21GG$y&L`81M=Qn)D@;1eM=>CCA9_1XSitc@nzfI!-b-%Ap3X z2Aj5P>Lfmnng%_lGxw^%a54@SoL$Pacbuw&F`pfr zeNCC>|F(~wT)}j*W%cL9G!6=5EV=MnfijUSP5N4CIhkR%LYL7`1b=oQ(RhOkR_#T} zI;%?MlBavDQC|BP#1^|d_SkAf-J-&YO#R&FMEQy8Hl+sg@d@$Xd3S5W)3rgiN__)5 zi900%{r*77+&Q)A-y)FlH*bTPW8tr4{N+vtLc(zwb6B49y@;`L*ECilHI^FXV7tac z&}c2u_FE4L*7F2%6_ODH5jhBni)%+rmWjUok0HwP^0Se)#m{Z-%ryrjW*>H|%mi}9 zhQCdijA+1r2P0JS zID}M}5KztVw{_r;qR$W}3?5#d5O$(DrhN}O^FO@wKY>swQ}TSC8EcW23KqH)61yw^ z0!H$7ckJWDQ59dUPj%sn$%=|aMQ)+wcSJH2u3x}YetS+4g>#lvBF(BgQ5E+V>DN#( z{Rz()su7ihwXhnYKc#P)C-xdc`s_n$aCZH9UoMxqwEvqGg4wlpzkM~H^`h#aY&C13 z*iw+OYHvH{715mWPW~|4V*r=_Fd067ohw5+QH_=(1wqt~0q3c-({JPwJ#naV`MpX{ zWZ&e8f$%4=Y~F-qa3_7|a^JHzvCjvlPs}THuWDNJA4GFusOWXtvr$0`pxpCjjx~@e zG<+$y(NWw`*DLgq77&X0GALbb|Xz5m=K1HFpAJ?{yK&`_@`S*i2^4NHjRrCEouTcywbu1#5 zT!~P^04D1~7qpqex%&ktAiW$Y8j8;O)fdQ>6hdnrjbp(^AT{~{Z(+Ia5cb=lqBoGX zSAxfA1=S)dyf~Jsut~y%R{}SGYK%_o0LBYz$=v2OkH+}>BWf}L4+1cgohe+sX!$PW z@F!%z^pnhiuGkj5@eh2Iqw@cI$%FP8H35Y=5{HZ|7_BNO*202KRce%a z{9k&%?~N?%ll$|vRFS3R$;Kb?WxrX=Ko(kNPG;;SF2o6e>c}baxaHK4PQpODZzpw8Fz9Hd+OP*mw$#5R+3)lQZsHU@nn~Hd$LYW7QwM!0}!uG9VG5QS)(vU<_ zS4>EU;ZM1KzVJ^CwC3lFjQdJ4>=vWAfU0BRSrjo@PkKNOw?Lb!54=44>t_LX9a$CI z-)YSsS&Sw-JN|pq@cz$D1KppS1`o^H`MPG|@7`pe~TW)q6#42aC#JwFQyt++Fh=*RSmBg|x{YVmOH_uel3Vk6Y^xYXGDHZf9qK z`;OM4zPfoWQAL0nnz#zVC)oy4kXxTSk9q;hW4^Prm|{(Q>)BkP^-#-v`SMraU3}IEXF3{0p2*t%2&b{ z4vQZtkXo7*T;}JbLiPyjx!iV8kZNWX@I|o_(8_cnTe#$(Q@J$i6+thRfK_U01%HJk zGsc@LFJs7Ipor0Tl3^^H^2FGU`Q2(nL_O6AH?W8TM`HxFtjSTh=ry{(qvM(8hq+^>HaL&c6e4p6PXTwqv&gk(Oqu$ z?c0rSdF`B9tYQhM^SFgEuloRn=$wWW44wY=f$TiBUIu>{s-%7bjejBoQG>Pv`OnGl zETIIyZpehI(mA0EJ`;{sW@a@}il2{4YW*FK2aqnwC%OLjTra!Eb`6&6%p1{al?m>5 zQltKKV^vF*l&&%mAQjMZ-P!|Eh`jCZ>;GkzH)ydJ;q9ODF5U}&LR zw|P1=mPLA>{7Npsw)?O2z&NHL!ZU~G@)qW*Q-zn9QKH*R$xvDOzrk>!ZTi!&iJfE&4z|c1=05UAp{kYGO&gdnwQJ^#b`g~SEG^1$B$0d9T+Zv z;bp6KLewT0fw2drV$D^ko&Tj~-zHXK2-JQuj4tCk9}f0DV%Qc{oio9?a0&hDBL;LO zveh!(^yrk^b_yG-9CRH zn9cbk-f*dyU^O6~*;H0KFj)JJU+ZK2qqTr15FV7V*kDlOE$Y)zjW&D4l#<=@q0D7C z9_^Ifift`}(anV-z<6F$CY_gQZ&*RMoV_bh4S(O{YxO8yJG{HbK((ea})X-loAgT>-YBCI>!ZK0Yl{K!8$z>7S$zOn51RV}4`{z^>b z6Nzd@tUzwD2+Q|ZcX1g|@hDq3u7oVH36rDHpcM1ccQUvG+}V&GaIc~> zKH&Di0n@DfFLQuwhph!$I$#TFEh@ewq9I%NdPDZF-u|63imJcP-t&4iY80>))?}w0 zSX!7*#%zB=aSU;m@h1e<@eXjFKqR1zGh=YP7C!602qI?`)POyhkJ5~fv%SfFQbn({ zB~8Bwe>DL5*j(KB4M`d%&Ha6T@oGYyV3~`Y)lmb5e3Pc_zX#TxNz8JGj29 ziI_rJSR>HmwxRGO;{WI9$tt!Be*0^{4Bhj|$qi!L{0MVC>Q?^XTg6tufSh{FM(XDM3dhLv4UuTX<&E>rekxhD`)MIMxv}WGnn0~;YzzNKzoDM^=Q#+dqA5)oeSq)<&X3CcGr+A$X&oW_pNu-nKC#({G z`s^cDm@zO!fRQY)@4HGv{?dy1OG|u^G|gVH(b)Hkh?+ctHwoZND5S0<&Ly4vgpm?! z){j53?cyE3G?dodKpiU9494j0EZ2oVg`2e^;Pe=+^|Ia!JvvYpzLNUlCEKE-J?>ra zRBq3w;Rv(CE)ft6O`+umou4{oTg|D?6Bs|R6T8n$T8$p)`X6s=K-<5%x1H%i&@&Y? z$5g-=Z~WHf2x)LC){feG|;0b7rNzBvA8@iA*_O~499;ubbbGv%qE5~~a zbRo0xPjdVaKhw5)(Tg4Ifk}zg?1?kCD8okSdPdqZweaB{r`SzHfVMrss;tH;beE0~ zOo>G0Y!i{s5H=6xYVfLWvKRJ*-9i2G#9FHWJbPRusZh;G#@ThXpn6}l1HvxTLU#i?OD)e5Grj zvNH9BW|xD;0q1pQ%qoiRU-d`mLKqXu3hH>ONAwh>6t!sEYwZr70WAS0dwb-`#qKC{eugGOQ&t!{7i(@>T zY}ydq`1~B2s4s-r=1z+E^L;);+YN+Ok7p8*lm#@<7VEU2&BkE|3D-0HFmxFR80TuLKZz?z@)S;|BUl>zIy!@UjM<2kU`JwI#StV$kV&^-R%i!R$kC>g`AAZ6RVY}Acywjie zMM07phPoDQ32k>i#}AXNf}x3)b@jpO9#HqeTNI6-xORi-ZT0{mA_rBw9Ak$_*9UnM zz1kQh7wGRz{l};t;>bxv-Iv|dwODj>JCZH6=WXK+c4$xXrn6AO8G)9J8^lTgnEGqo zDu$39s&TB;6Z}oNaqw#`EKlmdm?FTu05LQ!X#Br34ftIqQ&YPda<-RI$4pGz2kz7BWg*#wm=pG_}KLErR}nSLFClG zuzr3tQjyk=rnZu#Eq+Td{%>T$tCw^z%poschfN#H(xq&U`C_W(L{&9r`qGTxP1(6U z(8wHRU`Bn1M#0{;TgOXvKfK`g9($s|MD){`zCYvZBONsUcYLiyPfQikJt)q1OV+8I zM^UP0?ceU(NYl3KLSiDMfpCFVcRP?7^qdhm%2@+8NszJyXqWD^J{b<&Ha0mtTavNA z0PWstmH;Q&q5p_(3fOY%saL1l4egG`x8_X;Xvc0pOJ`M_ciztd?#GV#l>VD)R2p`~ z>kU8A>;8fDT_x#&&bS~dO~_7Xa#a@SPb*h5Vn+o=g`|R%lGdAEqOqn`j_003%y=Hy zG9!nQ?%vtP#ehK;(E7rq9Plw`EZRR?$Fsdntk0!h)IFAb7CljSrdIVy)d)Nc?b8`) zoU;n)1YLV`4Rvzm=epr|Tr*`YZfFFB2!SJZtXN`g2N=U~MB?Ivy?}K1Nu+@!X3(dc zoF@{Ts(f6eeS|O5MYF@CF=aLPoew$Y1f5ISNa26}L-FoyN>Rs;vESCxC7T53b(sM2 z7G^i2#X=EWU*zS>p$dnMe9IMr{x4&rKs$gUe}=OyN7h%7mAZBal#5tqsnKlU7+D7x z^@z`qL#Fvxxy+`Q+hP`2#%30wBtqF#I8!T*P=#Wij27o+eIl1qJenXi#+={5#(a&ZB%EO02slPGB}QU}l+XHh z5CRg?!1Z|m&%-!REP|+5=PCv$%QJZ}aJF4;3Iks4lZMO!j)1d86jq3CvorHnZo3Zc zP&d$gwG@9nqsEjtFcRE%SVRYlYAI0b(n@AGCNGG09~-BWNf=%23jIjP13&Sz20V)Y z5Q>RL)9kOpe$2ui74hCRp{g_l0h%?B_d~4YQvVIupj@0C8y;_B6{{&x{{mDqGu{*0 z#kn_OB?s(=pVdeQ>i`cejLY5g&U3fkmk387XVb@ijnOdU_8Ocm+}m7{d~Irgcz8Dxt|+K z`3p25i|>nLqLlz&EG8bUni)fjmIjBCJ?znDpiME`@mHfAX25GT&izAKpp(*5BO>fD zfmfG)nr&@ipkl(=>XSPAlcE^=K zA2cvZe@O9ZMbY4SdhDa5GB9=1(UNC>D;IZRLa3pKz##s#Hot3c7;#4+S?&rfCAn~9 zj>jM)NGj+EC(_iw z8Z|nkt)Mi$>}Cs5(=6?(+8!=bHzlxtB*%tn5Gcp-={DPs&k+P$4dQas?eDe4W;N>(8k^y+S1>2@fp`|-<^BkJU5jF_qB zA&#v?gvE8F0$ga_`_DMveC4#@AOHzv$lDW-Vx30MJGDHI1jf6zf>d`}_0IhMmt8W0 ziL>19u2u6EJ0=N{O6=wie#R0scMsu@9Vr{og+gaP1e-Zz=>+nhL!Usb+P%-!=-!8g z*8k4Ghq}j%!z7Kbc02!+xD$t>RX~rI6ZFp8DeJ0=HAq#v!Q6Uoe$9U^pIN-U)D)uQ z>5V~7du~S!PcmWzk-u+2%A(%ZDI@D@%Pf3iBaHv4Yyjmg{fpJ1hf8VVr59QMr_4`2 zx0gSg4CV{Mig{Q6&g(c0*lOzc)c)4l5^^};ikPuJxn9U1I0pRyOfiT4H=}zpeKYcF zuK=x|A4BiH(~eqIME&VHHG?iS`0+zZ0kemd zI-|^<^?iCeuC)_-1FW8v9Ww&c)uzwW^~_tBwy64Egd8snQ{`pe6%%7+7}TVq*{ki_ z-o_`5OAq7gQcE^T1Vu2U2+>B+{8h=?%|YuGDLD{}79iGY5{u+D>*xD0D0k(sM?;N2 zim%rsUC_y~RLk;8$c%OgBaKfra=5Hx){I(UM|6&3tB@u-$(mhTZ8iQAScsaCRj9!LNW*pTa3Pq2^yqk$7BHH7z!=AH9R%h32zQo6Ih-S?nI5N3y~wpT zzCr50p>HuW;ST8v8C)zP`YrMNVqm?Vt@J(Ng&CU?R2C_w;~eVXSJ-lS`rqR$jAdG3 z|NAeFL5vV?!OAUC6eW>H^J(dnLmM4F-gJ#Ds`~SKVKQL?-jCy@c4I;6wPhX92uTT> zm#XvSG#64L*q?3NW5bd4ZF1J3<(*ZNm|6lqoiMIi5@N1lTX24#OLmfXuFB!slg*<~ zz%uDL_8@ARfC;Uc`~-KpYqXf_e0@P%U@#}2pJ+SO&0kaFf}O#%Lx%yqih{h;D7Lqh zR?;!;8jM9|(R(Lt&XQUl36%F7!a;J7AV6;=b8Wq>h}&LsA+gtdHe}MMBG!0guqv%| zUo6zA8E&Ny`F+Yg_H=6gX{7maTB*ZMRZ5M&YifF@P)+X;)&$|-9HS9vxz1YaX_r05 ztfdp0r^=TE#wxdh>2XY6Syqy|^7@Je8cDN6qgp@_8IODFMrr_vIjwE_9xu%!-e8wa z#mg5CtKoIrM8u$vWiFJ3>R)EE3TPG4;Z~9=_0AA8F4ysMSu>p@ynXz}7hD{lOMjDb#79^yxA<26zTXppQY*N_WY#gf%FLoPQep;-B*C5r zoIs;+j&5=}4gCh6w1hi}zJ6gk|8eHF`5L*2px=(&SDXOz&0^9`e2RqZ#YbD3C^_ZK zMe~LOZ0!U+>2%{L9IuM>4|7lQ#Mv|ofgCXZzAwwavWaQ(y~@#OmKC~g&T)IRQVOkm ztpy31?!@^CGX>`J$HC}%-ecEeY zfB21_@(I6!MmRJ&HwO!k^Zh8&xyYs8kqnmerub1Z8~6P4;C+4gsbA>IPkeG_%Aexr zCS}J$m62S1D2~GkD?6*NBkR_ap^@2mA8`m$2tCOJytEs`MI?VNis^0dwT#i0aH^O2 z=MEQEm5B;PXM8LNUou|%S9+-(5n6ikHD(t}@WYUs@S)T-PI^m|>hzaZ>nE$7w5}AM zY_pU@YFLY_;DzqY6_H|8TI+7R?I+fuhVL8z2Rj;g1@6C|+ zXz5<@b6B&^^*1{91gT3+C`H%om_9u(>{1B8gbH9H44G^w;Eb*1gYg`+nh!&6I977x z;8~8%ba`=ak|hUrt{Xum;rX_=ViC{;a&3RgO8A9>^diYu?kl&YW?V32g=Qx`?QHF*r2X{M9S*^ zrVi}-hfNspK{jzX+zBW7?*o>XbujfH=Ee<}MpD8CH#TZP-EQRDMI#%P_HWg)J&wsS z7vF=Wi*)9D)gU@=*x^a)j1yDs=P$23q+|k+kjh;yN(Tvl8Mzg)1Es|^OdF1Og+;mv zMdB<3PbgY_mUGQfX}X7h}D% zKzvMp$H6JcZQu6N=9!&$|Ni$?ZJcC9L%t|p27kHAzCC^=#*?B)ZYKr86z{_B9)UW@ zs#ERwC`Ep&ARSMW36obO?yDzhe%WH_%AYJ)T6uzuOZbBU?pZ7zv1WRCbz2(;SeD2gTPOEmJU67)@Im10+pUJv?wkQ3I3~}^U7ROJSnzbId|1wI zdKej(100kmTpsdpDl<6sIh3i1uQu>4xs68cxX!jX;PX;ul#@30`_?cy!LYi&kmA^_g*A8$hfMr&aW>H3aMm^a#8A?-OSeTnX0_Eb)69TWxxZ4N)@LG zqDNyT4^6YED?2I-V}~Oqnc}}w>Y3!t0de*9{G0t!NG6?*Mp{OhkG?b;$pAKn`8w@I z58PueZT)zPXvTS%Bu$T{Lym3pEeHCP={%KnqCL(AK$f>ULLjIQjxD9{#_)WHT1;|C ze~dsWlDwsGn1{wMQrQhM#z80#XRs@ms z{|2KxK9kN&U-QGqpwg`q1(1j-YG)kyzI9dI@FUlsZR-WayToz<1H6ypj_fviO(i<< zCRcG+r-VeeDE@L&*#$CDjS>l%4(#q@#1bGCIbYC$puX&qnhMLtqv?$z^4kYVHSb(jEa)xO2cF{Osr?l%>YQ2BO`A@?Rd7??H^7J}DV40FGmAr>4AOAlk{XaQt{{C&$V2pTqQB`1(RpS5 zC9nH*OhmeK2nLa+PM#Uyc}2XCxRnz%h-TV>5OUjLSWXYajF_u#SzDS%%uH?l#1`9x zyNY~K=4)!mX;E>N80v_t+V|he`j^AJQIb52v{}^~yCn?eoxFXzLZd&7Y@ifg5_`)$ z+C^0gnpL8t8~V0Ck#Sr3y@&pKoRG_%l(?l0KM65fsIo*?Ip-TXTJVtG`3z(Z95Ab_ z5N2YIecBbd2t14DLRljGY*vR5`5}C2(`9TG{`Hv}fPL7_E zvn33KF~NqV#ZZeSQS+fnT)nMM`hoB1dNql9@M-?ix}pz3mCP_lj($rZGgAuF{LJf~ zyTN^^hEspV)3{six*G#IfMkT<8V^!nJluulRBj+~{_FLv-9rn9(Fu-z4N+3To%XvS?Tsbjek3H_Eupd%3We zpEJBDpCb4ZLj!3072z9(pEmk7Q;lh@^ch8d^ZqRoa3Ds}px5-S=+<>)8wyf28_BA# z7qj9O3gtc$B(w?MP~*1pKDsdwV8%ve&Z@q8n(L)-@T~!s%;~96RX)DzY=&TKcGNh% zQ9h}>J?I~>SUxKTuPnhAg3HTtx{M7Rkb7?y3lUG-)!~|qcqi=a z_oQa~*$dpRKwaHi_0aAoK}3A-2@iO|UKV(}eTyf-Z-cPwjw^B{NK3^&q$=^%lscm( zgM=!c`{+v-mAoyjvI^BeR0Ph^)WtH z)ksy#+xq0-r~#&hc^w5!ghDm;Mt93930eC5ywL=tq>n#g7y&I=xpop}w}hiFYY8zV z1E@v!J4a`_XfC1*EaHdQ9JG-i!K7^ssE!Hz=Cx8JR-TQ?M$b=GO%8~>#v)0E9CVmY5|^@?BV(r4)}&p%o0+8RZ{E%H4N^i{{HCrOE&N&g$=s>LR)Y89B3R2hR!s!;q+f8~swMj*O`U&RxjkO>PylefWaijlPK%wW8cNMh6mTUSaF{<6z1E&>@`>(9eF3 zL=EHJ6A?V3gCJ+Zh?!}lz7Wh2#3yVWVQlFDVNqXcwV0Q8dYvKu9}de>DI_<-&gW;X zEA-A;uZkox?vdF>?0FnqQZ!pwWUEv_EJ33?nazy4%4uBj4GBVq=|4=QDW(y2K;Xo3 z@{E$^W3SAA&h^c(P2d>y=sAcYHXtDl7+!Tt2C>$?J>HWDYK!o%h4M<7WHd4X&42^; zzA}wJ5?L{gd6qyRzrzI}T^D^UlQZ0^{)ZY4F*~qQ*G-5{)NP6G8V;LX^K3>vDLZDo z1r;Sgw3skq$`^zDo3<_Py-E`;jyDboPqxG#d!Em$T=VZ!dU{rBQ9E*%%ly(k(g+(V zP~Lpak_aJ}1GfB|@^CAufQ&Sd-)bYYKflqi>l$BczqlYM@!RCdq@n)09oFA<1XU1W zmho?SUXBAJ>tfO_)Hfd#a35Ck{*_J(x;T4AN$dEB1;D-Sq@yQl5QoApl~>-({BL1^ z(@NXlYxG6l#c}ULg_H(%ZIvn^gm3(JqJwOrKv9Y?+0k^q)_)y<8F<0ifu5u*wi>1d zIA8!7aNIQeelJ+=OPSv>Di2nDSv%*rq>aQqE&s4DKNLst7Vp%~8jWc^txC92m#hY2 zscS!-u15zJjO&r%QFqMfs*?#2X=q$7F4N@^Gd+%k_!Ki+YP-OXMgLV)h#DdEd1#sZ z(7b%03n0o^lxcqW`Ea&b`w{w^>H~!~NHZx|p8Vn3)B0hGuaPL;gQT1BIHHUmS*)3{ z&YC(vrS-z)Q0&fGXzFo1L=qcuGi+<{Mk7Coa~w31ge zT(P?!fd$;Qy*b$}-USewShh6v;k(_YH9t%2PWB$d)GFD>Jn(0>1|v}Qfk~rADy_vc znG>;96(zBxv=KSUmHCJdZ~qmcM0$qu(hGwe^XXfV+c;p_xkBS(A~sA2?_sx_cC4X6 zrCK6wVlzP88zkrniq>wGIi=rS=y zR6pc+$#%MFjBIvVq4~$l(CY8oC#l$Smz};e+$-ZoHPD*L?Y| zna|_WXb^Bh_VqGWnq(rwNwLpJpI;IRx?Q`7TRN;bP6c#4zVm<}7l@p0!#hWAd2;W$ zN#1mY3^beo)$3D57T-3$<;iffs}n@V-xft}Al{DWlYigl;K030i71Xs1oA&>+WT#m zB6&i=&sK57k2J0VARn)W=gjL$SClUbo%>nP75tSG|A1@$)5}StSco33i>9#rYI0&+ zaH)EE04Kmt_-iz9e7^a%5O>17@4O3fIEg4-9m;y?h?2L2(XEHGXPla5- zTM^e7Mn=VQN73P0N!l{2&)4C-g0*&PFIFu?ZYJ(EK2)03$rxHigGH#Qj;-U{o4M$idJkD#Ex0l zM5B^h^d&+`Fl0%!l7|#PxR@b*tsO8BgS0W&t*<|~DkaU%OAHCp8^)d%qI@Me8k2X) z%Vf=}0&)P1m`*BBrWTiN@U==KH7Owcvg3QyfCyO2U_EYk{@oIql)Y-rDrjAm_XxVj z0;v9jnSA(Bpo`9|Q5mBsG|A{k=%3t+ms7Koj2LB~0JrYnZTkrkwK*z8?4rZ8{ci$W zfYS?bq-u8WmDUcJfFV+@&00ZieUJF~LKO>Z5HAe;H7Z5Xi=+cQ6SG%A1-LAX3BH#= zP=lr>$^f~s9Q`W$-HL@t_<=NyDQ52=HpVeE?}^z+8f*)w@hI>EiaP-M1Ik3BjW_69 zrC~b!+J86F$??#G_hP4hIi79O@+;8M5|#k0`x;(lWso88>C5vv0MkOI8xsigS~MH8^6^Ty`K}rPn@!<0?vONr>C>8bPX@=_*Q`8vlN9U(ue17CP*l zfv_}o7;Yb51kJX{2OzeH=)|b}RyYF|=V)EdFHd|5FIKBANHo)LFzf-7JsEI^C&~@~ zzWnIkcNXGN2?JcVc|bzT8&wBzG({|@1z@#JU|F&%gY|%J(um@}+;32|SA!lU|Apx1 zWA*0z4!~eTe~bVCb!J(Sm3;2C`C7+!C$vAzs5-o&gmNFSYm2p%s3mO>E5GSh3#9?R zmHuS*ifaWRNa3zc{&YUJuaW z*Q^G01WaXPaF76Cz{zF*@ABK9sMFrx*v%ALN!yEy0S66G(U3sEAd4K%0L>zcS<=O$ zri>mUpGMj@{BxhPJ4zED%+NAPtRM!FDw#3SCTFiaQ@x^QRmXUtJ)Vk`;h zF7`=f(O+lzZg z)F)$b0U$d?8aPt`>V8S<1bE-actZg(4gi&10}1?3pd-Pl8iMIyot6|l!j^y7YDXlv z=R*7=bpIbd%Xa6JanX0_xk&fOIM5LxJZOc8wq=r z*j59684Fm^FaT@SnX4BX=7P>J$0)t(lOXbW;NW|{2{+x_mT9Ky5H3?4!vc>D(60qN zF$+6S6WSBv-F>}6*k`rtN9sg_6E4d(C{`}K}Peu>B_T^-@W0}YErdjJ~MJ(o|P=kPh zIG>Hu)fX&kksXth%H`Xd%u@bLDvLooY@G2 z^XhgKaZcgK9K4uE_F0R<#UI&Vs(IjbV|@wTj(GdHAc9#&(2HE)l$MbxW2xX*CP0HF zdLlMF)T=OdYqMyzFxPAi!_NWvdM67}I?ZM*$nGJNx z);9Hi6D}uYZPQ!lF=W7bVQJBeMs)ut+tH`%=s5S^(iV)V!rnOqUFQjv$N3v1G)=!v zQj%muQDw8Fx{umht;xTf-&D>82a}Dovvt}Z;$>OZ)PL-4ZBo-Ow#%ob#MD9ht`!Ou z+E&Cw3p_QtmTKT-d+5YLOLlwF6n=I1YcY~*G!i_2)6LTD&0cr+p%}1_D++fGV(}2y zmqCjIoD4t_pU@mgVVR*r5Y|sO81p6?anA5Uz1;C+ZXEp&lV)6UJ1qKjJGE~ZpVwc- z$y-|#8s%l{`x~~Lqe@i5WppVLKK&00f4=+UeFYZ0x_aYHtsJ1dUm5S+78`Hg_M#|y zo9Wgw#ZkTt879yqGaqO08T&J+x!J#9v-qcZx0Nkf{m(bPo&ROE`8E?{G3lEA4dh5y zx3_0|;Gua_4*KNlCDCVzNI9UY#hea^ao0c^FBm+=H)loAHdCTM_p(o0_VgTk>^&C8 zzXku5j?6u~dD6z4cC}M?|E%0I?1%7e%HOI`>7`=0?{HdLLf_Av6p|}3AJ2Nv$fW(L zEOIZsp?A1�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" + "\\end{equation}" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "italic-credits", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + " \n", + " " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "hovertemplate": "x=%{x}
y=%{y}", + "legendgroup": "", + "line": { + "color": "#636efa", + "dash": "solid" + }, + "mode": "lines", + "name": "", + "orientation": "v", + "showlegend": false, + "type": "scatter", + "x": [ + -4, + -3.9, + -3.8, + -3.6999999999999997, + -3.5999999999999996, + -3.4999999999999996, + -3.3999999999999995, + -3.2999999999999994, + -3.1999999999999993, + -3.099999999999999, + -2.999999999999999, + -2.899999999999999, + -2.799999999999999, + -2.699999999999999, + -2.5999999999999988, + -2.4999999999999987, + -2.3999999999999986, + -2.2999999999999985, + -2.1999999999999984, + -2.0999999999999983, + -1.9999999999999982, + -1.8999999999999981, + -1.799999999999998, + -1.699999999999998, + -1.5999999999999979, + -1.4999999999999978, + -1.3999999999999977, + -1.2999999999999976, + -1.1999999999999975, + -1.0999999999999974, + -0.9999999999999973, + -0.8999999999999972, + -0.7999999999999972, + -0.6999999999999971, + -0.599999999999997, + -0.4999999999999969, + -0.3999999999999968, + -0.2999999999999967, + -0.19999999999999662, + -0.09999999999999654, + 3.552713678800501e-15, + 0.1000000000000032, + 0.20000000000000373, + 0.30000000000000426, + 0.4000000000000039, + 0.5000000000000036, + 0.6000000000000041, + 0.7000000000000046, + 0.8000000000000043, + 0.9000000000000039, + 1.0000000000000044, + 1.100000000000005, + 1.2000000000000046, + 1.3000000000000043, + 1.4000000000000048, + 1.5000000000000053, + 1.600000000000005, + 1.7000000000000046, + 1.8000000000000052, + 1.9000000000000057, + 2.0000000000000053, + 2.100000000000005, + 2.2000000000000055, + 2.300000000000006, + 2.4000000000000057, + 2.5000000000000053, + 2.600000000000006, + 2.7000000000000064, + 2.800000000000006, + 2.9000000000000057, + 3.000000000000006, + 3.1000000000000068, + 3.2000000000000064, + 3.300000000000006, + 3.4000000000000066, + 3.500000000000007, + 3.6000000000000068, + 3.7000000000000064, + 3.800000000000007, + 3.9000000000000075 + ], + "xaxis": "x", + "y": [ + 0.00013383022576488537, + 0.00019865547139277272, + 0.00029194692579146027, + 0.0004247802705507522, + 0.000611901930113773, + 0.0008726826950457617, + 0.001232219168473021, + 0.0017225689390536843, + 0.0023840882014648486, + 0.0032668190561999273, + 0.004431848411938019, + 0.005952532419775869, + 0.00791545158297999, + 0.010420934814422628, + 0.013582969233685661, + 0.017528300493568592, + 0.02239453029484297, + 0.028327037741601276, + 0.03547459284623157, + 0.04398359598042735, + 0.05399096651318825, + 0.06561581477467683, + 0.07895015830089443, + 0.09404907737688725, + 0.11092083467945592, + 0.12951759566589216, + 0.14972746563574535, + 0.1713685920478079, + 0.19418605498321354, + 0.21785217703255116, + 0.24197072451914403, + 0.2660852498987555, + 0.28969155276148345, + 0.31225393336676194, + 0.3332246028918003, + 0.3520653267643001, + 0.36827014030332383, + 0.38138781546052447, + 0.39104269397545616, + 0.3969525474770119, + 0.3989422804014327, + 0.39695254747701164, + 0.3910426939754556, + 0.3813878154605236, + 0.3682701403033227, + 0.35206532676429886, + 0.33322460289179884, + 0.3122539333667603, + 0.2896915527614818, + 0.2660852498987539, + 0.2419707245191423, + 0.21785217703254933, + 0.19418605498321187, + 0.1713685920478064, + 0.14972746563574385, + 0.1295175956658907, + 0.11092083467945468, + 0.0940490773768862, + 0.07895015830089343, + 0.06561581477467589, + 0.05399096651318749, + 0.04398359598042675, + 0.035474592846231015, + 0.028327037741600784, + 0.022394530294842594, + 0.017528300493568304, + 0.013582969233685408, + 0.010420934814422415, + 0.007915451582979832, + 0.005952532419775758, + 0.004431848411937925, + 0.003266819056199852, + 0.0023840882014647936, + 0.001722568939053646, + 0.0012322191684729913, + 0.0008726826950457385, + 0.0006119019301137573, + 0.0004247802705507417, + 0.0002919469257914525, + 0.00019865547139276686 + ], + "yaxis": "y" + } + ], + "layout": { + "legend": { + "tracegroupgap": 0 + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Funkcja jądrowa Gaussa" + }, + "xaxis": { + "anchor": "y", + "domain": [ + 0, + 1 + ], + "title": { + "text": "x" + } + }, + "yaxis": { + "anchor": "x", + "domain": [ + 0, + 1 + ], + "title": { + "text": "y" + } + } + } + }, + "text/html": [ + "

" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import KernelRegression\n", + "import plotly.express as px\n", + "import numpy as np\n", + "kernel_x = np.arange(-4,4,0.1)\n", + "col = KernelRegression.kernel_function(1, kernel_x, 0)\n", + "px.line(x=kernel_x, y=col, title='Funkcja jądrowa Gaussa')" ] }, { @@ -69,8 +1219,993 @@ "* jądro Epanechnikova\n", "\\begin{equation}\n", "K(x) = (\\frac34)(1-(\\frac{x - x_i}h)^2) \\text{ dla } {|x|\\leq1}\n", - "\\end{equation}\n", - "" + "\\end{equation}" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "victorian-equality", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "hovertemplate": "x=%{x}
y=%{y}", + "legendgroup": "", + "line": { + "color": "#636efa", + "dash": "solid" + }, + "mode": "lines", + "name": "", + "orientation": "v", + "showlegend": false, + "type": "scatter", + "x": [ + -2, + -1.9, + -1.7999999999999998, + -1.6999999999999997, + -1.5999999999999996, + -1.4999999999999996, + -1.3999999999999995, + -1.2999999999999994, + -1.1999999999999993, + -1.0999999999999992, + -0.9999999999999991, + -0.899999999999999, + -0.7999999999999989, + -0.6999999999999988, + -0.5999999999999988, + -0.49999999999999867, + -0.3999999999999986, + -0.2999999999999985, + -0.1999999999999984, + -0.09999999999999831, + 1.7763568394002505e-15, + 0.10000000000000187, + 0.20000000000000195, + 0.30000000000000204, + 0.40000000000000213, + 0.5000000000000022, + 0.6000000000000023, + 0.7000000000000024, + 0.8000000000000025, + 0.9000000000000026, + 1.0000000000000027, + 1.1000000000000028, + 1.2000000000000028, + 1.300000000000003, + 1.400000000000003, + 1.500000000000003, + 1.6000000000000032, + 1.7000000000000033, + 1.8000000000000034, + 1.9000000000000035 + ], + "xaxis": "x", + "y": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1.3322676295501878e-15, + 0.1425000000000013, + 0.27000000000000124, + 0.3825000000000012, + 0.4800000000000011, + 0.562500000000001, + 0.6300000000000009, + 0.6825000000000007, + 0.7200000000000004, + 0.7425000000000003, + 0.75, + 0.7424999999999997, + 0.7199999999999994, + 0.6824999999999991, + 0.6299999999999988, + 0.5624999999999983, + 0.47999999999999793, + 0.3824999999999975, + 0.269999999999997, + 0.14249999999999655, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "yaxis": "y" + } + ], + "layout": { + "legend": { + "tracegroupgap": 0 + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Funkcja jądrowa Epanechnikova" + }, + "xaxis": { + "anchor": "y", + "domain": [ + 0, + 1 + ], + "title": { + "text": "x" + } + }, + "yaxis": { + "anchor": "x", + "domain": [ + 0, + 1 + ], + "title": { + "text": "y" + } + } + } + }, + "text/html": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "kernel_x = np.arange(-2,2,0.1)\n", + "col = KernelRegression.epanechnikov_list(1, kernel_x, 0)\n", + "px.line(x=kernel_x, y=col, title='Funkcja jądrowa Epanechnikova')" ] }, { @@ -81,22 +2216,24 @@ "Istotne znaczenie ma nie tylko dobór jądra, ale również parametru wygładzania, czyli szerokości okna. W zależności od niego, punkty są grupowane i dla każdej grupy wyliczana jest wartość funkcji. Jeśli okno będzie zbyt szerokie, funkcja będzie bardziej przypominała prostą (under-fitting). Natomiast jeśli będzie zbyt wąskie, funkcja będzie za bardzo \"skakać\" (over-fitting).\n", "\n", "Wyliczenie wartości funkcji polega na wzięciu średniej ważonej z $y_{i}$\n", - " dla takich $x_{i}$, które znajdują się blisko x, dla którego wyznaczamy wartość. Wagi przy $y_{i}$ dla x sumują się do 1 i są wyższe, kiedy $x_{i}$ jest bliżej x oraz niższe w przeciwnym przypadku." + " dla takich $x_{i}$, które znajdują się blisko x, dla którego wyznaczamy wartość. Wagi przy $y_{i}$ dla x sumują się do 1 i są wyższe, kiedy $x_{i}$ jest bliżej x oraz niższe w przeciwnym przypadku.\n", + "

\n", + "
\\begin{equation}w_i= \\frac{K_i}{\\sum\\limits_{i=1}^n K_i} \\end{equation}\n", + "

\n", + "\\begin{equation} Y=w_1*x_1+w_2*x_2+ \\text{...} +w_n*x_n \\end{equation}
\n", + "" ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 3, "id": "4ae1bce9", "metadata": {}, "outputs": [], "source": [ "import ipywidgets as widgets\n", - "import numpy as np\n", - "import plotly.express as px\n", "import plotly.graph_objs as go\n", "import pandas as pd \n", - "import KernelRegression\n", "\n", "fires_thefts = pd.read_csv('fires_thefts.csv', names=['x','y'])\n", "XXX = np.sort(np.array(fires_thefts.x))\n", @@ -105,7 +2242,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 4, "id": "loved-clinton", "metadata": {}, "outputs": [], @@ -113,31 +2250,42 @@ "\n", "dropdown_bw = widgets.Dropdown(options=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], value=1, description='Szerokość okna')\n", "\n", - "def interactive_kernel(bw_manual):\n", - " fig = px.scatter(x=XXX,y=YYY)\n", - " for i in range(0, len(XXX), bw_manual):\n", - " fig.add_vline(x=i)\n", - " fig.show()\n", - " \n", + "def interactive_kernel(bw_manual): \n", " Y_pred_gauss = KernelRegression.ker_reg(XXX, YYY, bw_manual, 'gauss')\n", " Y_pred_epanechnikov = KernelRegression.ker_reg(XXX, YYY, bw_manual, 'epanechnikov')\n", "\n", " fig = px.scatter(x=XXX,y=YYY)\n", " fig.add_trace(go.Scatter(x=XXX, y=np.array(Y_pred_gauss), name='Gauss', mode='lines'))\n", " fig.add_trace(go.Scatter(x=XXX, y=np.array(Y_pred_epanechnikov), name='Epanechnikov', mode='lines'))\n", + " fig.show()\n", + " \n", + " # kernel regression\n", + " kernel_x = np.arange(min(XXX)-5,max(XXX)+5, 0.1)\n", + "\n", + " ## Plotting gaussian for all input x points \n", + " kernel_fns = {'kernel_x': kernel_x}\n", + " for input_x in XXX: \n", + " input_string= 'x_value_{}'.format(np.round(input_x,2)) \n", + " kernel_fns[input_string] = KernelRegression.kernel_function(bw_manual, kernel_x, input_x)\n", + "\n", + " kernels_df = pd.DataFrame(data=kernel_fns)\n", + " y_all = kernels_df.drop(columns='kernel_x')\n", + " fig = px.line(kernels_df, x='kernel_x', y=y_all.columns, title='Gaussian for all input points', range_x=[min(XXX)-5,max(XXX)+5]) \n", " fig.show()" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 5, "id": "injured-english", - "metadata": {}, + "metadata": { + "scrolled": false + }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "a38d1ceed30b42d19a56951cf88e16e6", + "model_id": "ad45339f5a46492393ca1158653290e3", "version_major": 2, "version_minor": 0 }, @@ -154,7 +2302,7 @@ "" ] }, - "execution_count": 12, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -165,7 +2313,452 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 43, + "id": "collect-imperial", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Input_xkernel_xweigthYY=w0*x0+w1*x1+...+w41*x41
02.0K(2.0)0.132980760129
12.0K(2.2)0.132685575444
22.0K(2.2)0.132685575436
32.0K(2.5)0.131146572037
42.0K(3.4)0.119261143153
52.0K(3.6)0.115351297768
62.0K(4.0)0.106482668575
72.0K(4.8)0.086025942018
82.0K(5.0)0.080656908231
92.0K(5.4)0.069964098725
102.0K(5.6)0.064728685034
112.0K(5.7)0.062156096214
122.0K(6.2)0.049909155211
132.0K(6.9)0.035033879111
142.0K(7.2)0.029606153722
152.0K(7.3)0.027928534316
162.0K(7.7)0.021871938327
172.0K(8.6)0.01182486439
182.0K(9.0)0.008740629729
192.0K(9.5)0.005842766830
202.0K(10.5)0.002402033340
212.0K(10.5)0.00240203333254.121103
222.0K(10.7)0.001984177541
232.0K(10.8)0.0018003521147
242.0K(11.0)0.001477282822
252.0K(11.3)0.001088939729
262.0K(11.9)0.000574189646
272.0K(12.2)0.000410739723
282.0K(15.1)0.00000962224
292.0K(15.1)0.000009622231
302.0K(16.5)0.000001124639
312.0K(17.4)0.000000252215
322.0K(18.4)0.000000043132
332.0K(18.5)0.000000035927
342.0K(21.6)0.000000000132
352.0K(21.8)0.000000000034
362.0K(23.3)0.000000000017
372.0K(28.6)0.000000000046
382.0K(29.1)0.000000000042
392.0K(34.1)0.000000000043
402.0K(36.2)0.000000000034
412.0K(39.7)0.000000000019
\n", + "
" + ], + "text/plain": [ + " Input_x kernel_x weigth Y Y=w0*x0+w1*x1+...+w41*x41\n", + "0 2.0 K(2.0) 0.1329807601 29 \n", + "1 2.0 K(2.2) 0.1326855754 44 \n", + "2 2.0 K(2.2) 0.1326855754 36 \n", + "3 2.0 K(2.5) 0.1311465720 37 \n", + "4 2.0 K(3.4) 0.1192611431 53 \n", + "5 2.0 K(3.6) 0.1153512977 68 \n", + "6 2.0 K(4.0) 0.1064826685 75 \n", + "7 2.0 K(4.8) 0.0860259420 18 \n", + "8 2.0 K(5.0) 0.0806569082 31 \n", + "9 2.0 K(5.4) 0.0699640987 25 \n", + "10 2.0 K(5.6) 0.0647286850 34 \n", + "11 2.0 K(5.7) 0.0621560962 14 \n", + "12 2.0 K(6.2) 0.0499091552 11 \n", + "13 2.0 K(6.9) 0.0350338791 11 \n", + "14 2.0 K(7.2) 0.0296061537 22 \n", + "15 2.0 K(7.3) 0.0279285343 16 \n", + "16 2.0 K(7.7) 0.0218719383 27 \n", + "17 2.0 K(8.6) 0.0118248643 9 \n", + "18 2.0 K(9.0) 0.0087406297 29 \n", + "19 2.0 K(9.5) 0.0058427668 30 \n", + "20 2.0 K(10.5) 0.0024020333 40 \n", + "21 2.0 K(10.5) 0.0024020333 32 54.121103\n", + "22 2.0 K(10.7) 0.0019841775 41 \n", + "23 2.0 K(10.8) 0.0018003521 147 \n", + "24 2.0 K(11.0) 0.0014772828 22 \n", + "25 2.0 K(11.3) 0.0010889397 29 \n", + "26 2.0 K(11.9) 0.0005741896 46 \n", + "27 2.0 K(12.2) 0.0004107397 23 \n", + "28 2.0 K(15.1) 0.0000096222 4 \n", + "29 2.0 K(15.1) 0.0000096222 31 \n", + "30 2.0 K(16.5) 0.0000011246 39 \n", + "31 2.0 K(17.4) 0.0000002522 15 \n", + "32 2.0 K(18.4) 0.0000000431 32 \n", + "33 2.0 K(18.5) 0.0000000359 27 \n", + "34 2.0 K(21.6) 0.0000000001 32 \n", + "35 2.0 K(21.8) 0.0000000000 34 \n", + "36 2.0 K(23.3) 0.0000000000 17 \n", + "37 2.0 K(28.6) 0.0000000000 46 \n", + "38 2.0 K(29.1) 0.0000000000 42 \n", + "39 2.0 K(34.1) 0.0000000000 43 \n", + "40 2.0 K(36.2) 0.0000000000 34 \n", + "41 2.0 K(39.7) 0.0000000000 19 " + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bw_manual = 3\n", + "\n", + "kernel_x = XXX\n", + "col3 = KernelRegression.kernel_function(bw_manual, kernel_x, XXX[0])\n", + "# Dataframe for a single observation point x_i. In the code x_i comes from new_x\n", + "data = {'Input_x': [XXX[0] for x in kernel_x],\n", + " 'kernel_x': kernel_x,\n", + " 'weigth': col3,\n", + " 'Y': YYY,\n", + " 'Y=w0*x0+w1*x1+...+w41*x41': ''\n", + " }\n", + "single_pt_KE = pd.DataFrame(data=data)\n", + "single_pt_KE.at[len(YYY)//2, 'Y=w0*x0+w1*x1+...+w41*x41'] = sum([col3[index]*YYY[index] for index, x in enumerate(kernel_x)])\n", + "single_pt_KE['weigth'] = single_pt_KE['weigth'].map('{:,.10f}'.format)\n", + "single_pt_KE['kernel_x'] = single_pt_KE['kernel_x'].map('K({})'.format)\n", + "single_pt_KE" + ] + }, + { + "cell_type": "code", + "execution_count": 7, "id": "0406c2c4", "metadata": {}, "outputs": [ @@ -530,14 +3123,14 @@ 34.3922802405316, 34.354702225608875, 34.342176220634634, - 34.29207220073767, + 34.29207220073768, 34.17933815596951, 34.12923413607255, 34.06660411120134, 33.941344061458935, 33.941344061458935, 33.91629205151045, - 33.90376604653621, + 33.90376604653622, 33.87871403658774, 33.841136021665015, 33.76597999181957, @@ -550,12 +3143,12 @@ 32.93926366351969, 32.55095750931823, 32.52590549936975, - 32.338015424756136, + 32.33801542475614, 31.674137161121386, 31.611507136250186, 30.985206887538155, 30.7221607830791, - 30.28375060898068 + 30.283750608980682 ] } ], @@ -1395,9 +3988,9 @@ } }, "text/html": [ - "