From 798b72666fcc0967e1a2225c0a0068586650983f Mon Sep 17 00:00:00 2001 From: Morten Hjorth-Jensen Date: Tue, 26 Aug 2025 06:55:55 +0200 Subject: [PATCH] update --- .../_build/.doctrees/environment.pickle | Bin 223797 -> 228783 bytes .../_build/.doctrees/exercisesweek34.doctree | Bin 0 -> 40279 bytes .../_build/.doctrees/exercisesweek35.doctree | Bin 0 -> 47976 bytes .../_build/.doctrees/exercisesweek36.doctree | Bin 0 -> 28419 bytes .../_build/.doctrees/intro.doctree | Bin 45457 -> 45509 bytes ...bf3950695ddf24b29ecb476c48fb9e559af08e.png | Bin 0 -> 24495 bytes .../html/_sources/exercisesweek34.ipynb | 315 ++++++++ .../html/_sources/exercisesweek35.ipynb | 539 +++++++++++++ .../html/_sources/exercisesweek36.ipynb | 383 +++++++++ doc/LectureNotes/_build/html/chapter1.html | 5 +- doc/LectureNotes/_build/html/chapter10.html | 5 +- doc/LectureNotes/_build/html/chapter11.html | 5 +- doc/LectureNotes/_build/html/chapter12.html | 5 +- doc/LectureNotes/_build/html/chapter13.html | 9 +- doc/LectureNotes/_build/html/chapter2.html | 5 +- doc/LectureNotes/_build/html/chapter3.html | 5 +- doc/LectureNotes/_build/html/chapter4.html | 5 +- doc/LectureNotes/_build/html/chapter5.html | 5 +- doc/LectureNotes/_build/html/chapter6.html | 5 +- doc/LectureNotes/_build/html/chapter7.html | 5 +- doc/LectureNotes/_build/html/chapter8.html | 5 +- doc/LectureNotes/_build/html/chapter9.html | 5 +- .../_build/html/chapteroptimization.html | 5 +- doc/LectureNotes/_build/html/clustering.html | 5 +- .../_build/html/exercisesweek34.html | 663 +++++++++++++++ .../_build/html/exercisesweek35.html | 760 ++++++++++++++++++ .../_build/html/exercisesweek36.html | 691 ++++++++++++++++ doc/LectureNotes/_build/html/genindex.html | 5 +- doc/LectureNotes/_build/html/intro.html | 5 +- doc/LectureNotes/_build/html/linalg.html | 5 +- doc/LectureNotes/_build/html/objects.inv | Bin 907 -> 925 bytes doc/LectureNotes/_build/html/schedule.html | 5 +- doc/LectureNotes/_build/html/search.html | 5 +- doc/LectureNotes/_build/html/searchindex.js | 2 +- doc/LectureNotes/_build/html/statistics.html | 5 +- doc/LectureNotes/_build/html/teachers.html | 5 +- doc/LectureNotes/_build/html/textbooks.html | 5 +- doc/LectureNotes/_build/html/week34.html | 13 +- doc/LectureNotes/_build/html/week35.html | 19 +- ...bf3950695ddf24b29ecb476c48fb9e559af08e.png | Bin 0 -> 24495 bytes .../jupyter_execute/exercisesweek34.ipynb | 315 ++++++++ .../jupyter_execute/exercisesweek35.ipynb | 539 +++++++++++++ .../jupyter_execute/exercisesweek36.ipynb | 383 +++++++++ doc/LectureNotes/_toc.yml | 7 +- doc/LectureNotes/exercisesweek36.ipynb | 383 +++++++++ 45 files changed, 5069 insertions(+), 62 deletions(-) create mode 100644 doc/LectureNotes/_build/.doctrees/exercisesweek34.doctree create mode 100644 doc/LectureNotes/_build/.doctrees/exercisesweek35.doctree create mode 100644 doc/LectureNotes/_build/.doctrees/exercisesweek36.doctree create mode 100644 doc/LectureNotes/_build/html/_images/cb756715680fbe8cbf1d070371bf3950695ddf24b29ecb476c48fb9e559af08e.png create mode 100644 doc/LectureNotes/_build/html/_sources/exercisesweek34.ipynb create mode 100644 doc/LectureNotes/_build/html/_sources/exercisesweek35.ipynb create mode 100644 doc/LectureNotes/_build/html/_sources/exercisesweek36.ipynb create mode 100644 doc/LectureNotes/_build/html/exercisesweek34.html create mode 100644 doc/LectureNotes/_build/html/exercisesweek35.html create mode 100644 doc/LectureNotes/_build/html/exercisesweek36.html create mode 100644 doc/LectureNotes/_build/jupyter_execute/cb756715680fbe8cbf1d070371bf3950695ddf24b29ecb476c48fb9e559af08e.png create mode 100644 doc/LectureNotes/_build/jupyter_execute/exercisesweek34.ipynb create mode 100644 doc/LectureNotes/_build/jupyter_execute/exercisesweek35.ipynb create mode 100644 doc/LectureNotes/_build/jupyter_execute/exercisesweek36.ipynb create mode 100644 doc/LectureNotes/exercisesweek36.ipynb diff --git a/doc/LectureNotes/_build/.doctrees/environment.pickle b/doc/LectureNotes/_build/.doctrees/environment.pickle index 7f75321f5c39ba104ec0789f120fdc20c9512b36..7b060ebddc146ec103a4361a8c360832c2c3f099 100644 GIT binary patch literal 228783 zcmd4437i~PaX)UIE3Kr}u5QVP+8SHhl{LFMZTa?Uby!+mXk{B?o27TAcV}kj^7M?P zwGjb+Nsz=4b1X^Vll*f*xI#igAOQk_K)6D1k{^!2#F#S>2nh-KK}ZPvzg6$Oey?YG zSJInp1%2$Np>vP<4dGctzJzYvwE1s9mRwnB!B#c@$o9`ViyVXoSJ2F{c zFg#SP9LL$@>+s;LzRCK$`+TqB<4Pfu^NPM##NkQLO#y?k$@SW+)9yK=HM-p z^~Hz1RJB&|j+Uw(9-couLfB2#7xqdd{K@L%30&|iDZ(eSushS9S(I6vS(53g|Pk=Uy9`2*rY@QL$$uUg}e^v+a)X0}xHCm+ElEEi7>S4(4Kd2ggvt(Ncw zU9vS*Do?1kw!(y89WH_hi*vQ|MAfSdkCaN|I8`7r-iU`!4xTL#cem-24aJ2P2dD=!sl`Dzw# z8ZOofBVL7w@6{LN-Qrly9RrBj#HvO4Qp(MH!=N$IquwUY{Ye+!QL0r^-mq6pmD0?* zg|+Hva(5C~;iHS_DE_d-`DneP>J`d_fzO?VX?v=V`$nJY8GVIpF*{nSjCniy&^P_Q z!UX>Gp=0%do|#f{NAInDezxi*%Wi5MNcw&9TlA;*F##glQ>8+=R1^gNUwiRmt$%TO zBJEaPNm#*d`OQ&RjIZ|UZRJWS2f2du9v4SW(JgpRu~c=?{~=9o4P++iK2oYc44iv& z_?t-{l7ibM0Sr^WuVlwEcxLYQt=o4%Fm+Sr?t0rPbXUmGWc@1inTnV9T;H3_?5WSI zmeTG79WCUe;n6}Bs$~tN6w*Gddf)J9Ht!K`5QE1nrBd~5@8jy)*~cLfXD92VGwv*igKWS&>6 zcY0@1`C8he9#4`jG|Gz2o5elDsf?EzFPHFID1n8&dxxMrOBH%CFRjnsycrU^IPHzPkow_DDen>00S$C3 zrU)XCtUx+49#Q68y_2pLO6eMepBO=H%Sc<4MyLxx>Z_G3x2|t)9riQehyY01J6$Tc zS#*YL@l0WO6#PV&^M)(lsE2n#hxia^5Byln4~kw${OKr9jIoj&_Nx=X8Ty`wuF3kc z47y*Qx?s?0zy|q&P|*5vsVsT}y3A6ggoZ~d*)){g(fX2c&npj~7NZZnvdgcP%iK+Z zM(Dl8q}(y~(07pXTgHgWJBF(hW$sR^K(K5v?VW*u6beLBd?LCK0JNh64SVHmzBGon z@)`Q0I9tYKp@9wEYj`y8juEvx${?0onLy_h)SF$NKo=Bx6@5>QQuwaL1-DoxeK=gJ z@$lP%!oG|IVT3=HS9Mf`ZhF(7laz7!Z_rv+@^kfB6I#~knznw2$- z2TF)8Jd6=EvR6xrJ|`s9UVHJ+d4AULVh>}%^WldES3HYnwRj?P&l$f&XKrL3(U83_232{ z;}MX}*2N1Ug~O00hzQ8Ff}x;$iKgMx*);X;t0cZG+7Kk_#MvVCxyiaf5nW-JQiMaLEQzn7+mXy5eCCKl^Gs!E5l+yT0X=rPBoMD9kPphd(p)^@-Fl|?qdU1^uuMO zgxPXp^Kz6_aJ`KO$1Lp6B_s5yl?-|oX%!6F9nzXKn&ts(7`5kV{Lj0=ofv7nGV6Hp zXsy1OrU)=>X{hxXSj8)sV9b@E;pnFNeVJ;t?BCYcM>b12GvQ}be(zYeinsMy^Fb`50@KucalaQPma5zKMP%FT$0)x zmsdw!W>Q?QNDNwJQzD9*)*RKiEqRHw{VNn>yBFPHOKFYWAw?dkN>*Fz6EZZYjhzBqaYC%Us3 zu#eUka?fS3m|XyRZ?V?^`TOMwrJA#dd8;D0C-t2W zMA8yuiL4a82G;p-t&9ne2Sb%-3Zk3%7+;|BNc`lj$}q<4nJpo@vYdekfg`=0O+o#i zlkY2gFb_n(KUZJDcj~5L?v?df2^d_W7oz)DrS3m3+larzVy*zF0tAm8qK#mqeU*5g zrxesQET@`J0dA%#0J=GgbEF9Q1n4TJU z3X79xRFlttar;$QskxN{E5R*$C%mzJXUg4}Lc$Q}aUO4X@UH^LQ>EyL#$M=iGVQwi z9_rnE)7>w;;qkNGJuiOf;YS{R_>sP`EzYKgAHHGZrk>lKzCP!MjZVSCY!@TF=bVNy z=s7TSVWg!cu=caz7i6HH~_kp@-TAyzx1V6EdiM`4ll;x4-J9!%QYg7Y}F zopq`%d@)tN!Ks!U^hgknZVm1eXrEPpoq?etxDo`xoYE*<3y^ktR=!z0EWX)y9^ZTH z$PiQGtaCEJ=tbhSFLF*}@E4ehUXrG#``QDl3Vi6nZt=(#^%_N7bPm7jr1Eh5ICsj= z>E%=Uz;4XtJrI+qDeiF@R~Rl1&E!TWn6~-sDbE3>%&zRH(=ES6y@a?32m(iiL0Wt| zKSMV#{N6`vUS(oP(x*S44?y*z@9cvsw3`U#+<6y2jov`Q(cRN?JHt6^b{GLLTP%7N zqQLFU?LKD!6QL1!$Iv6-zi}Pvo{kvp9gNtiJf?+Sy4QIio6kEVo>L}Q2>Jv15Wl*b zajVX0&_UkWjxU3Tspa{eqBB-;NBC~;L1X~PF6)%D9`q|Qoi8yU@nmsRm0kr!mv*v6 zr&Oz!YgL1dJW(3}qJow9ngLQq#p)JDUtoWn^$^{$1s?)Y^3IgO(@{6?ds`gRH3UK2 zb(jpXaq1WK!^m}kksxDzxZMb*eiG4|EtQrr-8}4RE z1Q}!`lnF^-asBmC7@IfWE70b9%})q$OI17!u<{E?R-vnCx(x+Ks-LYq^h9_*Xl_og zWAG#iiV=zu)YAne@VcUR8j6Qi-li9JZ*p#mp`c?%CACV4+LEQK=j+0xzUi ziJ^^MrKbtH_-arddO>tVA|`cStxR2?JW2LIWfaZ&u;KnuaMk3yU zQdRUtKH+stJ^y3V*(U*-Or;ZhDo5PWOgBskdD7Gu_7H;d==iq0K#&7xpYmF?##L;TjdMP*bTCoaj7xkP|x! zkEW#~5u~LlpO{dMAmk+-XV*w1F=-`FH&1530vXiE{F(d;XtoTdQsi~RD~<{{JBP`0 zh;z7k>4qHKmQ0-b?E$^hMYx1$W^=02TlA`Z#d4uf-g^&1ss64$^o?YpkWZ!v6Y?Jk z?>PZ8zO+NVK)OB27d`voZp4Bg?m=*v9q#l<AovMi<)*PPzV^mv>oY&{;%hWlEu1qmFS6>&j%3vEsl_hIof|@pL55)BmD;t-_yT$?}>dwLwCVTp`Q`~cFd^V0y^X2{-X!(>py@; z4j;ZJpY28X8@Dg!U_JUf)E#+c&v-I=zerqwTBP9UBI%Lc!-)p%;u`zf;4u(q$lXAX zV%G=!Dp!j}h&;k(p!6_j0l;@#D-=PHwW6_FD(AgZUY^1~L^|j&Fmr{t*z8Xc?d*p@ zhX)U57oj_r8_ndBK}?22dZHO~AU15NM=Zch+AUCM==r~j6ctvNH2&S_41w;j(?&5c zh&voa_&^b!M+i4w(nxVgGHmC@0D|){zEma)Jaib{pt$7#GFZkRdAvsUwhRR8@!z=p z@mdj1AOxqV|LHq!#4Pv>sej~7V8%_e9gJIuKLqc57_O*l>0vUWK{_P7j6o}99)B2u z?VTp)8YWGTKMZ*w)6S>Z>elfti0Kl!5RL1cApk91q1+{OY4#g-=;tZm zOpmP9O%)Gwb;x(db2-R{ZrWvDg((DI79yfXYc*T&pqM5HuQOXumn!2FrW>4Rwo)9T zgjTrgG+5baeB|sGUXSP?nLG0P!?#e7lcOg+^=tG!6-YM57`VBH6-o#0seG7&g64fp zmf>2FKA*x-UK;2m3^=d>Dgg|C*hSo+QW{5I5CU!J#v;tmB7eTVjv5N?IDD2uX;97( zju77=O$%LSm1=C#G+pY7p=%bXbOPvDb-9QzlUIeE1{G7o+t;WI zsY(e^#vt#2$WJh<3TILZ=&5a+?@YdA!%Z(j5R9)%Qx8|>LMtGLYB@JkibP;zu-Tzt zAxhq4cC?>?p#nWtt&$^lX$nE2VdRBypb%XN-ESG0Jx~)3&7CQjZxp2(_a@Mp(sXZk zy$#N5#Kj3)J}Qj@I|v&Lu{Ih7^OWngki42On85=i1;BD4Un6C>h@cAjekw>}SzOIP zzov&dxeLO%J_SxrAADb(Dwl;noQ$ttEa$uH?6a(^|A%V!x0MPX!>x>L!NXer$&>5le zG^cyWq?q&d8{|zF`+yDdK509V>_E0KulFisU&suS<&clOm+|stm?OnBA^TWLEF$fXpRmQLe}fi`f7bI z&jt|76sim6g1&^*Jy`Lh_+9CrdCu5CbJUm&q6oqv&>0b821yf;@^52Sn#oCr(C!`7PUc zEJ7k{u~c+V!D2I;&7o_h8Bl~`P+@~>d&Pw*U`q z{#}M&TwX5ztPp=z;!kcB{j8;*b@-{TG^Um!a3bex^%a~2D^vnvPUCoco(6y=+&(s1 zPz|fN0ZD#}e@4>nBC-^U!(`{+6OnhE&%2b&gUEdw@r@F7kSkUj!SuR{E=0*k3#zU^ zPV+x9E*Q4z9R38-EI7YuHMe8fqZ!z^A9NewcQs!MHxEPa!}1@&euhqAjs`-BEEYjob-~X=Wm3olD0GNNAR5C3jE`h{ui+*&hKlJ7 zcTkK`EBP7^Im56;hauy&sy8|K$@((BVlseDDnWNN>o6O%)2zqw|Jli3R4)u@-rSuF+*MqdP$F+}jB z8t)MlmFGd0Xl{Ude5kv!DLPU*gJBzK6~&R^6dY6~%50=w%A{C|R-!Q{>tf)hoD-xF zQi|vbdcZ>`3|-ItH@#*Ft_cqSjrJJ8lgS$95Y=Q7<_)gFk}P6gRv9}3B4y!W;Fm4K z74H;=5mH|?I?&j^=7kTr$;bMWFBpDA9&AnCI{e7y8(_)O{b#%si;m1lno}Bu1+iAn zrsQShe##sne=_$ILU48HQKZRbIK7qQ)=SjG+$zhp7sT!SnT1`Zb{|;?b)^kHR@f;r!w- zKTT2^x-85TQYZ#0s!_n}!~+EnaaT;DXwpjV+z7o|{VHiQ34(rC{xSatA=PMia=xjq6cMz~aG?MzN^Eg>3&=-w&i&1Cgy%>xl z?j}@}Ei96%A?_?S>u{xj`4TMREao1F@KXjMvT|{?hd)?g2r6LyMgB=K5E4BlDcIPC znG4@oeIW@~64CIikP~?ea{(raxCfcpw2Gh#8KiD3?-Apd;gnjVufb(Sd8fuj>M8O; z8s2CGSDB`DB(stwOzo7YJ2H$HBDWBpAAcAwx3jR?_ZvRDoKK{#aq~c&>W$^Ivf5p+n>Scfx(d^C96>2Mt|VI1_~u zEXrE_gn?+YbMYQ2=}Gx{oOK6JNs;_K_iXFk+Iw>!hTm$Rhj~ys=@!xo={2MfmCr^! zo=l}Nf?qrBD<^Z?X2bm0j-OhsP8v_LL3JRhZ#XT^@CgY&7mXrh#z!oAfm;w3-Uw%s z2p45{eUY0#?N0cZYPjSlT%e7)#l3vcn zBSj0&tKJFn{a+ITteh%^tnZTp5J};jCn~e&3b4Yd89HIL*)E0z_CAoyBlL{Y-AC)! znvY0Bjr=pCVj}bi3_S?`ZE)zo{jtJF_7~*VJ?;6Foyndi(1qIN$QxKwJRYvijR;TAx^h)t_HCVye_Ws|uwzZ9-$v|_N+ zZ3{`elJ8D5V)2lq2{c>(2zoF3JyTHXSlCmak6{3*8MjV$Rlv?iGO$=#qj6k}!Nkpv8SP%~ zG5VlAC%jWxWFNrS2@i6WRu!aVl<|b;yKs(>2lu3x$`rHY=HnEH!x)*6UeTW)^N=Py znR_uHoy(oYFMmnyC4ByK_&uL{DIHIPbq5?tWpp>Sa7W{;uBZh&%~y69-y>+Cp4r)S zWvzS<4N!&bV;tvbx=B60%eW#5wRu0KfStf7f*=g0Q8eKk!ul7uCY<}(d8hJwVgJnp zL2fp12!Gry#ubTOa<7-lGFsHZ{Vnic`xsE*c0b}_AWsXvA@;#h)|o+Yw}FQ2fmlvO zi^R}njB66bHG5&h@XQtFcy$7#Ok;T%O-N^iT(=r;6xb|PJ!|XKmzsNB@KkfR3oe=c zPJZ3Wy-4E^GP@PkTl=(?WQ>8Wo=~!`wg6&lr9l znaq6=fB5!54L9BX<%ru24c&DA*CXz4)}&33eJkRzu##!$3- zcQij+tIxwaTrMNfI7VQe7#L( zlhE4_o>vzRVHP1?lG}&Z24|VWnIr0+?U^0wa42(99X^zKSRKAFKxFuwYI{*|gT_k6S9eweG;6`p zsQ|gtnKSC?okuf!K&6SyWBm8=;O-Zn=Z3SHm+;@8%e<8TzAOOp^1)dO$p6XwygGbU z0N|Gbyq*Z!UL8FBn#^m}Bd-e@CxaVb9~}L1aP?O*zp5U2L*|X@@VC`#2NW&TSw{&(ib>hOQg zsiU6+M?cL`5g^t6LDim{h1T=3IX4?8!Ie4Y$y}TS$mZsS&gSDxVU%k#PZr=LfVa>* zX*W+6;Uu@1egrXc2|B*PXt)u_0ica^VUuyS8^-|xJ#=BSarGt~XZDbMtq4^1=_^A3XQ~jzrt@ zag=)yKYYgvaKIpP4^jKWs(qNwUZl=kIvY`E$LWm5X@=m@*{C`jqqB@Wt79EJMtd?5 zIQI|UOMWCvH|5kL<8+o+X9YSdsTSkgLTlFGh=a=BzqGv;(*bO{d4LF^{C+MKo$zciG!84fr{abDbD3;G_4}A!1!`!Zp~a6 zaO;mDSDvCjNZ|}>CWvfAw#Sgla3t%KZ`>^+i_S-VFM;7pfmiNj_+flsPG|o|o&7ux z1aW?W+J8~CzXAv1tIh>?oToc3(2o>>SJH9aXm}Nl)i{#-CA#p0arM>a)z{F4*BVz} zN5_*!!|UnzmyL$sz;U2Vev>ZzmT~pB>G*eyhBwjin~jFw#c}ZbTW}&i@U6ko+sqr@ zPR;5|-(jBoo_X6ljVtw)IGbncIY1Bv|L|jcs}Us4*}4}QL<-0H)%qcdqH<0XqMKMdgm_)>@kZuW zaF-|m1jmph-=E?$a_^%b+3M-HfeLB}688a_tH ze`z#)oQ^+XG<=edKV>w08ppvvzXT`RcIm)bFq$tl@9Q*Ay3CVhIMEQ6ht5`n&Q{_~ z-345YVTi@#<3ZYG>osF7xU#^JIDBtt-r{D{&Ic#d536 zORLS3HRj1$oaENgkNncB>G&F>;aVIApK={edep7!=`P2(^?EwqU^FD?_y(ilMmpYT zG;E^dZlj@xjyD?(H_`DHqu~}hHkr8_4M7LK)jYY4ZoQp;q*@rD4sy*UC+aDK(Z5bVaT|8634+C?xPF$8&@B|u@dwe zTx?6kLN27`pd=eFfIzJbTG}OBD5nz9Q`FFyk6__kRt~tA63lrMb?n2nS#=G7=_3x@sT!(@>fB0Mg)z__%_mUg1{Zx zRoqM;?!sXZazQe=2-%vURQO8hJ4O5$2{H=CRt@A|L-=Yrzb-w!Oh6irecj0h8jBZ59k)4X1iwcre#bdiBUtRCyENfYni)}rm zBGi?CKJc0UE!pqQ4*0(hH3xTpDbyUe(7zCB4t(U#P_uetaPt?<*5KZ+n5}`Q{8_U# zaA^OX*&6trzize$0g^A9tw99j^JZ%ht9Y7Prwaysj&6vEjQkC?H~7PYZ}@D)#o$w( zi?|qk(bwqW0_H4LBF+6Hoj1hnzCmq^RN@EU_9Qh$L5q)yA>4>P3n}Z`L)J#8#T&L8JGF!YiH90s()o@l-M|+_IiYQ>{VS(8! zm1d+bW=T;Y?*P|SeeVDo%6AVgM7oqv!m3&LJ#oLR2pz!E>t_fJS)Dq#O8L=~gR|=^ z8^DR=%E`gGP4B1Lxp<%vEhKoMInxc7$=KjsSm`Ynt-$#}PB2mE7O6tZLhV@Sjk-$+ zfvC)SB%mQbuSyH;MP6hFt%{`8RY=97>Z|qHSVL1^BJw;bBMf(P$`=-EqhcdvC}QwJ zd09BLLEQ6L-GIBsQFsd3{li$~MaeN3aF8fiMy*(y+lY#VD6}Oi7NXhj72i+mcl(eR zNOv0R%&?lIGMX};-Kd_Wd`OI#sLE66&3e^Q1^{^xg$x0So(ni@*)V_+MaPy6POqLQpVmYUNM6*w@8>nhr)Yk zi3TkVTyB;$6|-bYGh>9EydRWY?zUqH(*fG+cjmB59z ze>(lq%AI%4XGL(K?PK@-C7+QpxX?B+@^L;Rg>a$m{OzCMGg1l{+8#UlNj@XRaG~wT z-~Tk9k#e}ucGF*dhR;YrTxk2K``3I%O5#G>-rgtqj1(f?c7hEqchatL}DIQ7bvD^?JBZ=kqC}n0w&X$ zteuRd;#E!*q>8i)vR-;ea*-%yKcT^+pe2;Zyg=+cBe*0x23n*#L)g9fs+Y_%rca)V`Fm!Gw-MkAw^r7`7sKG#MB1I-J zEz(&vOf{9M+5<@&GSa9@aK@ty*fpX^16^poxInG*kgwQ*SJdZ9It!xGSO_o+$t#7N zO03nQQDL5NQXTot8&F`J*WSS3#)3GOle3e#K>(tW^a%bQ$*s&C#oxiJah)Wm@%pO8 z;`<Cs}H|{^SyIeHpHkbTwY@S|F~Y9x@Najn~Jn7S|KFP7>I7{p>n%eFLtOOg3JB zRhx!SQrdXE&@Qeo!Sf`yjn|)&*E?{XB)Rc=??UnXVq7QLZoIzEpbtrV9g z!=dT=Dgpl*Tqljtc-@^NuFu7Fk|APnyI9WSm%S7-d@(YisjvpG-w5~-g`k~HKq2AagmquV> zCI?%L{Iz-q4+WIT%qfmk?Vf6oFQA1Rl&B3UA-k~eOj6<@paobVOJ8PQV_HZ_rLBo;d+a}$KseC+qoyKUEGE!@*zHBV5otyW_rjlLp}`-!46NWolH!i*%_ zD`%8!3@spxJ=tC}4cYqV3bM@u*=Qj8Um@G?%qZCy+6<8GZPSqLpJoZN%?8UMe1m9C6BJ4HhCS zthlFz1Bd)U@L^yJA1vA-lkpQo@wq3VJjmAQlDYRf5uH~eU__kH1p|--_9;BzkGS=A zqhtaJ{G2S;Ly&dLfx;uSQkxw_I9hKl2}B+Mrq*V&H^Z=C(53O0pEJ4aFa31!NT zdR2_!l<`13{a=UMURIq~N!{AUmoo7~rMs1W4Y z^7II9A1dWf5q^8KqrBNh73s~+KGZT`v(FKw*FtIDA!Pp@ud_pTX#=u6p`RYvYX`7Q z2c?JzH71@(L$MA8-IIxU)qGpLIvem}_rmme-E;z`Z3R8IilT3f6N+pRU;W#hV;C=~ zZZpxC)|`Z>*I|uiR|A&p`j{Tebth=4p;*d-!X71KSw{$|Ypju)+kg~%VWvlFnX%qR zF4_nov)LM%c@4<0BWQYLmLD#Su`hQj((Jaz20JH(M3bFS(__;!#X=htvo-pZo5fNt zS|p@;{(fs57c}6=ZnEidbb=K)yz1;CsGYP%ZD9jy?6;d9wN&F`pxYc?%;Y*lkj1>` z(3&Ay&ve8sPVk9X&#@2j36vgl)Uu&1&JlQhcs1Lh8b63tV^Ljo#QN*n8@`Txk<)+O zu07c3CFLMt0Hv5^k+I`gf|SaZp&18I-v=eFp^t*C7`l%S^!J21O4%CUMGg3}$8>sp zm&yT8DaH^cFR{jCNdqSAv7H{1{$s{kxGiFpA}B?pF|FhzVp4}_+_u6&hy)W96nQO# zaIahA-qwIS`4B_(D%f=Gdq6j+vOVRVcK!*Yo)_n5vqzTHhkZ98;Vgwcm$v1t( zB~B)`w1zgenL?qju?DvSPxi(1n>ioY zuOlY$$MCV2=Um`S2d?yoaO8X-QLAJpIfw|yP?5?KvIhrV8X669U&W79DMyIJ>^e9^ zB)%;Fiv)3R0AeqL$lZlMkp#{SOmQW5aHw=M2vBnut0MG+HET#umgLJSbS}F^DOt-)&3&wGYs)IM_a?an^8mh!?NL>*L|Y z+QeyKkj(n1u|&QmFNqzM#fIr}1Sh`CZsyAqwnWvPy)KA)l{4#RovF`)& z=qn|BHH}J?ECF*vY(E&H{kvnMeRsl5j%s|83ZEo)d*EVL0X`-xqJ-pKtuy1Dwji{S zyj}2frd8BRB_l5OEh(jG11&EfmXD`n0 zA>L&K1f=@C6Ymy^PspeR2#v+e>&|WwBe`)XOVy}(?U&dnOBEYpCShL}njeOQxeXf_ z`y;~cnU6AvFcGz#Va8t;`>E`Bwkot?2t+4?aM?gY5|VkFaMX6-hRY#2)d<5@42LRM z5`t~WIWKv#ey@GqHI+;(>-Y#p(w8IjM1y{2k2yaOB)J?8U!tv4-=6T9K}q^Pw~|Ep zP{|-6MW`?h1|`EJ)W*P^=0RsJf5hcPxSA}iS%MBz4LVZ}@wOxU@?(`Tx0rp5T@|$o z4>Y0vbQchcXKY`QK+2$ecM{!-2NhFwMH*bUw@%~Twji|9*kubst1iLm%jwv%vuG@4 zUUdo0b$!#!c#DJVPx$47?Fvj0EymVGuBS~I8f23ZNd|}*L*3kFi5$1(lOE_Y4C0E+ zdE~$`7yhsCxbOs1SSAl}9T>UG-0l*8^lQP%eZtoBSG#u zJaFjc+g4wdTThQV^utq2!cS`N`a(zTQyRiUe8S~)_e<5|%M)-sVS}e^a(gm(wb?DA zOwu}I+>)w3Zwo>T@GlCw&9q6nYk!sN*t8$B zWrr5^kJy4}#qA8jFhz47SF?mLU`n6+H{%weZJdU)z%?{>^*;(XO~B zv3XFl74gH^x>GX2n}kyQA}}J7*?zs_)u@h@Dkho{%WR>9w4(1Ldd;0#hHZ zZjWmYV93)hOx_UkWIUh&6&}WTwxpR!D}Y&xhJKeVh(;z^OyaeJSR`9mfY4anZ5yN` zEYwP%%Z^1@ryJO;Dmp$x9g&N=MCH=_TU0L15!)W3HNhbUVc}P{Chxkvw1+sUU~&MY zuzN@_DGXV!rMO61zdFI&n3L*dpDj=bW_?=sc0@UB^Q}`nYfEukf7!-;XK2qI?=}aU zzEZ{^*Ivb5x+!*gVsrNrDolj)?q3}n@i$@sWOR}On`9W9q{1dpui!%zCtlS$Cob56 z(5meff|)bzI$v=TqA^q&tztW;XzBRl*ch~u0~x+}d9++ar8@ngEitt&`h8mvjr_0} zt@MB=Cwm!568dhPNbm2xz%a96TniQDgk66WtZ3wHGBwM|}WYnB^!WKmAoY*js!4{YeGg;PCvX*T_ zPRsjZV@)D~B{)C@_LecD@vg!;X1b z3CRpHg{SpD%pQ!0G(TfYT+N@SZ9&A&pAPurYuJxn?xh=2X|oo`WfLz&zDMY_AsLB? zI{(C$fSL#YZ3`lH9;`whUL||Rad@+Kq*@6#QHU2e#>R_P2_)L#^~r{}hgcF3Ki&Y0 zTAY}yw*}G25)0pfc0Y(&sRam)#YNl?wtmEw2Md_6aycth#enHiz?#pn0e)YM{Q|2b z#M_hR+l_t^VRoOeWvLd_W40h-=f|dfr`$XeSJl+WAd5qLiK{7WNOC7)<4||PllaI< zl7UaMgj7i2)8u4`FxyYr5?u4lw*?V9&sO!PbJ)(@$)J2^g%*3Gl4s-8>DOap(dvZD zuTM6<-jJdQ^Zkvs%6(GnN`7IJD9sK#Uy@D3=Yy4B3gW**Dv=K+Dc1TM)5xaU+Fr_n?M7M*9IW zl*LMwElv@vqllN&%)95s#=DIi)E!}Tk|{<DPMw(wT!=GFe1(K zmu=~-S@t?x5V5mt4Qa;{`wrh1WVbk@ZXufwuLSyFY&=@a`mo~VYnnF_0fQ?Md7baK zC8_4hpV)$koh!@txK#*}N@H)f!M_q4Lsle4=-ol;x_Gz2i;m_T+b`J?QuE@Awjg5X zMcZEF!jx*&koRU@M_g9-f<#)r&!G9zW}43i1}$3NKmD1dc^8+_q{7Yv`D~fetU}c9 ziH-Wp5-9qY&f?8Thm>zN_|VzRhmEcCAz=$5_P*cKk7{G(WSW*o!B0jT^k8WB$g6oY zyaPapKSyHY&t?=MQy7u^Sz$ze&4#&0&hqvd>Z)!Kwq=2~A>v zdJcp^FwicI%6R>F>-7GpEeI`I9~LZ|>5SL4Cp?PdBIP2e+khZz(`u0K#>f{`5!M)R zK8(V^;7ddT__u9|s^#FDwjg5XOJ`t+Vq32i*y^O?8u3xw&3FF@HSAd=)SNCqEZR3Q={Aa3wQb|;<^_={Gv zTSUb3@3-Zt?iND~VoDQYN@J~c3*vaG%)=Gtf@77^X>5jWE@^r!HfCuHq8wn5lo%K~ za$b}Tak_PaS8YLPIegR>gq|b_wzo7%h{=+<;XbZotPL|({W+0tIK?~@GT z%IVnasU910uaO(i@oAR^O|L>5=Aa@`2D|o!81b*MF=7MOC`wGksOZw@Conel(Mh-rY9TTh@2RHD_6$K&K@% zAg+3o-9S!_B$TCt5vfGi0I?QlFl!mal!7|*3yGJWMEWRIP*hW8(*(LFHcEFUXxDji zovQa5Qn(;W3h!*4xVPDY&{BAd;Ll7uPgWci4s3^ZC&|*Trp1P}!s*ypu`;2i4WXBZ z_z~eWaczmIN2M3qf@tK2g-X*}QHY!c2#rNtrp@}m*-7(L(n+uer?O@yW9uR71CJ++ zUsjEbMxYl>`z0bb?=`k;);;By7{runamMF}w-_Zd$>3M60XD{+{#vy}LDt)8Uq@t} zdeoYRyUB*IpsS8M~{ZJwHp^X>uX@L*D9E%%5mRMp7N8aV$qnOc18{FFKnIE z57~my0`z>rt(l%ftrewXC_Ot(?pj`9(#(}#h>a`jWHlK|$i@yGr6gm}#FvP<)XQy& zszu=EY(ZQyU#xvQ%TWaYjyB{4q&StUNl@Mv8%tJD2>|tO-i4t-NFw6UziUfL&5Yk+ z5LZwi^%+VYWskWirhgl}-}#ARsX%_Uh8hT_m*>;5k-rb#*I@8Ly<>qF{ND<#DN8eS zMsH61iPm}ZF2cBjg2?!6QcqRQ)sX~7WRe^Xc!!dNEt}kl2>!+MYbR=nM2kV=@6NqNbf=+ zPzX@ktGd}dHiVT+(vhbZ7%i}z#8gYUfcdeDuAILR8()VKG|!{`09p0~?qa4vc_Jay z8`qQYE`rmpt?!H~6ZZ;RM(V!s^9AF+XEVOf3bUvIP-4KW;i+@i_X6 ziG_!W<0V%Y|9)(2x+#H*;uQsj zW4~QUmLHFcj#xM3CdG@D!%)j{S5#2rOzXt0*@Dm#R1y4{X+vpEKXRAPz!e6cDc7-x zBr#*MWJ+SA@dAc`vy=F+d(l2mv3H`s!Rohx_3T!PD$7djsGPE(dS^7Whts1#Sf z*gYOGD6ONy(ZY}*eKa=K-9-kJ#1b>X)0B1&EL9pbZxDhwRYhsihS{PibrBZThi#do z`TIdz5V7;O`xrZLC^eQNR#R~@?9BOQY^>}_ln9|D<;?ozMW2dkMgX`g${qT3Tas(8 zeZ>|;BiAep7H#v0;m`tv#$t#+WXjY*YulvjfLDYC!c|6&U}0rG+)Gxkm>Da$$pWdP z@=Ne$Q8zj04ui|wro4+4K%_M0G=SjS`T@TBq!3TM$}6sk1MWeh0p=H?xH@H~9IK$5Gi?ccnClb|Jz8@?@DQ=T5*M-SHye3gNQ-0+1=x|n zT$0#Pc`m4ZUt$+{2GV_qaZCyC{p1gbcGl zXXyUDA=dQ7#+p?qq>8sE>Fp#$6w~xirS<4NH!9Y$v2}hVY(c~>HC+Rk(fPbpauhF) z#Kwzd$gRVhDM>Dh4-u(Phir+c2blx5AY$jkM&bjr0ph@UkOzx29i*&C$O*5?u4_30n}c^K6$&WyAVWr0G&>q0HVr$2Ei~yh=FR_?9cLZ`Qj6e?j6v&~R6_7K> zu82}A@3m!x=H|O?LB!6@bw@m}$|l4>=@j|Ru#>R4Ux!*m|u)ypB47Gh&*GLe=@B};is zxPVmBPz21z9eMQgL&|`UZUsq zH8C=9gzzFWgOFm2zLHIkd3=;7cd#L;ruao{((_BU)YlArr7eiq8Ms@i*(OG^A##bF zd{1ngq1-e>Fi zlwqB(T-mVBvJ;+9$%tetAMvW0QabD}_?H>#iu75L;hbBd!a3iu?G3s^eTzX{!EnxE zL~tr4wfMnY4!&gd%uF?!Xjos8fQ_bK8jPHgg^t^SMvL}sn=J?}A9ESRl<`U1;L9p3 z2Fw;=XHW&9A!Wpd`|`Hf_^=u^g2d}-?Pg$^8e#c)QLC(bZON&-`AxPUE}0|NSu3V$ z!A|N;s^z}e*wHZCn->*SIblmUP5WaEVoDV=<9&SLo>Hj_L)k5d4EIy9(Xl--61>sS zEpwtmyMF8REZc(6eYs!@LZ@~JuC`|QqD$nhO}229SwDe-;J$9 zT+N~75DHXPLZD#ukci;f@7Qui%iC|-g3$dVCeCyYR7yUvC7(_6qJj`VJ{=oBx)Q0z z7aLrN2#9^cmV}xMAF~A!I~P_Rp~dGI|6$X@e?=xOxZ#F)@h`FQVs%iv0lqcy`i7;H z^9CcrUEi@Kr{>7FY(d1%ksjs+{Qwh#qM=?*bz*_yZv<{rT$10%Ki zhGQsM-Woz6WC&73Tx%&%Y|)rrYzyL&*=B9Jt=f0StE93Nfg}gi@k*(=G|kPiF=;ib zBg@ybg9*_{@p^+L5dp0ow)E7Jw3R_jY0*u+?$UPJa)%-`R#`@+`#IfkesoKX&S3+5-&X+a(NxZM(HAaNb~K4f>O<^Xz%HAhZ}A z6>OjBguvT1bN4h`ZAfDoW$D6jp*%2EFO?}~AFVay**qQ_Z*SMUjj-wnMd9oXP)r&q zn&KEWy**>g87+`CTM)4`_poNJ(`fxUu8$a71Xr=6SsF>bW1>tBk3!xVL}fyw-*3dm z?L(T|jdo)avkHx}!R4gDSQN)GFb*+4Vmafl*>X-Z{|&YvVrTvy&3xg~*U9ix=xRp< zST%`5EdOY1EbrGW7w&x{q8hEUMb?6WXo%AhGrJGlvPpCLgSH^9B&QpfJy>!2n^%I< zjS)F=N=A&%({nmv_V{&MHfc_O#TG>DoW|B5!sxus>E{eLBt;d&+ zfY4ZoIFbbjjm0-?qggT}`0SMp2`)ce8sik8sg`&hpP|lA-xV1X+!qxSJYw4^wemT{ zAg}x(R^a)1*Ul$v>+r-KqBjPtd zYD)BKTXN}6{3=@zu~U2{#V7Jgc|>|C{vcHGNnGo?~G@E`eNX9rYmRb&fihGJuG-V`IK)Eb(zd@(jwJ`X04ENlQJTUKGH#74o`r1g7awy8A z+=aKcI91xtAS_Hu>)6bidr`BhQqH@eD*KOJ?3P%~xZ%>E55z^#`r1TBBf!cQ2*AAn z1cIq)w6DK)YCq4G+P3kTHDuB>Y?R=nTtB?q_L&%oO@5mO1fWTQfJy8q|%@7;uw}?I!9{xDt7$AEL?{_OD5C#-%9i=M|9spQMC_b{B>Sb&s*@t8b#@dS z3Q6+!Vq*|VGQBxzyxHJGL`dtqwnWr?__i&G*!i$_5G9yUT9HkPA_4};pYo7q*btmt zadk|FT76w&Twow3a3Kr~zC;9|x`0!QW?Y9Yh}ikky;p6A>qz=AhmIgd;8n0v%%{u{ zT9p+No87UoX;UKD0XJzftiT8*gGFMdPK%i0?Xo4fmZj~sAY$iP7g>#k5+>b|#ibvP zjXBH2E-Cb8mDgtSAtGAzpe+$KAMUpW5j!7}xXS6pg zBtS2XjYqvkofO3MOspu-C$Q44E|Y%|d5C9iiLd$hm@SA#{#h7?+O`xEX$ue)i~(!b4&^XYUk& zA98xTOxloOe?BfcVxI*r?#AJI7t10%V~)NsYKHz)>%{##TM$}mo)r9<=^1*bs8F1D z_Iqx%hIFD37k(Tg7eoc(d~#I1IItcUMup^lWJ^Nb#eZN6;*z;w?Jc}|kJ^Jz$ifyQ z#1rC(bIr^c_D%Ywesx0a1Bj{*Bo;=nMvra_qr!970;v`)`*jTB3aXzaM_jHv6rp?i zW212gj0$?Iq;QC=QL5*z)(LyNEePG|cMIOkwCcHTC?)IS85u0Jh#`f&=_+B@trr_h z)+c<0hSA}v?1@CfP)m_}Fpt<0SSzMsTM&&rvarjvX(vR`0))omB7>B*dR*D>3`oaQ zN=yt+(ztD|-hX{;J!BO;P|Eov-ri(2M0h)1Ys*vJEuLTyS5PP3aDUdXVMX3!l=}{U z1$OlDye$o+4^jQSu~Geo#3_vor^WJ^6lR2}KqD(zzq@rVyvr7Z7K?WZM$WVXO^Drk zPP-GF0&CEVnMd>rn{&^^$Stu^58*=7V*{6fcZUCb;o#gT8}DgbQfry{oGpk(ZdvF- ztxARDT7b}4#HC8R`}1QZ_=__IQO$V>@i`LrT3JtYN$kTtr~TTv%+8*K8z3YK2@8ah zwK7#h=b1O_+fet3a8x{V37KE0c4T6_5t#hxRf@6ARQHWc|V&m3^sko(A4w<84 zWMP}bwq(}&_Mk0@*g3Uk0PERNKT(=82eQR1N@b?KaLr#oHU_OlZFGqM4}oJqASne3Dn9lnA zmDrefS3+*ZT4pTa?oT7Xhsr0qX)sZ2wM@G@Nh}*C2w};Km>o>ovPX0HHMSrcIc#C3 zXiG;7nHC^47I9fR*Y2aDYvl>k`wI| zYIc-}u;0gQd91t1M;OEvv}tZP(w7}~%!N!BOQ*%U+8~s|7A7->=M9lH4Zjr|Q|?F@ zNzO^eF$o;SLd&qx$!rsI8&w?5(B6^Db-vL$)4pm8LQB1n;FEE`gg{w4=&l8^|7NTwkdJP8Yc0N#75%|WE+`pHB@9%jG z5&a=d_|QxS22CrDxWx%R5o&1P8OVOYb5NoayC)RKw%~cWH_V|LKZtaMr~=EsJwviX zbc)RDC`ILU{Dy50)%xex7{rwNXXa~Vt?w^7$FPX#RMtC98o!ZKAp_wfagnu7211e+ zGZ7x7^gY>Ql1+A8dz6a$Q0t`sfGr3umVYX^H`7*J+a7le{)n*M!YW= z7}}#uvai|_On3L^Y(ZQy&8>r&NO)o*sN#xY18Cv;nK6}{6bvUk@r#wIY*;<*QRy7> zfl7;(@f-#*rPi5ot7nhQ=9r*u*-EF2q~Jvj=G&Zs46QDaZotFdDGxcOVn@-?bTlLj zn`7g~9+d(@s3w7GGAQ1hOi4_6E|Vur*;<9uAT%k}QyZ`^N_TB)oq;#lg3xkwy)6iB z*obb_l3{ZZ4QegT9Vg)agT(*V3$#K# z$sn$rBqzyj@1j7kqtqpw#KK)9_GS@e-ycEt$73UVl70EWDk%ptF4aX-Sy`NGYNkZV z=b6^oQnLl2<+EZ7Ld&P<96yutd960_U1v|WlIBG?`zAc+ei(!yW&e)Y`VDd_WloWQ>cNP<+Oq=W@;aV z#2MlZ=+jBBQbE~)0nEaj{ZVytKNA~I?o4DAmdR0prJ48#B$K|0Bw{~)HCX5o;#!n! zf2wu9ecTp=mhF!U*3b03p*MoT;ammw>G!8ymcEdbeJ?hS_C|0toU_2*KR4~NG=^Ci zv5@z>w)EGc_ibAcv9oXsn1dBo5K*O?P)JeoYYWC)?0fG7DMBFzu5jX-p6|$T%Z&cF>4=;44!uZ%@$`b9kw7Exo0sl>cLg0Zwn9_i;Eb)wo7*g4`4Hq zECQQGACjwi*hU+wdR`gkDKg6Z6mIKNDjv)Gf=A`GP#4=9TNfKlpvVB@th<<82gIA| z`4VN!v>4?;;bZMz@T9zEDv*evZNF{r(dy$aTM)6cz9--xYj}2{n)S=3$b-tn#@L<+ z#+r4>qSB$-2P0xVo-NHa+eU0b{I9UBVc?cr49R2tin6U?%$8gj`G>Kn`U+;>IUmFr<#&~Ro6Ol2|T2T$zCZi&@PJgE@l{KT@ zZVMuIMlIEP59Ry(@Y0me#m1FRY-p(V2yZAi)gHBX`rq0TQ1jrkwjdgLU}4y3+ek#U zEI?>1-e4OkAS@8^{QQ-TcTdQ`s`CDsq~Yie!-mMbW#D5A^qh zw8N6?XU2f1FOQ62o{frOw&SfW+T(2u;tD!4cB)NcRoGyl6zt_kUW|cKrQ+qqN;FkK zH|zr55*MxOyMoPRfgDE)QUP)@%OyZAuwspn&!Q-=MNjKY+Gq*V75U&pWev6`Fphs-Us8#eKTM(Db3G1lI>XW6@ZY9mtkQ^u| z${uX0id2n_A8Qg-@qU(@ataIG<@*h$M3fYJ)Rv-}DMbcx1$EdpCz0|TcydsOkwQk1 z^nQJ8^uCrCsp!>20*OeXM`@+kwodjZY(Z#Qs0+@`v{qX409N7A_@YAABo4IBAT(yb z4=?ve+}u;x_x|i;ckXHYePlBC1@Y&L;?J|<&vX2zz5ttzqePpVpFCHeU-3q3mFy&2 zE1@wP1!7MN1d=KcP4d79n8FaHquy&vR4oqgwgnM8Uk3MP-LVqLmwk-I#o-OYJg_D( z0fZu_^s>@Ol@i>cMUc{}j4@jG!^T+HBzQJ9Rvt$BWq>oQHi0v^sc=pToM{bwc)!d2uf&>p&kD{Y5e z;|wDMS3?Ix#HM>~8KpJAO|~Fn=k*F2hl#CzDm$L7Ci5t-8fM;ou`zFDf&`93(B{hx zZbZZzPS}!CbK{sTh)d>%{fuFci+a%*YH5r$mX?LYX(Bd`tU>B(YMh2mygzzxj73q= zgj2Q@)lBgj#1)(|EIn9EQFc6*j_|k>BJmqzBXK7j8o_&M#LF@~+GZX^BuRY0mVmm0|EVpA*m=+{s%$sW z|Esale~~P!-Awxk3;a1-!fD$7gDr?g+FO{<+5#6U&H{wSA|?yG^BDAf#WA+gHj9ld zOT=Y-cO}GPW8=lf=pPaPTnbcLw7VDEf@tJ|1tWD|5Kevz5E_fQw$n-((s}yIhIE!5 zoo3&*!5Qje^i3hhPi7BysN5@~f;IQrb_K0j_A!VnXtrFl-@}*%?U4eZh8=8`C9=PPYVt3~3REr{5;v-X6Ssv$y!z_IAF(VIyA zQEaSPhYSXZK?7StQWIeW{edk}HD7+u7DViPSuM>EY~jYy{y>wMR>?Wywa1PnveeM)&{RQ4%`o&5h58&6gz z3bZ>Gzn;oY1+O<)65*@+p)EZ%Oa6mFT)`22qX^O`Pl?SbQRqcDTiGq=rjWhP=b_Q# z>KkUpByX~p>Kn0QlX3d+aN$2+(j z3Zl^DIxkQW6dpKGdWrn#wIUV(ReadvygTNZEHoVNa1#+|e06M0xg#-(nk`sL%cT_w z$)rG%eeD5`Vh2x!BVFTQsG)8n%dowwb*5dg1)&A&6}BL>c#E#{Gb!GC_j;A=DN16Y zUPX}-s_a!pAvo?%luW|)j9pU)Xxjywucf_wXc+%+Y`tw?A}x{S?!{pp16j^|;c~~W z*z>c|&`JtqjcymQh~$H|?ADs%{S0DCO)>MUcCTY5f@7!TPSwOql%hahOQn_%rz3qO zHukI+>=9_NX$3T>A_l6hG8!h~qs*%>wNCmk+JeyX{&~T@nf9XW+Jj6TE@G0cLZgqN z=#^L5;*4f1SY_8FcOKR+H>DiRyD=^Uc~@dYVwXg`Tw#aB)j$r*HxWKHGStU6!|qLFhJ z){Qoh#E5ADLSrH3KNcV~79#Fp0YYQ3$JSRvSYS!g=jL8@)s%+Alv51r$zA_3W2;s% zv7pu7h2I4N)O7;`N58h}RRg zU06#&ok2`V_?frZI)erFYDKy^TKr*LbVMb&#%1z);vAW%^ZTt6_Z_w%v{=1W@MkKU z%)0+~QfO<+t%;wCkqs2i^3Fv0y4s>VU4LgwL*2)p6g0dGil*mfle7}yujXBK6=KPs z!5=J0n2NZzB_>u3A>q~$n=sIv5~W@XVNd%HfYD5>jA&99^_2-9FHfo+Ak@o)@f0+U znt*(tNpv|&HEOx9fqFSjo(4GCewjlIKCV1V_NOlpCv+WgYhpI@9r7*uzL{5|j z+_*8WuCWdpP+*W$7^sRNrYelElM}$H#o3Hw3qtpfxcCB1n5)6-<2kBWiX+PGhDP{9 zG4cf}QDC486G#jUxs9-b57-h_OYL4;5V7;6`-F#``1CTf!?44!I>9JbFjUHuCpg5W zVr*>cL9|~X#LLdG903TK_1AofkioTxsOGpW$u-w9wjg5X+D-S-+6*m8QpHJ$f(t*N zEo4OuGR(Nw#>Tjt5;ej}%a+7R71K_dC>gAa2&Oz?OLxt>x-E!HW}UT7c>Ped1g9lx zn5CLZT{+!D2lj>|Uhj>KV-7|tg-J8p{IRq-UPXAa-)&1{&8BxTh$-hqGj21kKVB(e z_~DwoFc8$&2Z9t*a!E)#NDq9ET)r45m}8WzQf6z{pfrA5IB}Dzhu~C0174SqPKX|QS0xXE~NF1~!pdMZJ+k$B1frWa~8cqn71qh8rOmni1 z;}uGaqBZ2zY&mQwzBtC7P*$%^@@tKr5K$Cv!j_4;ADprU5jzLg_SdQ<%B)E_>FnsJ zM`_mC=D_T4#>R|w30Gl|Y{bCeOS>l>QAgU~jrtt9q<-C&sG2Wtv;`46Uph{B<-D8n z98@4jGG|Cfek?X-V1=c4ZL(CM98z{Og>cHB!Uk54A(9vQ2|YQ>24+ad%wS z@wNm?*C6kQ_FD#GdRtb7STKu<^1Ci+=Hf!2+M@A1-xkCrbJ2Phvja=^^R+a&i>7lt za8>R|Y1|1uNo0A4{YegQA+=r)@l5-EeI`1pR)y_3<>Y5o|%~f&{s9cY?Gue$Gcjz;X4_`l#)8N z1Kip)-vC)QJLk^4gdU;w-=psii zO!70ak$eeO3mGqMB6!V~T6%1+*n(&zxW%BM#~mR;79cbhTjF8+S~Wg6+nl6x0O{Pd z5eMrfYUPkxdrNG6U`@i4BUEx*a*W?EG+eVTdy_3Mb$9qJTM)4`;--KR+rbE9#fq!A z0>?8Ip)FM=Lah08Y^>R=S+kvZLUqoQH1sGw85lLm?k8+1t(o;PTM)4`YiGc$9gWO7 zK2gnJuj5nMO0|Zdoma$BsYpo*A+CKlHm>c^T-y=mTA5M9wzZ5}(nPI^ec!gFy=LDx zZ9&A&zMc^KSeJyQ#8ujs(l6(;VWHX)8-pCppq;$%T;q`x zcr-C)t1VTv1SM@jG&07*^3cYMm~>fy&{!<7RRx3vCe6?NFHf3xh4jGq40SX5s*6pU zGqzno_acu$T**oER<1=r(`Kr`ey~u+vLDKtK*O;L=CE#Mf_#aPVX={Tc)oEVF7np5 z>EaPoojq$HMu8GWj4H)r!MoTz+;28QU(q^4e%_WLaZIS+9vihUKB0a~>$H56EeNfg zeoL_9%1x;MIyRDDY(o8MTWV=-@(EiIjRdzCQ1qB2M92b!#^Po1uzlyfNW!3v4%~4M zSr;g*BZ{HWI%-)E?|xAb&pU$+NPHg^o5K3<$FX&fU5QNTH1C1{sBW=rI5TUu)=yu%hm?Cg3lU>A8<1}Yx3D9p!E{HEKeA%`S=x+2ZgRpSg*!l=I2PRRI&*nrnJ?0tZ210b5y=7($+$Or# zZ<@wiQz4X$f&3v0q<^c2C?22MC?T0 zp;QZp$_Fx~EG<47l>sA?nzT1o@x)dSqc}*H!llvfjg2$g^{}@M)m8~Jp8H`G&U2=a z#EcphW=(_NK3mFbt+mG%#3eJ&I+5$vfO{94|4pmz#$)5*Zq38#CxaK)eHmLeXijNdJC(z)TdBYqm#>OeG{%i1$wsl>ZZ3MrZ;2 zV_OiqJH*6@&4DJRpnNF0H?8V?Ha5=mXw|th9M!wHI)9EG?l8J8Rxb9CfV2%JQ*e&CdB#Hq>jS?EcvYQ+@K0))om8QU3(oTLBam7Sw+#&VZ@77K~?BDKotC-1DE6$@b+%L|7F z``t6t7wK~^Hh15JceOZ$+0G!Qw4J72rC>XE4;BnIZ5QxBT$HOX3DyMiOPj>>Wb1T% zo-GJ1AV&o&W_teJh3pkk1-n$MrcekftUDizjq1zvB8A}1O{70 zv*x_a6g=!cEDG0muv@NUR*(IZGfsyXw1 z25|+oeG=u9t68c|iTrX75voB{R_@~BMC6(J|Ev2FIJv4S?~t`SNq48y*#n`HBG7?U zI_XYlLxj#IG3z7&#Ua+bs(RgBFSSui(v5<{Plb-WaT!bf>E|FQj-T7`;ewx|^K-$C z8AU)4WEuS2a2Y0N`|7?|uR6=EzESgo_wKE#KKI=7zstGzo_kJcarAv- z!e2u!l|8P+!6mrjp5f<;HlP~YF+bHj5|8VWP<`Z40p>){7jr!IhR?#Fg9p@`DQhN1 z)efmQaP^-RVH?P*kteM1M)@R^-lW3w`-u{~hBB=5Y0(iiNGSMEp)P0-k@FAIj8%l@ zd)Q76=kl5SP`XZM=rz^|7QkhdC>^UUU+JM~s;Bvuu$oDn#lf&s-nU8TF#cpR^{d!} z#-utoDzDS{N)AbMfAbREqf0`y>Rkeqi5}DzURAOOE18HyAd^lMaoS$jtSiOk09CO1z#HFZMjhQ_&3A{BwgiQtjU7wv^!J zB1NGHZ>}O&w#oAZHk~NfTDC{ZiG2PjWo>u1@Hu4V^Bvj_IPFiP8( z$AYAXJ>{&)!Z9}sLW=u+;M#zQoezU9OLt~X{Sp$Lj@@xYXd-bscZ(l6U&7nD7mtwq z-UJaipQNuj^(myJ)SORqnnbntnJEoq<=jJmc2?`!0@v&XY*?-nElK8j1G&CHZawF^ zKoxt4Ye$do(&I6DJdQ_5gtym3$f>^&5pD?7e`BEj&rn@|)~K!@ zsnwNJe<5|<#C4qsZ+6nbQJ}W}MYVmgQEfj}t1YMgLTbC2YuoB|m9@dF=sLA;Mc=7q zsq?6QFs%oYnL&?Mdd#9n8y=x9@b#LYIQ3^Ps1Donj6;rb;1`D`qUpYL-4AGR@O~iD zbw8lKq@=cl#B?q_meC_Zj}>@?r1p4CYMg2;wT9DFXz0~Y43usmcC9r?DBYq*cO58? zBYu2#k0UPKBLe9RWQJ_$uB#(g!iWd+<`C_j3>1sjs5qO*B2u}h&_?GF_-hRMxM_uL#a(J+_x}^v$$Lv|D+;rN{00(6*X69lN-4@yS90uUZYDw zb)>5WE)%_Ci{Y?7UqtA$vb>7M7buR2>uAGX<1b)4-5RP}$GzSdJZqx3!6CTvUyBf2 zVINm?No?Rsu6+142siz=y24jWy&H5%oHl;?`$$`@Qab5@*KjQQkTIYZL=ovEo%BGG zS6NER7wF{O4I<{@M@)-#gTNmCi^f_+XEa9z z^HGW{*w-2w#6o;t7X{VheyvMFwFN^ctk{o>aYb(gB%^D2n|eP?nfTx67lXMbHMj-3Bu*PC?a6B1%d83vci~oP2gMc4F*<=x zbA>T*=0}HQ;W2m^tQGEqqd`o=%XDR_I?fg*arUOFReP?&U1nIIuxmK%e2M_>X#|$0 z<9MuNEO}QpAb87|;8#U66C*>vTaX%7Zr3HDu=@vH5)!*dw6N2jJYKRx_>3yi7>0S;u zFae9w0Mrjo5Y!}qI;eR%ai)@wvU<1l_v?yVf&Ony;>_m~ZJ96LjyPvH&Sv3Kln^2F z`Xk+6nG&eGB#J9@!~rY2K@MtD_c@K`if5Y__s>r*?uobBz04Qu=NL}T+4C~X9(pBa z?Q{;;=yOTCP)4w5`Y4qy!I1=_vnLU8G|{gqt*zwb}-(g20Tlbgc=)Ln8bwdBh1CPg{43l9f(Jrhkzc`D4J)lt{~Nr)uT(oJQlcIh<#3B8hOmhRO)tgt}%!Oe9w4A$7Iog ze$imp>}p*>Dl87^k}!_N3iONGe7+r)ti?1!W?}IX*;&aU*lE2(v>S|J6QzFQv4Y^5 zij`W(th#>FV87*hT|q0Xj_Z;zj@A6Vwq54g2a^$x|Co`M2PU68jKMQ6nnme6t*FA) zx{=1Q2D>V^=?YWf@jrA)7{}vs>_WnK8JT|5uu@EuV^yKCk&2+iw7O=4Px~JXA&xPF z4hg<$47tl`(^BwBm#IBIYkGs?vu2^sY!cSYW?+D9uvhbCU4#_KU(h9C9OU+c*iFo5 zBfvUQZ_)ZQW0)bdEf*UDbX;rzgBjs4Z$Hr$pu*sXx+IKau!sU}CiBIjoe@gIpq!fm zV_#dZDaCs+M}77&P@9p017J%SmziLyNu_#*E{S?vH1?a+mX%nNX^>D{JfpiXR9uL4 zcvD<_qZuyX|NJ{=ck^W)o4aD<;ngUGFRj0_a&Us$Jyoo3Qzf*OvR}6?s$pgilNfg^ zW#ZTN3wGf?La~xWw3bLZH<&L{0D0IY`&|`YXG(_dLfp;uijVn=56L#yylju^l2Dy= zSim#U<}Md{R@;#QoI}Atnlz=IxFr%P!5=*tfkt}Q_VxupsTu?2q9~iZqbJ3z8auH; zu!ATqf}I$%69VaNx)N3$;LW-ujDysEplD&uNA6T;qa*;vXN-Z-frVe7*pSdar7JNd z^t*LQoVL)lw|ZwZ8q^;*ChnFf1(&8tBqZlYb%mtl{4kRkcXXfdeZ85xa*Q_0Cjsa1Uwvjzz1LhjUP zI<+p`WiCX4P3reiT@ng!Ly~SdGVL)c;@+@`cj?MUjY>OpNf;OL^269Of+mbidqlXu6g0^@)?7}ezC=0sqscfmU-eW)cL=rD|-dsy}Bgo;nV23)cMivesHpG zH*TxYR`v(TH98`{Z;9-}h3tF^+Y)rxhGrs;3lh;zNC@6FfAjMz-scPl*)c9g^M##zSDEF$CsCJx>QG75{o&*{P#xPh6KY8qwL70+}IWjSj0Ry3a@CsciDj*K) zk}wX$0?0m#nKda6v2Yzcm$MN~%CCRjU<`(ZQAl1D57+dv_z(!!>q=08a9o#!aS+<1 zCGt)_2MEaic4M+{hwN!)r{xq*AHwbaA9UrVME)LK62?W|;vHcHq4oJo^q~Fq~T(cYHkX9zzT~gnGl@>&jBW@fKYY#^GoScq0!0@V|`#&<^7T zpZoE!$Um(sFD3F%=#nrl@;!(11=^*A2{D9_f_W9TF%d;Vtai3U{I>$n%sciI#t_>R zEi=>D@@A%Clm$y?_{Ww@w3_oqi^8>uuo!GB?RQm3`+1FhXFsM3mcsiHT@uFeZo=L9 zAB+Low7c`)>B?I{_M$Ec85Mkr$8 zpBm?E`3!FG!XP)F8^Xs$@{WOPJ1ILDuVly=G8A!3GKJ{!>@=I1ig`TYOjhv}!YidK zY=xJlOTsu_Tf}-sOvJdSn-jsQO3Ad1n{I3X?*(u0MzaW=reBrb9~jl%WDLD6a@iwU zjOBBz1|S3>v&ecveV7M2Q?H~O9H8H#3xvY*4Z0+ZV>zIYC9ccmbLF6c{>P0$dWAlu zblV<$hC1m-bWu^jen^*uabQmoZ|ebLK%G{+t#9edO^NW9I= z@b{m_AXpMD69=^VsUPLSz2H~6a#T<}t4qQ-6pMD05R0IU9p(s3sKmuzn3(L{6F_3Y zMpNqb;wS9>^Zt5j017OKrZ56nfJiK94=X3FV5J>r2wQ8 z0A;f=P*z5*T+Gi*%+E~BVM4D?B#Z;J{xI&sBbqFhKSe7-c35)gP-`Ou z$H*7c<>4%%d^A`lU26=m^&F9zlgd4s`d#Ill!@PPMPU12IbMs-OT#G~8! zHp2S2ksTve7HyWgk`hP66UXXE0F?JLDB>^s%GOak7a1(VpMeie-l(W8s1l=CbsbBm zB0KYREwcf!GcmSxTM&fDE@B_GI_6FI#jR8_-xuPzCL4MU*2$_MGyFn)oqx_4fo-%>B?C_b+0Z7gHXvne1WeI2SqYo zKmHGfX@dH(AZDT;zrx>-gEgyxJu!XxXS(RB2J#bK5(XQHKzQNl^xUpZrdAh=qT@gp z?x%CWM3ak)HeC|NVYp}@vXcUK(n1SY2dn~Acm$uL>l$?WhaE|AJ{TBKHyDGZJ8EGD ztnm}`_@SFT#82(KG7M9nu8dW0S*uIJI85_dMa8+Z6&cFsQ(_1W>ZaEi17&_qH??9^ zx)|od2wbfzK83&`T@uC-xTqllk!^4|f1GZ%4#Frkk}d}^d95)_E^LSi+@R)Q8-weu z#7->Tzz%yx-wKSJgrN@I1DSuOBV(rGTuJ8IXe)Bc%- z8VmuuTNf1t?3KDCj01b}0B6@31FAuQvyk9(x>8euKdMW@xZvmRwcr9BVgAUL`2f#9 zfw8S>O!Qs2%OZ+~CLAk>qC>)eo37-P@ZYRU!np7|Y7Wj1V1;4@mm{AsCiywawRu65 z8xs4cbY-T*ezz`((-yn7Q<7F8?#RHdKwE#@n8asBg`i_rIy_@Psw*fZ>xY@dS@AO> zH}qE?!gPi+Il6s|t5`*Qs0afMa_z$Ba zRSBmxJ=tN$&cVo}$MfCVBh8Myv%;QKKG`F^OYF;+?NW~j*}f)S7|kWB&coo)p=!d< z4jo+%Z}ndb6!kZ82+;iyH&a*j5ma?{ly_Gm%g4xCu$HR$pC~0jX{Vjq_wgcN-jIp5BKZJ zPE7}UbV(Q&|H=V$A+l|WSc!b4ET@T_T`8hp=IrwEeDP>0xNBZ91_+t2rDAMp!`#SW zQg9RVxCwWVqON!qLU~;h^$4BGbRwIY@&YN;1`QI53qvlnItHZgEYI<|JGzquU5okj=8$NVh z1t%+FPDI4`bY?W@Yvt?4Kza!dyG9$RI$#oemV!xABMC*pBu{*T$#8G}iY^)o&@btd zFb?QSABx`L{ptu^1h$IFVVVT3bT+u|{JAmUR^sx0O)>SjiTRkp@(9d?X2fT7#j6nd zkuC}22z8$pLXlm;rE1%yrcML8PYa}2y1_zrCYWkcah#z`!Z=PX(t<76S=JiEq17`i zYtSKLx>8ad;$mGA#s%Fi%sMmP)&lP*hH?^FC`u8Lm-o;G zm1D-RdkF?J$sXAjGDbURJg-Id(c3l$2k$$NhVZ|;;bA9*o#^Al&8+Vz_ ziRiwc)kQ>sdXFxNzbH_jHU{cAQDvUg6{|w#d%7fyBeQsap-eY4y)DOrRkU#JkKDET zcQq!z#FR?EBr5M{f&<=o^l=ax`TnRYM+L=y>yj`I#l`!vv5)lK69m?9Ij?Bh8>eFtl5BrKo@y(zAcU(>I}In=9r1Anoc|H5+E;>-Ji zu=RQ;sGPa2SMR))!q&^_z(J6((;~K{otE1g8LZ?uGFgBR!TFh-kDsoqfG&2#f||#A zW3{3~Yq5pQ;+eQAkR((~nWszQPtj8LGwx^7Qm*E|n822jI1z3s#MUWVis0NtOCi0e zfoJnQy11&Qu}hc4pQ35Jfq_1grg1C(#RN8uhu(8xXb>T`PSG?3=cbxQe|UbmNf%eu zG;Y)-@uz4SpJkxWq-lJS|6&50M(-Oh3N;O4>l95xaBiw;YzQ}vdvtMCP2-cgB>ogl z1HPjbG^Es+z`6bxHgwnnv`cXR4K6 z%zrU~O=Ir=Toq~>#MUXAhTz;()7TVl8WHBHDK+#wT@v+8<4me8m0@M?D#GzUa#!ZctuV*eMyfrL5=-td>$DSFoMyJ*uXbexF>{8-P<}BaV%{y+q zVG{rIx$q2)RxY&)dBuv|bP^-uggbvs7Y{XzJ)%oOwF*OcbkmL>oV3aFKN|KtGkkJ+ z40NO!egL39Gy~8{aaqNCYc+;=H1rq>-U|qK-{0vI4|FB44bCU%LjDjt@_PN zbxHg=LpEd#vT-cwQo2%9Kv=pYj03UiP(EvWp{>|^$Os<-9@n2wink*aKxr2f}@z9qmUwgi>{m%RBzBFVH~R2G}pY`O6C)3t1hyUF*MqE zhH<2!)Pes-Rbgl=CiJs!`)rv>67q0Es zg%zxC=?YL`@UOZgjAPI$?}$Z$$JzgBOzbngOJcDGrc=Mtm6HITM9T`0CmjdhMLiL)o_V36<4XF=2r4!$?&%1O2AK3x*VMZJn<&8!VC(qhS+ zim-tZD>>@_dLsc~US|xLMaqZUuqYo+e&9}TBs}H5R#%1!hEZJ-#$jk;IsJZP z;EZF-{61YNDj?pgOTsu1D?Ht&i12*JtX!GTKgzTBN&-4qYAy1GP_A$_l96x+IJPb-`ZiC|%?jrGAAw zFcEIC+=e5y_8kDJYz(B8@J&t3#E6*~UC2?)#1u0jCE_|==_-J7x+IJP1b;87N|GQV zt&TzvkaN^QEK1?jON8l0ur525&jvk=9ZTEC1Gv4*7;cy1NM7(51CO{!O*~SBP01rA zC658WW6WX*&8jXG3eC6ak}!_uf&)dH-QZyH3P`Ebg{G{3HU`wfD2{4W@wI6yJm!5y zSAq(JPwA2{4#IgmE8+~^f>JR`io_w|qZvLHi@{@)r;K5-Eb3VTFc+jboZM6N*>Nf;OYaxeO1W|WS3 zQ;|{uKv zNf?K){h(b+rz(JtJ6`~shm2v73w@T10F<;!c0l6K z81*zTJ3gdK#u8$+g0JYxPeJe{T@uD2 zSVk%qguXgrMRvl130D_^$UtT&k1z+r*#H(lH-^PBp@#uN{sA?SdvEEODkbx9b956b87)PY9-xu8b8-1zi%xVQTjdr~nt)!TUXpzuOoZ9kuf)=uQpI z@878_F(vf3>yj`o^a~EzBI;A6z$&YdeFV;g5;n{k5NEJ#rvgxX-WU`sqcED|Bacc! zoO&=KF$7Ld*w{Lk%!GQyXLY5k0J=w)gmHlScUFp+MT-=8s{k|*;5yQcQ6gW&xv8+x zC(|F{!5H6Rnz4()NS;p{Lu@@PPnbIjxh1)a)tD2GJ79n3F&AUz!i$n8b)~NW{GKie z;{YzH-80&jKV}ti(I{y*x@t6ehbdKfsk&;Etg$feZKFTxN>YLG-?}7>gRvgRgT=hh z3etxOS$=QJ7jfr=)q!zLR#qB=sh?tAc+Bzm=R=Duz>|u(lUcE>0EbPkYR=asVI08a zCjqR1-f*Qcv{qo1<8^1&-2CW_r%LS5m8YI_rc1&&7<2tSs6j8e+ZYI4fnFj|22o_7zd>{7}M4_SV0;+ za2XW_EwEU9!5C0|Fdp(pCa%*45LCuL?~K=@exoaS1>SSIB#eVM4~7+dBaH9sHQIz; zveVR>XFi!!@C`8TJmc;|F9ZioD$Db9Nf-xU?kk2ZTx88-TOeI#wXI-hdl^TmZ2;@Z!89UE;Vwilpwi#4+?{a(DlNM< zknK2biEPxkDAXFurtbRbgdAt%3m{cF;N(OjY`f;f>VDv2}kQtWf{ zds26$-BC;tF$q9Si8MA6%rv;BdqlTYsfPI~T@nTxrt|G-aM-?LtCc)T8@#7!+l)H3E7zbq@-zW^4?gycG%or5&#ht?X!b1Q&qANWGz(cwui~~?- z0=K6wxWzaoaKAGKN}UND{Kf|i6k{hbfqPL`$O@PfQZVWK|*nn z(si^hLa|ibj&eR3hmU}`jg500j8$)_b~_JFoiu58m-AhEEpz^zUY*YO=+*8#POnzy z33_!n|A$_4oTunD-Fb*!Go2sNtIPSm`0g=!bvTcT*TeLh?>s=S$JhyyCV~T}pORxIEyhxHEA#vYaL( zHqH-k-F?m*tIni#M0EE#H&>nIGP(PlTdK|uFEbgLw3nHJ%-?yLsmR>zWu_tXh?kj; z%>VN;Gmts2SCq25<(6v2osQKMEZ9iE;9@ek$oJs;$;`#uMRGD2`iw|ULGm$~WZqiV z@~@}j^VK3b4aox{IUULCWRiYeaa)qZRsrXj>tumbP~eR-Kw=6P_Fj8^_*V)7D^BqsNZIybLw+7rYEL@}-NJY|Cyma@Drh%X&;lJzht@n9lY1fJjn3zAlnfk6(x+ zvEH$Se+$+tZkKGQGB7=#8%nY>K=w;3@zWVh_QxVgWT#)qpQ7)8w+$jgWxPrxsf-&% zlEm|VktFeaO(aP?&&VXxSa=Z=Bw1~eN&fs=FGI3&MTT0y{}M@R0S}8LwSX5zl3KvI z-As^Lz!f5i7T{Pi$+X`gG9CVw(J!msf~pUZlv=pzV=~Eq_c1R+JUuBgB$P=@`S&D; z3q+FSaHU9+95NzFa(JsqLJkVe4YKT3l>JlszLm?KeJ&@dgta0`CH$34GDj6JLmYij zWT@<~$t3^i=U#?>wB$S{N?ctkll-H&m!TiM-pf$i{E(NSw)v>YP)%NxN&fS5moeGt zyXnvOhzwz!l}Y-Ms_;fx;hCuLgY=7;T;bq}&k`P=Vhh`-l~4Atj$ndBcmATm_B=VX#UpHIV28^$8~ z_z2?v2--`imvzMVC z9q}?$@=acbI>iUQ3=P=#c^T45p7k=Mm2}RQq@k5K{a&UO8CzsXm?uP%g!yriBw;=% zk|eU{MUtenxQz)?W4%lysj*rjNh9PNMUqCy4~ry?klzwX8X=z(Ng5&Nw=*#eiq2+{ zoP*>Mk?chBCXt*=?W87ZPs!}3e7J4J@%@l~1RA3ZNJB%H;aOb5d8)yLCk z=Ab^;(GTWuecmCGRG-g^B-Q6}nPkd;@G?~Vnz{U^RMUeZNi{ttl2p0(h$L0+b27

R0M zoZvsoh$Q{d-^nDgRFUfaAj}QeqZz65?i^_RW%yf*r*jxoV2pqd9a=ve!7ApXYY^uC z##N4L zpmJ0dm7_YT992%`sFo^6)m1sFx5|+KRE{K}awHO!BiX1N2}$KhS}I3kQ#q2K%8?*d zjwGsbBwCdt8LJ!#yOyiCZ9|!S0y5`TQL4VB>UN6eVyFC{O8L7p;i%6_<7~QY5jyTU zNq)^L=JVyaI6kPli%JFT&5x`Rzb&mvuBm-B{SY59RNr1*brZw;@U%&j_PMi5=>%4L zLj#HYF}terTkTB#IP%ldDJ-{9(?<_80dTAguPX4aaP zbSn7dgxjiwaHQ(Cv0S!EQC5#YEY1_a&6CJ9GzfddtFH55w05ctZHgSJ@}>x0v?+oY zZHnMUn<9A8rU+iNDS{Vmir__?B6!iJ2wt=)f){Oy;6FX*&$TAo!3GXXf89du-(MK zgwMDEIPYu`^^@PX4O^wS+I{nCKE@Rv<9d&Awa2*DV_fMmuJagId5mj3#uXmp`i^mR z$GEm*T-hljz{1lM$oD>}yYJi*l*<655JN{(?IPjD4aa1F<}f@2k~!|;fzpmPt` zQ#9@=#S%AbS$X+ksmx=sI|~-qL$vP9=SUo$gr;Y#gq>lbxh+F>PBaJSKF}TB>bA+| zoXO)lkd5&r4!_5_651um94O{TM#X3_Jmk*6AKOJMQ+229;wE)VHE~PTZ2Fc(qlVu^= zZf7&PD~8CU2#vwk1(TcP?(a4$+2ToJA9_6w?rw+e#x|T+UbS zEDX7ET+uAsBh<_>6^O1)J? zYiK^Ny6t;Ym?iM>Ht|z$j&VESq$QirWv$}TINJGW^#uC(VAe}_LN4$b5{E!>GS348 zq4)4P)a>c;AUz(S$3u9$)oo9uOZ*q5QCyZD!Tf-a-MJ(SXaGksl!8(bIHI5h!B65j z`*^%;CGgFxN-+~JCE?_XCD83W0V?~PC;9mlJu3oise@qdn>%RZ7DOC_bt;XB%oOvC z)SbCP-GPWwc07SW>Szg50`b%#@Pj@&j6lwI5yf^;3SeVGOb+LZr7F5?r}tSYQyGer z&q);4I$X|X;#nJNlJg7^>l%cHMAswZa83&N&WWT%|a!vBcpUuTr+FyT5@E zvy#9Dd>MV323qGAM4%lX##44ColQeN`1F@dmL!xO97Va;Uq31&SRHfcrn0zx7>7{v z$K!Hr8go1SpOy+%(ysq$3S9`Q&Y0UJewxZx2;6iI#n`BSd!>M`WTQ=&haG@7=61+r z9BNsK!gV;?h%c{M0HNg3M1BNcoEXj>LFXAx4-IGVKQ&4v@iBK6-L=XgBBMA{f#%gl zjWw63HQp|6ytxD#Zqb&l7Y%n`qH)7*Ph!&~pN%85FnHviJCh=EQwzwZP?^~T4~-1* zqxNXk`5p6}w9yb7d@=VZ8l|0y7l%e5)->E#p{kRhe!3krPP1|eg>DGbjx(7)Zb#UV zBqJEdgk@Kqsr2bQ^=T58D|Wm9Nmkwc`t~hxUMlshaVmvTG>kZt#f}b2b6V*!8xI^x zwc~ZdnL|%^k>Ua&2ue0ObDU#FRZlow{EN1%T^zFGC9D-mb3Ea;L5W5mh!@bvFHC1wub5RF4<2-Nz~G*O}VqV`e2Nec;~xur8V8d_7<=I7tK2rh z04j#c6st~zNO#J*(X0^9P`DTDztI<{B3GJa<9%}heKSvfBjy@UC2}sL@8-+zFyg`r zDPH@so4#BizohXrg=tJS&#H4VecJ{zrQ_s;rd*0c3w2iWhmz+(SZIMY_dwH)#cL~~ z89*nSi8%~ajVDXg`P*ylA7kHOwt51cv6HOO9$t4=Re5a(rhys>%^ I3zIefAGKSYcmMzZ literal 223797 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 diff --git a/doc/LectureNotes/_build/.doctrees/exercisesweek34.doctree b/doc/LectureNotes/_build/.doctrees/exercisesweek34.doctree new file mode 100644 index 0000000000000000000000000000000000000000..a652d192b7e91f3da13cecbf9d0c3871324f0a01 GIT binary patch literal 40279 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 bypwHO>Exn7DqJ>6(Yr?Mrwar*-1hvx(J>R2 literal 0 HcmV?d00001 diff --git a/doc/LectureNotes/_build/.doctrees/exercisesweek35.doctree b/doc/LectureNotes/_build/.doctrees/exercisesweek35.doctree new file mode 100644 index 0000000000000000000000000000000000000000..beac0e7da4c13e593ca9f3d932c3a549f9b6a7f3 GIT binary patch literal 47976 zcmeHwdypK*c^~n(1MUDE9(-CPp&8>`Z3)zH?uc;*dwKcD)F#8JKg>D*WbIp{`zAhpSk#3H?jXkyMvDHw3o_e zz25ffR?v&K*S%V|WwpcJYrUzT>aFx9qcPvS8hBm5X7!?*@J7vc+`4bIdl!4r1ic{L}V&x1+vP&Dv$(YS25~Xj^D5(oa2mx4r-LzJvDN(KE9@ z5m7X8&4GTc+Qp?*Mc5Y2c{qTW36gGHXc;5CRSzDLb9z zcC}~UY45b}vbS`r_71)d3Xyx{gJ|w?%XhAzTf=PEjVD_j*P^wf2haF*r)~Pn21X7- z`KFuB+K!-vWv^>obzIk|T1H*YGPEts)O43ar)Ii_ zwba3!0+3r^G(6v+wKjdjw-&|Y8Kc?-u@XMI9fMl8K<2K|@V%B1)O<6n*=2(dN@F?g zn%k{gMrdB9Hi31;@-Yq@-wd5AAXBelbbPPgt%dCK6)dIa2Mqr$6ZBQHg0k^^w`M0= z0ry4?D?`179)rZ|gig!3hHkw!_1ZGq%lJc7V;Qa>7Y;9aJnn|J*Il&1CLAqZBedE^ zHvmGqp@*TJno)Ne4U0I!;k`O-!vv*aOkk_lb=lKkh9Ce|&8mx;dWLOY$;B#G18nGn zs@!G6w%ksmOISjG7#N_iwt+*0=O-sj%Lt5`_}2!Yc$Y2QHOshS`i|EP2#p=f4;>(N z(seFdKzGdp8Ee>{BE-O z_e@HhJtC#?`PQbJZhAq=12DYlUNx6N|GpCvuYwh-o?CC2HLGs8-c@i6V|)P zG&{TKgm$-Du6eE5$GleOS$jEfYQZWMS#`bYYztb;@|n6MOMoDuH$(gM)AYIAsW(2r z_=Fx<7u1j2Dnlf^sei5qF)MFXr=rz`b1@!XH$1N8T1E1XN zSSu$V#^`Lm3kGa)j8fR?eFCG++eOoaX1+xBHS`*%yN2h&-yrIVH8Z?&2k!q>&u5Vi ziWC^lZfBYFIe8Gw#zthsYR_zDS-)LNO+#+fYMzt$f7^5OWH`Zr$;ivxk^xFiTo3s5#_u%nC{?$qs`1 zD!l&^>_xwn{&|X_7LHzY&zg`Zm#6uB3YYddx%|N2tDGN%Yhc}$cub5Wh>X@t z{#ajQMfI;0rg~aQQk#!{j(fAspO2|WbK}19B+Rg+3u`!`fhf3$<;ggk$D(?$3-F?g792*=ST027eX#={~ZC{Lko>^2ahSd`5~6cF(>M94^(Qm_s|_P}+p5toeL z(dG`lBD=GeOw#UwRLAUB-;(k0=tq4TYJopL&;pZqcEAoi~4nu(bd53mH>ak)>aPd5SGGxXX3EwFl?8W7V7ncDcyl^4i$tG7dB< z&H-Z*drNf-VQ_Bj3YYqTj*H_f2jZQsx&u*4dxpk=_62OgfsNV+n5<+h#^U!zqV_;JqLSzfNg#o9ma;#L=w#s;`Cz${C^o9@Hc0yX<@*};>DLRYfluoKNudkd(uQ! z7}f+fmsTXe>BkD{z1T`G>`wNlkUcSy1?d-tdQ)2hicbo*`-TTw!jhD9Ei)68IhAKg z#w?+1f#z3q;=X4bOb8hZ=Zg9U6s|mMaC9nM4%R3}>xYJg*6Qk6X=r_fj4`>TOXeR!CkUFfST;yM z4I;877*CKZd$3?f8tXWz73w33i%5x=Q{5HPBMpfi2@KOC+hsCHA86NR$hdDs&`Eka zy^5aF7Li6>x@KBh0io#+j<1ws>uAWm#uRydSQKeXoGZL2WJZUvt5yoV5_w=HZTqR@ zHA>tVD)H_9lJ0>ihmqQokk9hq673Tn+^X29^sI{Ht$px>NP08ojgoPaTqYjc*0#?m z$aH!w2lB={Qu6N$gRld0Cad2OzQ*T8Q}BYaVfRl@n^V)%#$&pVp_V`j0((?}@Wm7e zFbqe7(D&Mlx@oxC04GQaA zeKdu%B$Gd#X7U7&n=6;j>WmC8D4*w*QWXdB++R{aK2N`e+$5+ZM%RMI&#f zy6aDr+*>)dq|hP3VMIB?Cam=?f0Y#22iPJi@%zIB)-cvsh@$gozK6h~yl6yEbz6G( zmci}(T-3WyPoA?8=|U)tjHKxRIb_zf+(=MTktK?P(4mYnRl*}u zY(_iv{xrzno5BfX=yt2svCY5BqF4awcvMtlw`%hg{WGlg7WP4~m z6IHOtz9f;ay%-uGnTv5oM_y_%Ldsk3zYa{AAgF_o41$;5+Kci;3Y*PYJcxq`Yb?dH zsm6tt;v;G)SyJvd3O4iu(%-V%0l7d9Hzdn(gaP!L$ zyfK+>t}43=9~HEpN;T_`Ct-KJ`e1B#$zd6u#x)St5b~Ac2+{gi2uWI6mEl=hM$)|^ zD@_?+8$J%l6YQ~nfRz}EJ@(UTbrkkAdko}MTa%oABSjY}a;hnE!bi2%Ur9A9L{6Ws z#N;H0?L$uTmEz>2^{)_;B&SafL{7=w3NzP?H&<3Nh%4a}9ACL#cL|Pz_@)%~{jh-* z6YC!ji&%SV?bX^SBO&^L%vLGQm*}_vZ7f5PXu*P_v4RiEo|xk<`eGKH3OtaUA0TcZ zo#-NQgPAyPuzgoAehD;JXM$K$&#gVTl#gw@_l4i z%4B2Y)QE#`iJs2KUC9mR(C^YNv)e^?iC33b4k(xLfptzp6LCLC;Wp{E-K=x708*}I z=5K1zwryR9NA$&CiPud6#$@M_b>X=1G;h(TDHlV|Gy6w1(H|S;L~o6^rgRD@Jdwmk z)N*!A0FM>$_YV{Jgx@OHuef5<7C(n+J;s$x%B_Pb=?Eop;|#e}EXE23PQ^LtNs@In zah7tnl8h-?n5PL-0y*+kEaaQ8bEb2OX>UK9Jq>MD9!sst(3tY6RLA`d8W95el442; z7-LH8zOdW?UGNPZ$8QBzE)EkbcjOX);yQ`O;=G})K_+i3ixBq<77m(MeaC7bg9)VT zB9k4Ba@LdSHidvDzoLR02;Uex>}sb>ADQ+RJ*`(~^% z&`(!=8ya55m|f3%dYae;!zpZD-AMCz?cZ)N zV&eJ6u!!f|S-97T=PyJ6@5x5e0y+;@2x`G;6Gu5XYy(3}+iB1YDJl^{mKLkL0Rw3* zW9|`Sa(em+ryV|oxZ&eo`(Vg&4^cn{=JK*;!r@>H%E}ml=Uz!|(MhX5k*5h~iutGs z4@(+yJSK#lIbE~8k)q_3X3L99{^wM)LYnQ3dpFDdU^y()Y+DUrUeitT$86n{a0$+5 zy99WwnDu)D!74OT9;}bvI7Min^`B{`Ln=1wGJjKZ-ZiogXEkrmTR^V;fKG(6M;KX4 z2`j!Sz}`I&V8SHI18jzP=Z%m3%|hJMZw86P)B6$V>D3NioH!>9Jvgok*=rGr-!0n??)D2GWFiq44>OsR^Z|US9aTnrc=^>V5agSnA1P znbgbPjghZN*|#=AwEh)Bl9t7r>G1h#OJON#Xe2}E!Ac(+qgczFOqzg&;7bcP0FY+n z9@h>g{C_oPE@5DBUju~>#o+!cMYW2m6q}ttjD+Fo={jvx{X|@8LAQvg4jSLd5++Qy z8sMN3O8OxMfQsHxdTXYgGLw8vHqEMBB$#G1Dt4xiJD?@Tl5AnQv3f}%S$7GTgb9e# zqzN;SY_jBgm(CjeU9u7BfC&u87S$Bv)zrv1q#-h+3qP9@D=BGISDShGsFcYsq?#3y zMw^kED{}JWuuK}=*=HHGF=ZPmo>HLZ3C>>{DyV%3svoEcC4U3j@Ye>Kj8Nivc;7su zTfVE%n}9iC`4$O=|BGQlx++0#0AP!l>E9YAu=4{;hqr=q-W=u>_pKIPh3AlENVg zcW_+C#0BWDSA@e-c?BEQ%(^O<)q#Y<@5dI!L11hs7R6SjdDLta5~69D08m=s=>syC zKxy|9;w&W(mB`c)gBjV%pnZFmDnJGX>08x~IZC`;@;th>uU;fc;6rhez#$CAst?g% zsgg@%tRxP{7br(1sdocMP?Y%SAWXp05B7aFwi+H0jbSy!=?CX`!Wum1#05;`Y5a^> z)M^TaAxEX$SP?g>7t2Cy?1_b%AUHh|5}OG46ybP$w)&)bR92rE;zEI_tANkycRVs^%$I_QRv6K1d` zOvdaT4Lh$lPHk2vuOzeHtL^DVl$SqXZpm2N3LLGpBDg*EX zWL5ZXb*gp?#eyPfC{~46*hsuC0cEDi>h&-^;eAA%u2S%0`bsBAYxoyV0G9D;5fsM3cO(1wI7M>SxOyKUX0G`b*?k1 zm7r#-M**d2`gPQGQD=!M6;I~Pd!Q#@^4F?yP-%y906kQEuX$Z?3Q;bVHvxSkBM61z zsbW2%Ig)xgICMgZjQqMqOhm5&5bSR8(-D@7V2A;}rbe}{PqpP?v5Dd-MBi$n7!}N; zkB*{9WO%{CqdO6(5IlukXhgARpPI2?9fF&#n5fa4vN2cIDE0i#x)4f#h}K0h;p+o4 z;d|F$!V8=UD$=Vmv5T7=ZQ+iU-rUZeR(kF(p?!%qnzZ~WS!?%SJ z)oMv>7dK9|rP6dcYIlS2L!=_2B9*Ff&r4D_{|qRTC%Z(I>al2-iwrW{(XzVu);{>R zsDDZJTn8+N$XG{GT-Hx~HrVRK_~eXdmh&%e{PuR+sM3 z*?(%`Kf=Gev-uZdz0>#aMB_DFx>8||Fv2g|Z9LI7}OebG3ALA44qQhHBqigvL#AwEsAsc|z? zHYjRgGnOvv(VKu>F7WvPilmKWL<@7{!pe9UD_Ayt-&~%2aen@2dB&JOI?w(-K!4{S zq`wa=uqTJu=VRgs|Q#Q4`{6pvo~>}6ZJetfBBn-Sw9O$$`_}`r85G^ z6f{R>j6*ZV+>CK}#?U|GE1u*3c!Q!u|?)2@}RKHm9S9X$A|_gK><_Y@YSAz_G>NJj#1uJs+B<`3V+z2mOS+ zw*mdJ7`kIyVKLPF9vCNA06n^E3kjfG(O*_2@8%ECIA8EIx1ycK->f$-YWC&zxE(+A z>2Vi+PD+@YlM-fgUkRf@pd^fnnMT)T5f>R0NLo;-{biBZM>e5&kJaduQ3%QIvW_-0 z+jLJdWx!l@_eo2u*@F%F&<(^ zoJG!A-fE!PII=|yX#SRIk;vF{15H50M)M}{Vdg4t%$g~yCXIo$Lv9+piZrt{-D*>& zsVl$e_<62hu35epOis3;HKwMqnEL(n1@@f+T!DU!DI6-gQdYTY%FBom==<0SJw^&K>x z&vS@n{J{UCvo`D<=`-i1JhL4ioEJ4$#FivaQI^pu_|>sxp+{K(f)sRRO%8|~`UGPk z@=G`UvGT|`rWCMfE(LcM5eddFpl7tjW)59vi1TYy7&*)oc)yTh{FK1UON9Pxs#zg{ z=f4^YJUOfoczKxD1fFaW3%o@7?G~(%~b6DNQGXL9H^r6W7SN|cC`F|pa=mupz>y69&Z|3zl zu*|6;xPu>^}xe?8U+TSQ}MggC(>`nT9A!Nv*g?{)ov$8gp0M5HgQx}aE~ zPR#_VN(cebMZXC1!sl@5iXPfm=^!9o;}`hGR}$c+P8@n#rc+7SKO1$Yr})7EO;K{5>6Hl_WjE9`n+Ne*)7<^R>$DT26VAcCNy zp0EG!{seIi#TDC7z^f@%6l7d|VKu`3Y!UgUv$`CuPM2C+lLwY&jHOEm`7B*RBnXB( zed-*T0!_fmx{AU0;>Olf^f!hMgJv|`n?hMKIDcy5)h0}YFQ_Gv zz%i?BUj~ZQQ1Vr2t|`%*mk^x-hVW&$AR_!yOMf;q_5uBAW&4KX_P;?;qX&Z zU@Toi6nW{=5v23+&BcL2P^iZYg~2o&+vh~YM|gU%TX&WAHCdt_%lCmFXQ1c4 zJT*tpE8QL4>Jbv=+CQvo6G}6}A4cg);u3nFB z_$v8x$~de@%WV>hwIiH5QXeSnJh?Q*e7se$z78o1#QVqrOvU`vqd4xT9?94rZ%8IB z%uvSrRf_fE>Z;Bo;|LpK_#6n2#46`Uejc$V`yz;ZD4OgWF4JVcDwyU5H5u!T%d=n3 z>v3RBc2`o9jrP@K8U%{wHBI)WDBqA5JDZ-~kf>!M>6;EI#_kXT{)yp#M-TBY~=E<2b!nQ*Lh2_Cmp%ev~~Y^ zCG3nMsq}ls28efvOQBBX!EL=YjHI-18X0SAVGVR8k=CPy?CYrY*HbEi)ZKyTS*UGA`>z`aU>j=_|kRWlERzp>UH)tQ;7iZM?N;P;4l{klJBwHq_>z7Ir;sc#-AX2AA3O?PV6-tOQ7DL%u8> z%;5QXY&|QqgcY`gWT95r!x;k~@EqGA@&P{J0Ss8g(WINR!K1{2AOt-OMG)*88=;WM z%Xw`3gMl(~SZ`bqwDWo#SP&RVL9o5AAkZLC^r8uZPl$pRXMHL%$qwW2RA`ETBk?BY zXi6uXj5j~kj+i)yP^G0uXm*Mn5TZ*(sjwIIaQgWZbPA%10~g62W9h)oB{7Og#V|gT z;_{SmP`kdH6Gb9Emugl>INUpjh388phh@UyRpaePjS?6VwBiCoo0lSh41qD3@hqA6 zvPI)-_BrOhF9YF2;l71)jQf5gk5>lcKGqvw(l5n5W=%6A!)%q5ViWFd)72rr)6_e2@t~>;zAgMP*G_S%cz4oj`rm>dMJl0yq9pxsj+wGIm z%rW@K7&$#$qT8_+?&_^zI}MrAZ17n=c$`j%+qn8epXe@;550r+UG27U`YMrsEbsvN z`t^7{lFS+HVEM}eE%}Lxdd{_YIfh&z90RF^PwLj@z+(5_q}WAzd%sj`HC4rRO6;C@ zkU>2?ZBZ$q$N34D0OjeK_maI;#g9oW(5~b>b|6T0b|@TNT*6YSkP0!=F*p@y!hto~ z596opOs7TX>M)XTq1JG{TeGlDyok+CW1&1hPc2`30!E?(rykiw?!`$v3_HO?v$Km% zXm_h+NdMW#paGt>mjkC3%$|Pwgl`6|ZZL~mxT~`*w6*-%x>uV$3#zZ;*7jglB-01T z&J4?)dIP5>PFj|WXjre=GeX3-$WesHAN^>oTI8@ywfx$TJMU~8(n8N|Bv2}njL0{;tdyC8v^p(M<+l|{%PXCbmpC7xI!iF0OrLBU=91IdLZ0I!0ya{k4%kXz z^Q(gp2us&{^t5eRIB+LqgCblG()b+3#1p>QTc1HbD~T)&HegIRT*z(x*U zJgP|P(@GsJdaQ&ADmm2aU_=b z@-Huq<&9LcLh|o*J4T8emdU?8JX1%ZK@+s{MJbhVKkhbh>{&Y{9o?LPILX7Azp2Ij zUjt3$ujp;0QszwM$>A-Qf-sE(C1Uf^{WS10Wr-QPltIn8?1UvArS|;AS;qC&EL3V2 zwOwYp5)G~TtPEvCbHi(`q3#Q99%qo59kyJqHtELhO?sL4i5*F=P;+Q1((TwFh$J;^ z_&93aZcEKJpGn|$Z8%)g1^a>`UAY{L3llZejDp6N@e=9E3g6N3s!i3^vNes>Z2_YCqA|{f{C;2S>Sh2+u z1Hml>ZXVo!R};8Dl+>c>vi^9yJ%_9$LUVstnEmiDF?*m8Ijh0bvs+taXlt4!GNMa2 zpr!b!63(UNw0J1@QBi&hhnkAIuznS_HaK#bH+B%UT-Q?b%$FWeP8$o9)J(spWRqNl z)tX8EB8Ab~WTthi$V@eh?w7u2=}3u0HuDQh#Etk`w@Or)t0etGRV5hb(oj*)fkGgM zGH#gXP_8;vru;qWzG^V-m7NDAN);&`I>Mdh$!G#QSqn{bsp2f+zyx-eCQu#A)*i6f zSfn~&xh4kdAbGCs^uB|9L)PAsRUAY2_@hx#c*mZJZh?Yp2QKpjE3gEa&P5@d$!H|> zLeuR%g$ft)9jlJ7U0UEx(S#_;CyV%;iFV2-#2&pf(RS!)IxQFUqP^I@z`YJ`P(~gF zba=boi$-5ycm2k8KZ^&Rv3H+|#)O&b`RHW~``zTcwmSH-!}mOF{P|YHS?WcbW_!^N zK9vf_yo?vd#n-Oy;@hs!t5xVG3HlXajG%;|zub%VHP8)GCoS#APei){D1X#gsw`39 zsrQL!B0yoo4ypyUT4)%c!#nvCx&2ZhVye`T1B4QTG@fV>KiCQD8kL(WF7i2n%FWTZ zZMyN-5n5MRHMEP<4dhEB(Ma8@b{Em##8uO81A}-2J31{q86$hdqA3x4tkzP+La9;O z*y%-M-LO%5uoO7>d{^?v3cClkf-F&NGy1?jfm*{}>TbRvsP!_!dg(=Xr+!Iw(fn7C zIne~~SHU1#-t1E4MFh162cEpZ;&!NL$*80jR<1aK6Ec$BUBR{+qAeCCBB0zR*#s=N z6O+MyV4LwAI^88+t27+=XuXTQ=r;OUh zgy`Zj?yz@y&%tP-V|6Ov5(+25x5FSi=?Uc@SBN#DJEZc%_xZIn+yQF zi6kY2f53sL5QgWa_skszJ}3M}E!90eQQf~+c2CJFM6#DHzwB6HgN;FZnWVEZ*chTx z;G%kH_nz7w-3^*-Rbu9hCxCP+qLAy+o?sb8)s`wY?lW}hPQzZb)%A$#JEgAlWTO8Px*ts)%*DG2z zn64_D<7mc{JEFY`DqN=w&noCOci`vP71?w|j*U<8z<1>hoY7y-(A{WXV)kt$6Xam3 zIfmgfLA?_{bZJQ%vUxO0dI{)V=|$Vw+a`M2rM&%teO{w)2uh5qcNKOd(* zuhO5tvl)N>7X5j13;z5k`tyD&h;@wq+=SHc=J!z|p!u6{*qXmie?Ci{eg=QK(HMuj9sY>exy|Ld&p>#X1Ftk3JLzw2H59_W7tu)UK(YnK?PcALX_ zI|0k!{CWDs;QTy+&ETY~8#tU)O@PBm8ww20CfRJ=XqV383}L%!4kQJUK9I-Vr}$tiD5pF(6tN eNjr?!NhJ#HLAG8rPN`0n!0p1;LJh-e`Tqh(g~@#Y literal 0 HcmV?d00001 diff --git a/doc/LectureNotes/_build/.doctrees/exercisesweek36.doctree b/doc/LectureNotes/_build/.doctrees/exercisesweek36.doctree new file mode 100644 index 0000000000000000000000000000000000000000..4c09c2dc8735d54142c3b8314de53cf230622b0c GIT binary patch literal 28419 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 Yu^J$w4Tqd!0Wa^{br?<94P40mKi!XHmjD0& literal 0 HcmV?d00001 diff --git a/doc/LectureNotes/_build/.doctrees/intro.doctree b/doc/LectureNotes/_build/.doctrees/intro.doctree index 32f449485d6ece06b2d7967d8a833b293a547224..0b4af0db79f66793bac2d86adc66ce72032541b6 100644 GIT binary patch delta 216 zcmbREnCa+aCYA=)sk=6^+*=yNpIVVxl$=?dT3nu*nr&<{rEQ8|4;vC2O@S$r0tg#T zf!So%WeQAL*Cu~lATrr(nGWO4$qVO8O|D($4Plf%|2F(yq~Coy^AIt8HMrgf$){@e@(OMx^%;!MC(l}M$M|UT&GkDN0b{pUFaQ7m delta 165 zcmX^5m}%l;CYA=)scjos?k!bjay6XNHpQ=ptvod~+t>umW^y$`5;L7_vP@y}mj!~8 zvzF;FUZ1>hzSQK6%e;ZC4fCWY|E=KKth8K&nNeu7`Kmw6i~*C^u9KMTvrdlDZ*n$} z^q<_dPKhxAC~5%|dA81!(RZ@UdI`q($)@YI*q(ARFl0TLoVq@P@#*Aq>+KjHZ06mt GgAoAUdP8IY diff --git a/doc/LectureNotes/_build/html/_images/cb756715680fbe8cbf1d070371bf3950695ddf24b29ecb476c48fb9e559af08e.png b/doc/LectureNotes/_build/html/_images/cb756715680fbe8cbf1d070371bf3950695ddf24b29ecb476c48fb9e559af08e.png new file mode 100644 index 0000000000000000000000000000000000000000..a16a30cd2fac21eb16932d7c59f2c5cda784fe52 GIT binary patch literal 24495 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 literal 0 HcmV?d00001 diff --git a/doc/LectureNotes/_build/html/_sources/exercisesweek34.ipynb b/doc/LectureNotes/_build/html/_sources/exercisesweek34.ipynb new file mode 100644 index 000000000..50e773ede --- /dev/null +++ b/doc/LectureNotes/_build/html/_sources/exercisesweek34.ipynb @@ -0,0 +1,315 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "232d1306", + "metadata": {}, + "source": [ + "# Exercises week 34\n", + "\n", + "## Coding Setup and Linear Regression" + ] + }, + { + "cell_type": "markdown", + "id": "9b66a351", + "metadata": {}, + "source": [ + "Welcome to FYS-STK3155/4155!\n", + "\n", + "In this first week will focus on getting you set up with the programs you are going to be using throughout this course. We expect that many of you will encounter some trouble with setting these programs up, as they can be extremely finnicky and prone to not working the same on all machines, so we strongly encourage you to not get discouraged, and to show up to the group-sessions where we can help you along. The group sessions are also the best place to find group partners for the projects and to be challenged on your understanding of the material, which are both essential to doing well in this course. We strongly encourage you to form groups of 2-3 participants. \n", + "\n", + "If you are unable to complete this week's exercises, don't worry, this will likely be the most frustrating week for many of you. You have time to get back on track next week, especially if you come to the group-sessions! Note also that this week's set of exercises does not count for the additional score. The deadline for the weekly exercises is set to Fridays, at midnight." + ] + }, + { + "cell_type": "markdown", + "id": "36d8750b", + "metadata": {}, + "source": [ + "### Learning goals\n", + "\n", + "After completing these exercises, you will know how to\n", + "\n", + "- Create and use a Github repository\n", + "- Set up and use a virtual environment in Python\n", + "- Fit an OLS model to data using scikit-learn\n", + "- Fit a model on training data and evaluate it on test data\n", + "\n", + "### Deliverables\n", + "\n", + "Complete the following exercises while working in a jupyter notebook. Exercises 1,2 and 3 require no writing in the notebook. Then, in canvas, include\n", + "- The jupyter notebook with the exercises completed\n", + "- An exported PDF of the notebook (https://code.visualstudio.com/docs/datascience/jupyter-notebooks#_export-your-jupyter-notebook)\n", + "- Optional: A link to your github repository, which must be set to public, include the notebook file, a README file, requirements file and gitignore file.\n", + "\n", + "We require you to deliver a jupyter notebook so that we can evaluate the results of your code without needing to download and run the code of every student, as well as to teach you to use this useful tool." + ] + }, + { + "cell_type": "markdown", + "id": "2a9c7ef8", + "metadata": {}, + "source": [ + "## Exercise 1 - Github Setup\n" + ] + }, + { + "cell_type": "markdown", + "id": "1498aed1", + "metadata": {}, + "source": [ + "In this course, we require you to pay extra mind to the reproducibility of your results and the shareability of your code. The first step toward these goals is using a version control system like git and online repository like Github.\n", + "\n", + "**a)** Download git if you don't already have it on your machine, check with the terminal command ´git --version´ (https://git-scm.com/downloads).\n", + "\n", + "**b)** Create a Github account(https://github.com/), or log in to github with your UiO account (https://github.uio.no/login).\n", + "\n", + "**c)** Learn the basics of opening the terminal and navigating folders on your operating system. Things to learn: Opening a terminal, opening a terminal in a specific folder, listing the contents of the current folder, navigating into a folder, navigating out of a folder.\n", + "\n", + "**d)** Download the Github CLI tool and run ´gh auth login´ in your terminal to authenticate your local machine for some of the later steps. (https://github.com/cli/cli#installation). You might need to change file permissions to make it work, ask us or ChatGPT for help with these issues.\n", + "\n", + "**e)** As an alternative to the above terminal based instructions, you could install GitHub Desktop (see https://desktop.github.com/download/) or if you prefer GitLab, GitLab desktop (see https://about.gitlab.com/install/). This sets up all communications between your PC/Laptop and the repository. This allows you to combine exercises 1 and 2 in an easy way if you don't want to use terminarl. Keep in mind that these GUIs (graphical user interfaces) are not text editors." + ] + }, + { + "cell_type": "markdown", + "id": "c56fbefa", + "metadata": {}, + "source": [ + "## Exercise 2 - Setting up a Github repository\n" + ] + }, + { + "cell_type": "markdown", + "id": "fb9b8acd", + "metadata": { + "vscode": { + "languageId": "plaintext" + } + }, + "source": [ + "**a)** Create an empty repository for your coursework in this course in your browser at github.com (or uio github).\n", + "\n", + "**b)** Open a terminal in the location you want to create your local folder for this repository, like your desktop.\n", + "\n", + "**c)** Clone the repository to your laptop using the terminal command ´gh repo clone username/repository-name´. This creates a folder with the same name as the repository. Moving it or renaming it might require some extra steps.\n", + "\n", + "**d)** Download this jupyter notebook. Add the notebook to the local folder.\n", + "\n", + "**e)** Run the ´git add .´ command command in a terminal opened in the local folder to stage the current changes in the folder to be commited to the version control history. Run ´git status´ to see the staged files.\n", + "\n", + "**f)** Run the ´git commit -m \"Adding first weekly assignment file\"´ command to commit the staged changes to the version control history. Run ´git status´ to see that no files are staged.\n", + "\n", + "**g)** Run the ´git push\" command to upload the commited changes to the remote repository on Github.\n", + "\n", + "**h)** Add a file called README.txt to the repository at Github.com. Don't do this in your local folder. Add a suitable title for your repository and some inforomation to the file.\n", + "\n", + "**i)** Run the ´git fetch origin´ command to fetch the latest remote changes to your repository.\n", + "\n", + "**j)** Run the ´git pull´ command to download and update files to match the remote changes.\n" + ] + }, + { + "cell_type": "markdown", + "id": "f84d0db6", + "metadata": {}, + "source": [ + "## Exercise 3 - Setting up a Python virtual environment\n" + ] + }, + { + "cell_type": "markdown", + "id": "b5a4818a", + "metadata": {}, + "source": [ + "Following the themes from the previous exercises, another way of improving the reproducibility of your results and shareability of your code is having a good handle on which python packages you are using.\n", + "\n", + "There are many ways to manage your packages in Python, and you are free to use any approach you want, but in this course we encourage you to use something called a virtual environment. A virtual environemnt is a folder in your project which contains a Python runtime executable as well as all the packages you are using in the current project. In this way, each of your projects has its required set of packages installed in the same folder, so that if anything goes wrong while managing your packages it only affects the one project, and if multiple projects require different versions of the same package, you don't need to worry about messing up old projects. Also, it's easy to just delete the folder and start over if anything goes wrong.\n", + "\n", + "Virtual environments are typically created, activated, managed and updated using terminal commands, but for now we recommend that you let for example VS Code (a popular cross-paltform package) handle it for you to make the coding experience much easier. If you are familiar with another approach for virtual environments that works for you, feel free to keep doing it that way.\n" + ] + }, + { + "cell_type": "markdown", + "id": "0f6de364", + "metadata": {}, + "source": [ + "**a)** Open this notebook in VS Code (https://code.visualstudio.com/Download). Download the Python and Jupyter extensions.\n", + "\n", + "**b)** Press ´Cmd + Shift + P´, then search and run ´Python: Create Environment...´\n", + "\n", + "**c)** Select ´Venv´\n", + "\n", + "**d)** Choose the most up-to-date version of Python your have installed.\n", + "\n", + "**e)** Press ´Cmd + Shift + P´, then search and run ´Python: Select Interpreter´\n", + "\n", + "**f)** Selevet the (.venv) option you just created.\n", + "\n", + "**g)** Open a terminal in VS Code, the venv name should be visible at the beginning of the line. Run `pip list` to see that there are no packages install in the environment.\n", + "\n", + "**h)** In this terminal, run `pip install matplotlib numpy scikit-learn`. This will install the listed packages.\n", + "\n", + "**i)** To make these installations reproducible, which is important for reproducing results and sharing your code, run ´pip freeze > requirements.txt´ to create the file requirements.txt with all your dependencies.\n", + "\n", + "Now, anyone who wants to recreate your package setup can download your requirements.txt file and run ´pip install -r requirements.txt´ to install the correct packages and versions. To keep the requirements.txt file up to date with your environment, you will need to re-run the freeze command whenever you install a new package.\n", + "\n", + "**j)** Create a .gitignore file at the root of your project folder, and add the line ´.venv´ to it. This way, you won't try to upload a copy of all your python packages when you regularly push your changes to Github. Ignored files should not show up when you run ´git status´, and are not staged when running ´git add .´, try it!" + ] + }, + { + "cell_type": "markdown", + "id": "5d184ab1", + "metadata": {}, + "source": [ + "## Exercise 3 - Fitting an OLS model to data\n" + ] + }, + { + "cell_type": "markdown", + "id": "d19ebd67", + "metadata": {}, + "source": [ + "Great job on getting through all of that! Now it is time to do some actual machine learning!\n", + "\n", + "**a)** Complete the code below so that you fit a second order polynomial to the data. You will need to look up some scikit-learn documentation online (look at the imported functions for hints).\n", + "\n", + "**b)** Compute the mean square error for the line model and for the second degree polynomial model." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "b58fb9bf", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from sklearn.preprocessing import PolynomialFeatures # use the fit_transform method of the created object!\n", + "from sklearn.linear_model import LinearRegression\n", + "from sklearn.metrics import mean_squared_error" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "0208e9ca", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "

" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "n = 100\n", + "x = np.random.rand(n, 1)\n", + "y = 2.0 + 5 * x**2 + 0.1 * np.random.randn(n, 1)\n", + "\n", + "line_model = LinearRegression().fit(x, y)\n", + "line_predict = line_model.predict(x)\n", + "#line_mse = ...\n", + "\n", + "#poly_features = ...\n", + "#poly_model = LinearRegression().fit(..., y)\n", + "#poly_predict = ...\n", + "#poly_mse = ...\n", + "\n", + "plt.scatter(x, y, label = \"Data\")\n", + "plt.scatter(x, line_predict, label = \"Line model\")\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "248d8931", + "metadata": {}, + "source": [ + "## Exercise 4 - The train-test split\n" + ] + }, + { + "cell_type": "markdown", + "id": "1efd3376", + "metadata": {}, + "source": [ + "Hopefully your model fit the data quite well, but to know how well the model actually generalizes to unseen data, which is most often what we care about, we need to split our data into training and testing data. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0f8d75fb", + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.model_selection import train_test_split" + ] + }, + { + "cell_type": "markdown", + "id": "edb213fc", + "metadata": {}, + "source": [ + "**a)** Complete the code below so that the polynomial features and the targets y get split into training and test data.\n", + "\n", + "**b)** What is the shape of X_test?\n", + "\n", + "**c)** Fit your model to X_train\n", + "\n", + "**d)** Compute the MSE when your model predicts on the training data and on the testing data, using y_train and y_test as targets for the two cases.\n", + "\n", + "**e)** Why do we not fit the model to X_test?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a03e0388", + "metadata": {}, + "outputs": [], + "source": [ + "polynomial_features = ...\n", + "\n", + "#X_train, X_test, y_train, y_test = train_test_split(polynomial_features, y, test_size=0.2)\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "22e7536e", + "metadata": {}, + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.15" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/doc/LectureNotes/_build/html/_sources/exercisesweek35.ipynb b/doc/LectureNotes/_build/html/_sources/exercisesweek35.ipynb new file mode 100644 index 000000000..8ce6a6c3d --- /dev/null +++ b/doc/LectureNotes/_build/html/_sources/exercisesweek35.ipynb @@ -0,0 +1,539 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "b4005770", + "metadata": {}, + "source": [ + "# Exercises week 35\n", + "\n", + "## Deriving and Implementing Ordinary Least Squares" + ] + }, + { + "cell_type": "markdown", + "id": "2ca1b589", + "metadata": {}, + "source": [ + "This week you will be deriving the analytical expressions for linear regression, building up the model from scratch. This will include taking several derivatives of products of vectors and matrices. Such derivatives are central to the optimization of many machine learning models. Although we will often use automatic differentiation in actual calculations, to be able to have analytical expressions is extremely helpful in case we have simpler derivatives as well as when we analyze various properties (like second derivatives) of the chosen cost functions.\n", + "\n", + "Vectors are always written as boldfaced lower case letters and matrices as upper case boldfaced letters. You will find useful the notes from week 35 on derivatives of vectors and matrices. See also the textbook of Faisal at al, chapter 5 and in particular sections 5.3-5.5 at " + ] + }, + { + "cell_type": "markdown", + "id": "41e92bf9", + "metadata": {}, + "source": [ + "### Learning goals\n", + "\n", + "After completing these exercises, you will know how to\n", + "- Take the derivatives of simple products between vectors and matrices\n", + "- Implement OLS using the analytical expressions\n", + "- Create a feature matrix from a set of data\n", + "- Create a feature matrix for a polynomial model\n", + "- Evaluate the MSE score of various model on training and test data, and comparing their performance\n", + "\n", + "### Deliverables\n", + "\n", + "Complete the following exercises while working in a jupyter notebook. Then, in canvas, include\n", + "- The jupyter notebook with the exercises completed\n", + "- An exported PDF of the notebook (https://code.visualstudio.com/docs/datascience/jupyter-notebooks#_export-your-jupyter-notebook)" + ] + }, + { + "cell_type": "markdown", + "id": "f7a9209d", + "metadata": {}, + "source": [ + "## How to take derivatives of Matrix-Vector expressions" + ] + }, + { + "cell_type": "markdown", + "id": "45f3712e", + "metadata": {}, + "source": [ + "In these exercises it is always useful to write out with summation indices the various quantities. Take also a look at the weekly slides from week 35 and the various examples included there.\n", + "\n", + "As an example, consider the function\n", + "\n", + "$$\n", + "f(\\boldsymbol{x}) =\\boldsymbol{A}\\boldsymbol{x},\n", + "$$\n", + "\n", + "which reads for a specific component $f_i$ (we define the matrix $\\boldsymbol{A}$ to have dimension $n\\times n$ and the vector $\\boldsymbol{x}$ to have length $n$)\n", + "\n", + "$$\n", + "f_i =\\sum_{j=0}^{n-1}a_{ij}x_j,\n", + "$$\n", + "\n", + "which leads to\n", + "\n", + "$$\n", + "\\frac{\\partial f_i}{\\partial x_j}= a_{ij},\n", + "$$\n", + "\n", + "and written out in terms of the vector $\\boldsymbol{x}$ we have\n", + "\n", + "$$\n", + "\\frac{\\partial f(\\boldsymbol{x})}{\\partial \\boldsymbol{x}}= \\boldsymbol{A}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "5fa8a4e6", + "metadata": {}, + "source": [ + "## Exercise 1 - Finding the derivative of Matrix-Vector expressions" + ] + }, + { + "cell_type": "markdown", + "id": "df7a2270", + "metadata": {}, + "source": [ + "**a)** Consider the expression\n", + "\n", + "$$\n", + "\\frac{\\partial (\\boldsymbol{a}^T\\boldsymbol{x})}{\\partial \\boldsymbol{x}},\n", + "$$\n", + "\n", + "Where $\\boldsymbol{a}$ and $\\boldsymbol{x}$ are column-vectors with length $n$.\n", + "\n", + "What is the *shape* of the expression we are taking the derivative of?\n", + "\n", + "What is the *shape* of the thing we are taking the derivative with respect to?\n", + "\n", + "What is the *shape* of the result of the expression?" + ] + }, + { + "cell_type": "markdown", + "id": "c0396734", + "metadata": {}, + "source": [ + "**b)** Show that\n", + "\n", + "$$\n", + "\\frac{\\partial (\\boldsymbol{a}^T\\boldsymbol{x})}{\\partial \\boldsymbol{x}} = \\boldsymbol{a}^T,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "dc39d541", + "metadata": {}, + "source": [ + "**c)** Show that\n", + "\n", + "$$\n", + "\\frac{\\partial (\\boldsymbol{a}^T\\boldsymbol{A}\\boldsymbol{a})}{\\partial \\boldsymbol{a}} = \\boldsymbol{a}^T(\\boldsymbol{A}+\\boldsymbol{A}^T),\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "498d13ec", + "metadata": {}, + "source": [ + "## Exercise 2 - Deriving the expression for OLS" + ] + }, + { + "cell_type": "markdown", + "id": "f3f771de", + "metadata": {}, + "source": [ + "The ordinary least squares method finds the parameters $\\boldsymbol{\\theta}$ which minimizes the squared error between our model $\\boldsymbol{X\\theta}$ and the true values $\\boldsymbol{y}$.\n", + "\n", + "To find the parameters $\\boldsymbol{\\theta}$ which minimizes this error, we take the derivative of the squared error expression with respect to $\\boldsymbol{\\theta}$, and set it equal to 0." + ] + }, + { + "cell_type": "markdown", + "id": "49690237", + "metadata": {}, + "source": [ + "**a)** Very briefly explain why the approach above finds the parameters $\\boldsymbol{\\theta}$ which minimizes this error." + ] + }, + { + "cell_type": "markdown", + "id": "b7cccc9d", + "metadata": {}, + "source": [ + "We typically write the squared error as\n", + "\n", + "$$\n", + "\\vert\\vert\\boldsymbol{y} - \\boldsymbol{X\\theta}\\vert\\vert^2\n", + "$$\n", + "\n", + "which we can rewrite in matrix-vector form as\n", + "\n", + "$$\n", + "\\left(\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\theta}\\right)^T\\left(\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\theta}\\right)\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "8fbecf74", + "metadata": {}, + "source": [ + "**b)** If $\\boldsymbol{X}$ is invertible, what is the expression for the optimal parameters $\\boldsymbol{\\theta}$? (**Hint:** Don't compute any derivatives, but solve $\\boldsymbol{X\\theta}=\\boldsymbol{y}$ for $\\boldsymbol{\\theta}$)" + ] + }, + { + "cell_type": "markdown", + "id": "f37af8f0", + "metadata": {}, + "source": [ + "**c)** Show that\n", + "\n", + "$$\n", + "\\frac{\\partial \\left(\\boldsymbol{x}-\\boldsymbol{A}\\boldsymbol{s}\\right)^T\\left(\\boldsymbol{x}-\\boldsymbol{A}\\boldsymbol{s}\\right)}{\\partial \\boldsymbol{s}} = -2\\left(\\boldsymbol{x}-\\boldsymbol{A}\\boldsymbol{s}\\right)^T\\boldsymbol{A},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "869fca4d", + "metadata": {}, + "source": [ + "**d)** Using the expression from **c)**, but substituting back in $\\boldsymbol{\\theta}$, $\\boldsymbol{y}$ and $\\boldsymbol{X}$, find the expression for the optimal parameters $\\boldsymbol{\\theta}$ in the case that $\\boldsymbol{X}$ is not invertible, but $\\boldsymbol{X^T X}$ is, which is most often the case.\n", + "\n", + "$$\n", + "\\boldsymbol{\\hat{\\theta}_{OLS}} = ...\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "57ca3d74", + "metadata": {}, + "source": [ + "## Exercise 3 - Creating feature matrix and implementing OLS using the analytical expression" + ] + }, + { + "cell_type": "markdown", + "id": "5dc179f7", + "metadata": {}, + "source": [ + "With the expression for $\\boldsymbol{\\hat{\\theta}_{OLS}}$, you now have what you need to implement OLS regression with your input data and target data $\\boldsymbol{y}$. But before you can do that, you need to set up you input data as a feature matrix $\\boldsymbol{X}$.\n", + "\n", + "In a feature matrix, each row is a datapoint and each column is a feature of that data. If you want to predict someones spending based on their income and number of children, for instance, you would create a row for each person in your dataset, with the montly income and the number of children as columns.\n", + "\n", + "We typically also include an intercept in our models. The intercept is a value that is added to our prediction regardless of the value of the other features. The intercept tries to account for constant effects in our data that are not dependant on anything else. In our current example, the intercept could account for living expenses which are typical regardless of income or childcare expenses.\n", + "\n", + "We calculate the optimal intercept by including a feature with the constant value of 1 in our model, which is then multplied by some parameter $\\theta_0$ from the OLS method into the optimal intercept value (which will be $\\theta_0$). In practice, we include the intercept in our model by adding a column of ones to the start of our feature matrix." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "e5ff2a69", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "a3cf2792", + "metadata": {}, + "outputs": [], + "source": [ + "n = 20\n", + "income = np.array([116., 161., 167., 118., 172., 163., 179., 173., 162., 116., 101., 176., 178., 172., 143., 135., 160., 101., 149., 125.])\n", + "children = np.array([5, 3, 0, 4, 5, 3, 0, 4, 4, 3, 3, 5, 1, 0, 2, 3, 2, 1, 5, 4])\n", + "spending = np.array([152., 141., 102., 136., 161., 129., 99., 159., 160., 107., 98., 164., 121., 93., 112., 127., 117., 69., 156., 131.])\n" + ] + }, + { + "cell_type": "markdown", + "id": "5da61481", + "metadata": {}, + "source": [ + "**a)** Create a feature matrix $\\boldsymbol{X}$ for the features income and children, including an intercept column of ones at the start." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "5ad87a65", + "metadata": {}, + "outputs": [], + "source": [ + "X = np.zeros((n, 3))\n", + "#X[:, 0] = ...\n", + "#X[:, 1] = ...\n", + "#X[:, 2] = ..." + ] + }, + { + "cell_type": "markdown", + "id": "e0ddfac2", + "metadata": {}, + "source": [ + "**b)** Use the expression from **3d)** to find the optimal parameters $\\boldsymbol{\\hat{\\beta}_{OLS}}$ for predicting spending based on these features. Create a function for this operation, as you are going to need to use it a lot." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "8f3f68aa", + "metadata": {}, + "outputs": [], + "source": [ + "def OLS_parameters(X, y):\n", + " return ...\n", + "\n", + "#beta = OLS_parameters(X, y)" + ] + }, + { + "cell_type": "markdown", + "id": "0cb6da80", + "metadata": {}, + "source": [ + "## Exercise 4 - Fitting a polynomial" + ] + }, + { + "cell_type": "markdown", + "id": "71015064", + "metadata": {}, + "source": [ + "In this course, we typically do linear regression using polynomials, though in real world applications it is also very common to make linear models based on measured features like you did in the previous exercise.\n", + "\n", + "When fitting a polynomial with linear regression, we make each polynomial degree($x, x^2, x^3, ..., x^p$) its own feature." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "d7476c84", + "metadata": {}, + "outputs": [], + "source": [ + "n = 100\n", + "x = np.linspace(-3, 3, n)\n", + "y = np.exp(-x**2) + 1.5 * np.exp(-(x-2)**2) + np.random.normal(0, 0.1)" + ] + }, + { + "cell_type": "markdown", + "id": "8321451b", + "metadata": {}, + "source": [ + "**a)** Create a feature matrix $\\boldsymbol{X}$ for the features $x, x^2, x^3, x^4, x^5$, including an intercept column of ones at the start. Make this into a function, as you will do this a lot over the next weeks." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "91496e40", + "metadata": {}, + "outputs": [], + "source": [ + "def polynomial_features(x, p):\n", + " n = len(x)\n", + " X = np.zeros((n, p + 1))\n", + " #X[:, 0] = ...\n", + " #X[:, 1] = ...\n", + " #X[:, 2] = ...\n", + " # could this be a loop?\n", + "\n", + "#X = polynomial_features(x, 5)" + ] + }, + { + "cell_type": "markdown", + "id": "b84b1e31", + "metadata": {}, + "source": [ + "**b)** Use the expression from **3d)** to find the optimal parameters $\\boldsymbol{\\hat{\\beta}_{OLS}}$ for predicting $\\boldsymbol{y}$ based on these features. If you have done everything right so far, this code will not need changing." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "034f502c", + "metadata": {}, + "outputs": [], + "source": [ + "#beta = OLS_parameters(X, y)" + ] + }, + { + "cell_type": "markdown", + "id": "d703f788", + "metadata": {}, + "source": [ + "**c)** Like in exercise 4 last week, split your feature matrix and target data into a training split and test split." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "29171358", + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.model_selection import train_test_split\n", + "\n", + "#X_train, X_test, y_train, y_test = ..." + ] + }, + { + "cell_type": "markdown", + "id": "a0e3509f", + "metadata": {}, + "source": [ + "**d)** Train your model on the training data(find the parameters which best fit) and compute the MSE on both the training and test data." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "1e346f4c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Ellipsis" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "..." + ] + }, + { + "cell_type": "markdown", + "id": "7e431889", + "metadata": {}, + "source": [ + "**e)** Do the same for each polynomial degree from 2 to 10, and plot the MSE on both the training and test data as a function of polynomial degree. The aim is to reproduce Figure 2.11 of [Hastie et al](https://github.com/CompPhysics/MLErasmus/blob/master/doc/Textbooks/elementsstat.pdf). Feel free to read the discussions leading to figure 2.11 of Hastie et al. " + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "ceb57457", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Ellipsis" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "..." + ] + }, + { + "cell_type": "markdown", + "id": "5e5b5954", + "metadata": {}, + "source": [ + "**f)** Interpret the graph. Why do the lines move as they do? What does it tell us about model performance and generalizability?" + ] + }, + { + "cell_type": "markdown", + "id": "ad2acfb9", + "metadata": {}, + "source": [] + }, + { + "cell_type": "markdown", + "id": "5994f0c5", + "metadata": {}, + "source": [ + "## Exercise 5 - Comparing your code with sklearn" + ] + }, + { + "cell_type": "markdown", + "id": "8f595b7a", + "metadata": {}, + "source": [ + "When implementing different algorithms for the first time, it can be helpful to double check your results with established implementations before you go on to add more complexity." + ] + }, + { + "cell_type": "markdown", + "id": "8ab310c1", + "metadata": {}, + "source": [ + "**a)** Make sure your `polynomial_features` function creates the same feature matrix as sklearns PolynomialFeatures.\n", + "\n", + "(https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.PolynomialFeatures.html)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "85b964d1", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "73c32c52", + "metadata": {}, + "source": [ + "**b)** Make sure your `OLS_parameters` function computes the same parameters as sklearns LinearRegression with fit_intercept set to False, since the intercept is included in the feature matrix. Use `your_model_object.coef_` to extract the computed parameters.\n", + "\n", + "(https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "35b04126", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.15" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/doc/LectureNotes/_build/html/_sources/exercisesweek36.ipynb b/doc/LectureNotes/_build/html/_sources/exercisesweek36.ipynb new file mode 100644 index 000000000..e3365bb50 --- /dev/null +++ b/doc/LectureNotes/_build/html/_sources/exercisesweek36.ipynb @@ -0,0 +1,383 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "9dd8f8d0", + "metadata": {}, + "source": [ + "# Weekly Exercises 3\n", + "\n", + "## Deriving and Implementing Ridge Regression" + ] + }, + { + "cell_type": "markdown", + "id": "e5cc5739", + "metadata": {}, + "source": [ + "## Learning goals\n", + "\n", + "After completing these exercises, you will know how to\n", + "- Take more derivatives of simple products between vectors and matrices\n", + "- Implement Ridge regression using the analytical expressions\n", + "- Scale data appropriately for linear regression\n", + "- Evaluate a model across two different hyperparameters" + ] + }, + { + "cell_type": "markdown", + "id": "427d9b9d", + "metadata": {}, + "source": [ + "## Exercise 1 - Choice of model and degrees of freedom" + ] + }, + { + "cell_type": "markdown", + "id": "ff6ebdb5", + "metadata": {}, + "source": [ + "**a)** How many degrees of freedom does an OLS model fit to the features $x, x^2, x^3$ and the intercept have?\n", + "\n", + "**b)** Why is it bad for a model to have too many degrees of freedom?\n", + "\n", + "**c)** Why is it bad for a model to have too few degrees of freedom?\n", + "\n", + "**d)** Read [chapter 3.4.1 of Hastie et al.'s book](https://link.springer.com/book/10.1007/978-0-387-84858-7). What is the expression for the effective degrees of freedom of the ridge regression fit?\n", + "\n", + "**e)** Why might we want to use Ridge regression instead of OLS?\n", + "\n", + "**f)** Why migth we want to use OLS instead of Ridge regression?" + ] + }, + { + "cell_type": "markdown", + "id": "a78b2ce2", + "metadata": {}, + "source": [ + "## Exercise 2 - Deriving the expression for Ridge Regression\n", + "\n", + "The aim here is to derive the expression for the optimal parameters using Ridge regression.\n", + "\n", + "The expression for the standard Mean Squared Error (MSE) which we used to define our cost function and the equations for the ordinary least squares (OLS) method, was given by the optimization problem" + ] + }, + { + "cell_type": "markdown", + "id": "93a7ad16", + "metadata": {}, + "source": [ + "$$\n", + "{\\displaystyle \\min_{\\boldsymbol{\\beta}\\in {\\mathbb{R}}^{p}}}\\frac{1}{n}\\left\\{\\left(\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta}\\right)^T\\left(\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta}\\right)\\right\\}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "6b182c01", + "metadata": {}, + "source": [ + "By minimizing the above equation with respect to the parameters $\\boldsymbol{\\beta}$ we could then obtain an analytical expression for the parameters $\\boldsymbol{\\hat\\beta_{OLS}}$.\n", + "\n", + "We can add a regularization parameter $\\lambda$ by\n", + "defining a new cost function to be optimized, that is" + ] + }, + { + "cell_type": "markdown", + "id": "fb065daf", + "metadata": {}, + "source": [ + "$$\n", + "{\\displaystyle \\min_{\\boldsymbol{\\beta}\\in\n", + "{\\mathbb{R}}^{p}}}\\frac{1}{n}\\vert\\vert \\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta}\\vert\\vert_2^2+\\lambda\\vert\\vert \\boldsymbol{\\beta}\\vert\\vert_2^2\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "89ae11e8", + "metadata": {}, + "source": [ + "which leads to the Ridge regression minimization problem. (One can require as part of the optimization problem that $\\vert\\vert \\boldsymbol{\\beta}\\vert\\vert_2^2\\le t$, where $t$ is a finite number larger than zero. We will not implement that in this course.)" + ] + }, + { + "cell_type": "markdown", + "id": "456d58d4", + "metadata": {}, + "source": [ + "### a) Expression for Ridge regression\n", + "\n", + "Show that the optimal parameters" + ] + }, + { + "cell_type": "markdown", + "id": "a5677efd", + "metadata": {}, + "source": [ + "$$\n", + "\\hat{\\boldsymbol{\\beta}}_{\\mathrm{Ridge}} = \\left(\\boldsymbol{X}^T\\boldsymbol{X}+\\lambda\\boldsymbol{I}\\right)^{-1}\\boldsymbol{X}^T\\boldsymbol{y},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "e7b08048", + "metadata": {}, + "source": [ + "with $\\boldsymbol{I}$ being a $p\\times p$ identity matrix.\n", + "\n", + "The ordinary least squares result is" + ] + }, + { + "cell_type": "markdown", + "id": "8bb0e6af", + "metadata": {}, + "source": [ + "$$\n", + "\\hat{\\boldsymbol{\\beta}}_{\\mathrm{OLS}} = \\left(\\boldsymbol{X}^T\\boldsymbol{X}\\right)^{-1}\\boldsymbol{X}^T\\boldsymbol{y},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "2faaae78", + "metadata": {}, + "source": [ + "## Exercise 3 - Scaling data" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "8ed79466", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.preprocessing import StandardScaler" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "59d6f347", + "metadata": {}, + "outputs": [], + "source": [ + "n = 100\n", + "x = np.linspace(-3, 3, n)\n", + "y = np.exp(-x**2) + 1.5 * np.exp(-(x-2)**2) + np.random.normal(0, 0.1)" + ] + }, + { + "cell_type": "markdown", + "id": "c9fc9fe0", + "metadata": {}, + "source": [ + "**a)** Adapt your function from last week to only include the intercept column if the boolean argument `intercept` is set to true." + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "5aa9c86d", + "metadata": {}, + "outputs": [], + "source": [ + "def polynomial_features(x, p, intercept=False):\n", + " n = len(x)\n", + " X = np.zeros((n, p + 1))\n", + " #X[:, 0] = ...\n", + " #X[:, 1] = ...\n", + " #X[:, 2] = ...\n", + " # could this be a loop?" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "2ebf249a", + "metadata": {}, + "outputs": [], + "source": [ + "def polynomial_features(x, p, intercept=False):\n", + " n = len(x)\n", + " X = np.zeros((n, p))\n", + " X[:, 0] = x[:]\n", + " X[:, 1] = x**2\n", + " X[:, 2] = x**3\n", + " return X" + ] + }, + { + "cell_type": "markdown", + "id": "c5924634", + "metadata": {}, + "source": [ + "**b)** Split your data into training and test data(80/20 split)" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "676541e7", + "metadata": {}, + "outputs": [], + "source": [ + "X = polynomial_features(x, 3)" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "id": "f895606f", + "metadata": {}, + "outputs": [], + "source": [ + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)\n", + "x_train = X_train[:, 0] # These are used for plotting\n", + "x_test = X_test[:, 0] # These are used for plotting" + ] + }, + { + "cell_type": "markdown", + "id": "a58f05ad", + "metadata": {}, + "source": [ + "**c)** Scale your design matrix with the sklearn standard scaler, though based on the mean and standard deviation of the training data only." + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "id": "0c07995a", + "metadata": {}, + "outputs": [], + "source": [ + "scaler = StandardScaler()\n", + "scaler.fit(X_train)\n", + "X_train_s = scaler.transform(X_train)\n", + "X_test_s = scaler.transform(X_test)\n", + "y_offset = np.mean(y_train)" + ] + }, + { + "cell_type": "markdown", + "id": "63b86003", + "metadata": {}, + "source": [ + "## Exercise 4 - Implementing Ridge Regression" + ] + }, + { + "cell_type": "markdown", + "id": "a2f52ef2", + "metadata": {}, + "source": [ + "**a)** Implement a function for computing the optimal Ridge parameters using the expression from **2a)**." + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "id": "69f19bde", + "metadata": {}, + "outputs": [], + "source": [ + "def Ridge_parameters(X, y):\n", + " # Assumes X is scaled and has no intercept column\n", + " return np.linalg.inv(X.T @ X) @ X.T @ y\n", + "\n", + "beta = Ridge_parameters(X_train_s, y_train)" + ] + }, + { + "cell_type": "markdown", + "id": "626c81ba", + "metadata": {}, + "source": [ + "**b)** Fit a model to the data, and plot the prediction using both the training and test x-values extracted before scaling, and the y_offset." + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "id": "f9ba0655", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 82, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(x, y)\n", + "plt.scatter(x_train, X_train_s @ beta + y_offset)\n", + "plt.scatter(x_test, X_test_s @ beta + y_offset)" + ] + }, + { + "cell_type": "markdown", + "id": "2993cfae", + "metadata": {}, + "source": [ + "## Exercise 4 - Testing multiple hyperparameters" + ] + }, + { + "cell_type": "markdown", + "id": "e6cdc89a", + "metadata": {}, + "source": [ + "**a)** Compute the MSE of your ridge model for polynomials of degrees 1 to 5 with lambda set to 0.01. Plot the MSE as a function of polynomial degree.\n", + "\n", + "**b)** Compute the MSE of your ridge model for a polynomial with degree 3, and with lambdas from $10^{-1}$ to $10^{-5}$ on a logarithmic scale. Plot the MSE as a function of lambda.\n", + "\n", + "**c)** Compute the MSE of your ridge model for polynomials of degrees 1 to 5, and with lambdas from $10^{-1}$ to $10^{-5}$ on a logarithmic scale. Plot the MSE as a function of polynomial degree and lambda using a [heatmap](https://matplotlib.org/stable/gallery/images_contours_and_fields/image_annotated_heatmap.html)." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.15" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/doc/LectureNotes/_build/html/chapter1.html b/doc/LectureNotes/_build/html/chapter1.html index 5fced352b..df8db8de4 100644 --- a/doc/LectureNotes/_build/html/chapter1.html +++ b/doc/LectureNotes/_build/html/chapter1.html @@ -223,10 +223,11 @@

Weekly material, notes and exercises

diff --git a/doc/LectureNotes/_build/html/chapter10.html b/doc/LectureNotes/_build/html/chapter10.html index 1c0921613..869a92480 100644 --- a/doc/LectureNotes/_build/html/chapter10.html +++ b/doc/LectureNotes/_build/html/chapter10.html @@ -223,10 +223,11 @@

Weekly material, notes and exercises

diff --git a/doc/LectureNotes/_build/html/chapter11.html b/doc/LectureNotes/_build/html/chapter11.html index 9256ab85d..2874d8c2e 100644 --- a/doc/LectureNotes/_build/html/chapter11.html +++ b/doc/LectureNotes/_build/html/chapter11.html @@ -223,10 +223,11 @@

Weekly material, notes and exercises

diff --git a/doc/LectureNotes/_build/html/chapter12.html b/doc/LectureNotes/_build/html/chapter12.html index 768f7564c..35bae2997 100644 --- a/doc/LectureNotes/_build/html/chapter12.html +++ b/doc/LectureNotes/_build/html/chapter12.html @@ -223,10 +223,11 @@

Weekly material, notes and exercises

diff --git a/doc/LectureNotes/_build/html/chapter13.html b/doc/LectureNotes/_build/html/chapter13.html index 2bb917ddb..0498eab1d 100644 --- a/doc/LectureNotes/_build/html/chapter13.html +++ b/doc/LectureNotes/_build/html/chapter13.html @@ -62,7 +62,7 @@ - + @@ -223,10 +223,11 @@

Weekly material, notes and exercises

@@ -1731,7 +1732,7 @@ plot_results(results, plot_number) diff --git a/doc/LectureNotes/_build/html/chapter3.html b/doc/LectureNotes/_build/html/chapter3.html index 492052da1..86b3b7372 100644 --- a/doc/LectureNotes/_build/html/chapter3.html +++ b/doc/LectureNotes/_build/html/chapter3.html @@ -223,10 +223,11 @@

Weekly material, notes and exercises

diff --git a/doc/LectureNotes/_build/html/chapter4.html b/doc/LectureNotes/_build/html/chapter4.html index 0372a062c..f16288205 100644 --- a/doc/LectureNotes/_build/html/chapter4.html +++ b/doc/LectureNotes/_build/html/chapter4.html @@ -223,10 +223,11 @@

Weekly material, notes and exercises

diff --git a/doc/LectureNotes/_build/html/chapter5.html b/doc/LectureNotes/_build/html/chapter5.html index 786ded8d0..2b77dd203 100644 --- a/doc/LectureNotes/_build/html/chapter5.html +++ b/doc/LectureNotes/_build/html/chapter5.html @@ -223,10 +223,11 @@

Weekly material, notes and exercises

diff --git a/doc/LectureNotes/_build/html/chapter6.html b/doc/LectureNotes/_build/html/chapter6.html index ca992d56c..dfd1a8477 100644 --- a/doc/LectureNotes/_build/html/chapter6.html +++ b/doc/LectureNotes/_build/html/chapter6.html @@ -223,10 +223,11 @@

Weekly material, notes and exercises

diff --git a/doc/LectureNotes/_build/html/chapter7.html b/doc/LectureNotes/_build/html/chapter7.html index 7cbce3699..152c5dfc8 100644 --- a/doc/LectureNotes/_build/html/chapter7.html +++ b/doc/LectureNotes/_build/html/chapter7.html @@ -223,10 +223,11 @@

Weekly material, notes and exercises

diff --git a/doc/LectureNotes/_build/html/chapter8.html b/doc/LectureNotes/_build/html/chapter8.html index eda68ae73..d5cb0ff3e 100644 --- a/doc/LectureNotes/_build/html/chapter8.html +++ b/doc/LectureNotes/_build/html/chapter8.html @@ -223,10 +223,11 @@

Weekly material, notes and exercises

diff --git a/doc/LectureNotes/_build/html/chapter9.html b/doc/LectureNotes/_build/html/chapter9.html index 5f918c5e3..db1949333 100644 --- a/doc/LectureNotes/_build/html/chapter9.html +++ b/doc/LectureNotes/_build/html/chapter9.html @@ -223,10 +223,11 @@

Weekly material, notes and exercises

diff --git a/doc/LectureNotes/_build/html/chapteroptimization.html b/doc/LectureNotes/_build/html/chapteroptimization.html index 89800d65c..907b9eb5f 100644 --- a/doc/LectureNotes/_build/html/chapteroptimization.html +++ b/doc/LectureNotes/_build/html/chapteroptimization.html @@ -223,10 +223,11 @@

Weekly material, notes and exercises

diff --git a/doc/LectureNotes/_build/html/clustering.html b/doc/LectureNotes/_build/html/clustering.html index 12906f305..e586e5def 100644 --- a/doc/LectureNotes/_build/html/clustering.html +++ b/doc/LectureNotes/_build/html/clustering.html @@ -223,10 +223,11 @@

Weekly material, notes and exercises

diff --git a/doc/LectureNotes/_build/html/exercisesweek34.html b/doc/LectureNotes/_build/html/exercisesweek34.html new file mode 100644 index 000000000..aaf73ada9 --- /dev/null +++ b/doc/LectureNotes/_build/html/exercisesweek34.html @@ -0,0 +1,663 @@ + + + + + + + + + + + Exercises week 34 — Applied Data Analysis and Machine Learning + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+
+
+
+
+ +
+ +
+ + + + + +
+
+ + + +
+ + + + + + + + + + + + + +
+ +
+ + + +
+ +
+
+ +
+
+ +
+ +
+ +
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ + + + + + + + +
+ +
+

Exercises week 34#

+
+

Coding Setup and Linear Regression#

+

Welcome to FYS-STK3155/4155!

+

In this first week will focus on getting you set up with the programs you are going to be using throughout this course. We expect that many of you will encounter some trouble with setting these programs up, as they can be extremely finnicky and prone to not working the same on all machines, so we strongly encourage you to not get discouraged, and to show up to the group-sessions where we can help you along. The group sessions are also the best place to find group partners for the projects and to be challenged on your understanding of the material, which are both essential to doing well in this course. We strongly encourage you to form groups of 2-3 participants.

+

If you are unable to complete this week’s exercises, don’t worry, this will likely be the most frustrating week for many of you. You have time to get back on track next week, especially if you come to the group-sessions! Note also that this week’s set of exercises does not count for the additional score. The deadline for the weekly exercises is set to Fridays, at midnight.

+
+

Learning goals#

+

After completing these exercises, you will know how to

+
    +
  • Create and use a Github repository

  • +
  • Set up and use a virtual environment in Python

  • +
  • Fit an OLS model to data using scikit-learn

  • +
  • Fit a model on training data and evaluate it on test data

  • +
+
+
+

Deliverables#

+

Complete the following exercises while working in a jupyter notebook. Exercises 1,2 and 3 require no writing in the notebook. Then, in canvas, include

+ +

We require you to deliver a jupyter notebook so that we can evaluate the results of your code without needing to download and run the code of every student, as well as to teach you to use this useful tool.

+
+
+
+

Exercise 1 - Github Setup#

+

In this course, we require you to pay extra mind to the reproducibility of your results and the shareability of your code. The first step toward these goals is using a version control system like git and online repository like Github.

+

a) Download git if you don’t already have it on your machine, check with the terminal command ´git –version´ (https://git-scm.com/downloads).

+

b) Create a Github account(), or log in to github with your UiO account (https://github.uio.no/login).

+

c) Learn the basics of opening the terminal and navigating folders on your operating system. Things to learn: Opening a terminal, opening a terminal in a specific folder, listing the contents of the current folder, navigating into a folder, navigating out of a folder.

+

d) Download the Github CLI tool and run ´gh auth login´ in your terminal to authenticate your local machine for some of the later steps. (cli/cli). You might need to change file permissions to make it work, ask us or ChatGPT for help with these issues.

+

e) As an alternative to the above terminal based instructions, you could install GitHub Desktop (see https://desktop.github.com/download/) or if you prefer GitLab, GitLab desktop (see https://about.gitlab.com/install/). This sets up all communications between your PC/Laptop and the repository. This allows you to combine exercises 1 and 2 in an easy way if you don’t want to use terminarl. Keep in mind that these GUIs (graphical user interfaces) are not text editors.

+
+
+

Exercise 2 - Setting up a Github repository#

+

a) Create an empty repository for your coursework in this course in your browser at github.com (or uio github).

+

b) Open a terminal in the location you want to create your local folder for this repository, like your desktop.

+

c) Clone the repository to your laptop using the terminal command ´gh repo clone username/repository-name´. This creates a folder with the same name as the repository. Moving it or renaming it might require some extra steps.

+

d) Download this jupyter notebook. Add the notebook to the local folder.

+

e) Run the ´git add .´ command command in a terminal opened in the local folder to stage the current changes in the folder to be commited to the version control history. Run ´git status´ to see the staged files.

+

f) Run the ´git commit -m “Adding first weekly assignment file”´ command to commit the staged changes to the version control history. Run ´git status´ to see that no files are staged.

+

g) Run the ´git push” command to upload the commited changes to the remote repository on Github.

+

h) Add a file called README.txt to the repository at Github.com. Don’t do this in your local folder. Add a suitable title for your repository and some inforomation to the file.

+

i) Run the ´git fetch origin´ command to fetch the latest remote changes to your repository.

+

j) Run the ´git pull´ command to download and update files to match the remote changes.

+
+
+

Exercise 3 - Setting up a Python virtual environment#

+

Following the themes from the previous exercises, another way of improving the reproducibility of your results and shareability of your code is having a good handle on which python packages you are using.

+

There are many ways to manage your packages in Python, and you are free to use any approach you want, but in this course we encourage you to use something called a virtual environment. A virtual environemnt is a folder in your project which contains a Python runtime executable as well as all the packages you are using in the current project. In this way, each of your projects has its required set of packages installed in the same folder, so that if anything goes wrong while managing your packages it only affects the one project, and if multiple projects require different versions of the same package, you don’t need to worry about messing up old projects. Also, it’s easy to just delete the folder and start over if anything goes wrong.

+

Virtual environments are typically created, activated, managed and updated using terminal commands, but for now we recommend that you let for example VS Code (a popular cross-paltform package) handle it for you to make the coding experience much easier. If you are familiar with another approach for virtual environments that works for you, feel free to keep doing it that way.

+

a) Open this notebook in VS Code (https://code.visualstudio.com/Download). Download the Python and Jupyter extensions.

+

b) Press ´Cmd + Shift + P´, then search and run ´Python: Create Environment…´

+

c) Select ´Venv´

+

d) Choose the most up-to-date version of Python your have installed.

+

e) Press ´Cmd + Shift + P´, then search and run ´Python: Select Interpreter´

+

f) Selevet the (.venv) option you just created.

+

g) Open a terminal in VS Code, the venv name should be visible at the beginning of the line. Run pip list to see that there are no packages install in the environment.

+

h) In this terminal, run pip install matplotlib numpy scikit-learn. This will install the listed packages.

+

i) To make these installations reproducible, which is important for reproducing results and sharing your code, run ´pip freeze > requirements.txt´ to create the file requirements.txt with all your dependencies.

+

Now, anyone who wants to recreate your package setup can download your requirements.txt file and run ´pip install -r requirements.txt´ to install the correct packages and versions. To keep the requirements.txt file up to date with your environment, you will need to re-run the freeze command whenever you install a new package.

+

j) Create a .gitignore file at the root of your project folder, and add the line ´.venv´ to it. This way, you won’t try to upload a copy of all your python packages when you regularly push your changes to Github. Ignored files should not show up when you run ´git status´, and are not staged when running ´git add .´, try it!

+
+
+

Exercise 3 - Fitting an OLS model to data#

+

Great job on getting through all of that! Now it is time to do some actual machine learning!

+

a) Complete the code below so that you fit a second order polynomial to the data. You will need to look up some scikit-learn documentation online (look at the imported functions for hints).

+

b) Compute the mean square error for the line model and for the second degree polynomial model.

+
+
+
import numpy as np
+import matplotlib.pyplot as plt
+from sklearn.preprocessing import PolynomialFeatures # use the fit_transform method of the created object!
+from sklearn.linear_model import LinearRegression
+from sklearn.metrics import mean_squared_error
+
+
+
+
+
+
+
n = 100
+x = np.random.rand(n, 1)
+y = 2.0 + 5 * x**2 + 0.1 * np.random.randn(n, 1)
+
+line_model = LinearRegression().fit(x, y)
+line_predict = line_model.predict(x)
+#line_mse = ...
+
+#poly_features = ...
+#poly_model = LinearRegression().fit(..., y)
+#poly_predict = ...
+#poly_mse = ...
+
+plt.scatter(x, y, label = "Data")
+plt.scatter(x, line_predict, label = "Line model")
+plt.legend()
+plt.show()
+
+
+
+
+_images/c62786c19b580c6638248aa3cfe7dea30bdbc00a922e7e45a45a5a7a053bdb38.png +
+
+
+
+

Exercise 4 - The train-test split#

+

Hopefully your model fit the data quite well, but to know how well the model actually generalizes to unseen data, which is most often what we care about, we need to split our data into training and testing data.

+
+
+
from sklearn.model_selection import train_test_split
+
+
+
+
+

a) Complete the code below so that the polynomial features and the targets y get split into training and test data.

+

b) What is the shape of X_test?

+

c) Fit your model to X_train

+

d) Compute the MSE when your model predicts on the training data and on the testing data, using y_train and y_test as targets for the two cases.

+

e) Why do we not fit the model to X_test?

+
+
+
polynomial_features = ...
+
+#X_train, X_test, y_train, y_test = train_test_split(polynomial_features, y, test_size=0.2)
+
+
+
+
+
+
+ + + + +
+ + + + + + + + +
+ + + + + + +
+
+ + +
+ + +
+
+
+ + + + + +
+
+ + \ No newline at end of file diff --git a/doc/LectureNotes/_build/html/exercisesweek35.html b/doc/LectureNotes/_build/html/exercisesweek35.html new file mode 100644 index 000000000..85b63cce4 --- /dev/null +++ b/doc/LectureNotes/_build/html/exercisesweek35.html @@ -0,0 +1,760 @@ + + + + + + + + + + + Exercises week 35 — Applied Data Analysis and Machine Learning + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+
+
+
+
+ +
+ +
+ + + + + +
+
+ + + +
+ + + + + + + + + + + + + +
+ +
+ + + +
+ +
+
+ +
+
+ +
+ +
+ +
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ + + + + + + + +
+ +
+

Exercises week 35#

+
+

Deriving and Implementing Ordinary Least Squares#

+

This week you will be deriving the analytical expressions for linear regression, building up the model from scratch. This will include taking several derivatives of products of vectors and matrices. Such derivatives are central to the optimization of many machine learning models. Although we will often use automatic differentiation in actual calculations, to be able to have analytical expressions is extremely helpful in case we have simpler derivatives as well as when we analyze various properties (like second derivatives) of the chosen cost functions.

+

Vectors are always written as boldfaced lower case letters and matrices as upper case boldfaced letters. You will find useful the notes from week 35 on derivatives of vectors and matrices. See also the textbook of Faisal at al, chapter 5 and in particular sections 5.3-5.5 at CompPhysics/MachineLearning

+
+

Learning goals#

+

After completing these exercises, you will know how to

+
    +
  • Take the derivatives of simple products between vectors and matrices

  • +
  • Implement OLS using the analytical expressions

  • +
  • Create a feature matrix from a set of data

  • +
  • Create a feature matrix for a polynomial model

  • +
  • Evaluate the MSE score of various model on training and test data, and comparing their performance

  • +
+
+
+

Deliverables#

+

Complete the following exercises while working in a jupyter notebook. Then, in canvas, include

+ +
+
+
+

How to take derivatives of Matrix-Vector expressions#

+

In these exercises it is always useful to write out with summation indices the various quantities. Take also a look at the weekly slides from week 35 and the various examples included there.

+

As an example, consider the function

+
+\[ +f(\boldsymbol{x}) =\boldsymbol{A}\boldsymbol{x}, +\]
+

which reads for a specific component \(f_i\) (we define the matrix \(\boldsymbol{A}\) to have dimension \(n\times n\) and the vector \(\boldsymbol{x}\) to have length \(n\))

+
+\[ +f_i =\sum_{j=0}^{n-1}a_{ij}x_j, +\]
+

which leads to

+
+\[ +\frac{\partial f_i}{\partial x_j}= a_{ij}, +\]
+

and written out in terms of the vector \(\boldsymbol{x}\) we have

+
+\[ +\frac{\partial f(\boldsymbol{x})}{\partial \boldsymbol{x}}= \boldsymbol{A}. +\]
+
+
+

Exercise 1 - Finding the derivative of Matrix-Vector expressions#

+

a) Consider the expression

+
+\[ +\frac{\partial (\boldsymbol{a}^T\boldsymbol{x})}{\partial \boldsymbol{x}}, +\]
+

Where \(\boldsymbol{a}\) and \(\boldsymbol{x}\) are column-vectors with length \(n\).

+

What is the shape of the expression we are taking the derivative of?

+

What is the shape of the thing we are taking the derivative with respect to?

+

What is the shape of the result of the expression?

+

b) Show that

+
+\[ +\frac{\partial (\boldsymbol{a}^T\boldsymbol{x})}{\partial \boldsymbol{x}} = \boldsymbol{a}^T, +\]
+

c) Show that

+
+\[ +\frac{\partial (\boldsymbol{a}^T\boldsymbol{A}\boldsymbol{a})}{\partial \boldsymbol{a}} = \boldsymbol{a}^T(\boldsymbol{A}+\boldsymbol{A}^T), +\]
+
+
+

Exercise 2 - Deriving the expression for OLS#

+

The ordinary least squares method finds the parameters \(\boldsymbol{\theta}\) which minimizes the squared error between our model \(\boldsymbol{X\theta}\) and the true values \(\boldsymbol{y}\).

+

To find the parameters \(\boldsymbol{\theta}\) which minimizes this error, we take the derivative of the squared error expression with respect to \(\boldsymbol{\theta}\), and set it equal to 0.

+

a) Very briefly explain why the approach above finds the parameters \(\boldsymbol{\theta}\) which minimizes this error.

+

We typically write the squared error as

+
+\[ +\vert\vert\boldsymbol{y} - \boldsymbol{X\theta}\vert\vert^2 +\]
+

which we can rewrite in matrix-vector form as

+
+\[ +\left(\boldsymbol{y}-\boldsymbol{X}\boldsymbol{\theta}\right)^T\left(\boldsymbol{y}-\boldsymbol{X}\boldsymbol{\theta}\right) +\]
+

b) If \(\boldsymbol{X}\) is invertible, what is the expression for the optimal parameters \(\boldsymbol{\theta}\)? (Hint: Don’t compute any derivatives, but solve \(\boldsymbol{X\theta}=\boldsymbol{y}\) for \(\boldsymbol{\theta}\))

+

c) Show that

+
+\[ +\frac{\partial \left(\boldsymbol{x}-\boldsymbol{A}\boldsymbol{s}\right)^T\left(\boldsymbol{x}-\boldsymbol{A}\boldsymbol{s}\right)}{\partial \boldsymbol{s}} = -2\left(\boldsymbol{x}-\boldsymbol{A}\boldsymbol{s}\right)^T\boldsymbol{A}, +\]
+

d) Using the expression from c), but substituting back in \(\boldsymbol{\theta}\), \(\boldsymbol{y}\) and \(\boldsymbol{X}\), find the expression for the optimal parameters \(\boldsymbol{\theta}\) in the case that \(\boldsymbol{X}\) is not invertible, but \(\boldsymbol{X^T X}\) is, which is most often the case.

+
+\[ +\boldsymbol{\hat{\theta}_{OLS}} = ... +\]
+
+
+

Exercise 3 - Creating feature matrix and implementing OLS using the analytical expression#

+

With the expression for \(\boldsymbol{\hat{\theta}_{OLS}}\), you now have what you need to implement OLS regression with your input data and target data \(\boldsymbol{y}\). But before you can do that, you need to set up you input data as a feature matrix \(\boldsymbol{X}\).

+

In a feature matrix, each row is a datapoint and each column is a feature of that data. If you want to predict someones spending based on their income and number of children, for instance, you would create a row for each person in your dataset, with the montly income and the number of children as columns.

+

We typically also include an intercept in our models. The intercept is a value that is added to our prediction regardless of the value of the other features. The intercept tries to account for constant effects in our data that are not dependant on anything else. In our current example, the intercept could account for living expenses which are typical regardless of income or childcare expenses.

+

We calculate the optimal intercept by including a feature with the constant value of 1 in our model, which is then multplied by some parameter \(\theta_0\) from the OLS method into the optimal intercept value (which will be \(\theta_0\)). In practice, we include the intercept in our model by adding a column of ones to the start of our feature matrix.

+
+
+
import numpy as np
+
+
+
+
+
+
+
n = 20
+income = np.array([116., 161., 167., 118., 172., 163., 179., 173., 162., 116., 101., 176., 178., 172., 143., 135., 160., 101., 149., 125.])
+children = np.array([5, 3, 0, 4, 5, 3, 0, 4, 4, 3, 3, 5, 1, 0, 2, 3, 2, 1, 5, 4])
+spending = np.array([152., 141., 102., 136., 161., 129.,  99., 159., 160., 107.,  98., 164., 121.,  93., 112., 127., 117.,  69., 156., 131.])
+
+
+
+
+

a) Create a feature matrix \(\boldsymbol{X}\) for the features income and children, including an intercept column of ones at the start.

+
+
+
X = np.zeros((n, 3))
+#X[:, 0] = ...
+#X[:, 1] = ...
+#X[:, 2] = ...
+
+
+
+
+

b) Use the expression from 3d) to find the optimal parameters \(\boldsymbol{\hat{\beta}_{OLS}}\) for predicting spending based on these features. Create a function for this operation, as you are going to need to use it a lot.

+
+
+
def OLS_parameters(X, y):
+    return ...
+
+#beta = OLS_parameters(X, y)
+
+
+
+
+
+
+

Exercise 4 - Fitting a polynomial#

+

In this course, we typically do linear regression using polynomials, though in real world applications it is also very common to make linear models based on measured features like you did in the previous exercise.

+

When fitting a polynomial with linear regression, we make each polynomial degree(\(x, x^2, x^3, ..., x^p\)) its own feature.

+
+
+
n = 100
+x = np.linspace(-3, 3, n)
+y = np.exp(-x**2) + 1.5 * np.exp(-(x-2)**2) + np.random.normal(0, 0.1)
+
+
+
+
+

a) Create a feature matrix \(\boldsymbol{X}\) for the features \(x, x^2, x^3, x^4, x^5\), including an intercept column of ones at the start. Make this into a function, as you will do this a lot over the next weeks.

+
+
+
def polynomial_features(x, p):
+    n = len(x)
+    X = np.zeros((n, p + 1))
+    #X[:, 0] = ...
+    #X[:, 1] = ...
+    #X[:, 2] = ...
+    # could this be a loop?
+
+#X = polynomial_features(x, 5)
+
+
+
+
+

b) Use the expression from 3d) to find the optimal parameters \(\boldsymbol{\hat{\beta}_{OLS}}\) for predicting \(\boldsymbol{y}\) based on these features. If you have done everything right so far, this code will not need changing.

+
+
+
#beta = OLS_parameters(X, y)
+
+
+
+
+

c) Like in exercise 4 last week, split your feature matrix and target data into a training split and test split.

+
+
+
from sklearn.model_selection import train_test_split
+
+#X_train, X_test, y_train, y_test = ...
+
+
+
+
+

d) Train your model on the training data(find the parameters which best fit) and compute the MSE on both the training and test data.

+
+
+
...
+
+
+
+
+
Ellipsis
+
+
+
+
+

e) Do the same for each polynomial degree from 2 to 10, and plot the MSE on both the training and test data as a function of polynomial degree. The aim is to reproduce Figure 2.11 of Hastie et al. Feel free to read the discussions leading to figure 2.11 of Hastie et al.

+
+
+
...
+
+
+
+
+
Ellipsis
+
+
+
+
+

f) Interpret the graph. Why do the lines move as they do? What does it tell us about model performance and generalizability?

+
+
+

Exercise 5 - Comparing your code with sklearn#

+

When implementing different algorithms for the first time, it can be helpful to double check your results with established implementations before you go on to add more complexity.

+

a) Make sure your polynomial_features function creates the same feature matrix as sklearns PolynomialFeatures.

+

(https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.PolynomialFeatures.html)

+

b) Make sure your OLS_parameters function computes the same parameters as sklearns LinearRegression with fit_intercept set to False, since the intercept is included in the feature matrix. Use your_model_object.coef_ to extract the computed parameters.

+

(https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html)

+
+
+ + + + +
+ + + + + + + + +
+ + + + + + +
+
+ + +
+ + +
+
+
+ + + + + +
+
+ + \ No newline at end of file diff --git a/doc/LectureNotes/_build/html/exercisesweek36.html b/doc/LectureNotes/_build/html/exercisesweek36.html new file mode 100644 index 000000000..288b02bf3 --- /dev/null +++ b/doc/LectureNotes/_build/html/exercisesweek36.html @@ -0,0 +1,691 @@ + + + + + + + + + + + Weekly Exercises 3 — Applied Data Analysis and Machine Learning + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+
+
+
+
+ +
+ +
+ + + + + +
+
+ + + +
+ + + + + + + + + + + + + +
+ +
+ + + +
+ +
+
+ +
+
+ +
+ +
+ +
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ + + + + + + + +
+ +
+

Weekly Exercises 3#

+
+

Deriving and Implementing Ridge Regression#

+
+
+

Learning goals#

+

After completing these exercises, you will know how to

+
    +
  • Take more derivatives of simple products between vectors and matrices

  • +
  • Implement Ridge regression using the analytical expressions

  • +
  • Scale data appropriately for linear regression

  • +
  • Evaluate a model across two different hyperparameters

  • +
+
+
+

Exercise 1 - Choice of model and degrees of freedom#

+

a) How many degrees of freedom does an OLS model fit to the features \(x, x^2, x^3\) and the intercept have?

+

b) Why is it bad for a model to have too many degrees of freedom?

+

c) Why is it bad for a model to have too few degrees of freedom?

+

d) Read chapter 3.4.1 of Hastie et al.’s book. What is the expression for the effective degrees of freedom of the ridge regression fit?

+

e) Why might we want to use Ridge regression instead of OLS?

+

f) Why migth we want to use OLS instead of Ridge regression?

+
+
+

Exercise 2 - Deriving the expression for Ridge Regression#

+

The aim here is to derive the expression for the optimal parameters using Ridge regression.

+

The expression for the standard Mean Squared Error (MSE) which we used to define our cost function and the equations for the ordinary least squares (OLS) method, was given by the optimization problem

+
+\[ +{\displaystyle \min_{\boldsymbol{\beta}\in {\mathbb{R}}^{p}}}\frac{1}{n}\left\{\left(\boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta}\right)^T\left(\boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta}\right)\right\}. +\]
+

By minimizing the above equation with respect to the parameters \(\boldsymbol{\beta}\) we could then obtain an analytical expression for the parameters \(\boldsymbol{\hat\beta_{OLS}}\).

+

We can add a regularization parameter \(\lambda\) by +defining a new cost function to be optimized, that is

+
+\[ +{\displaystyle \min_{\boldsymbol{\beta}\in +{\mathbb{R}}^{p}}}\frac{1}{n}\vert\vert \boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta}\vert\vert_2^2+\lambda\vert\vert \boldsymbol{\beta}\vert\vert_2^2 +\]
+

which leads to the Ridge regression minimization problem. (One can require as part of the optimization problem that \(\vert\vert \boldsymbol{\beta}\vert\vert_2^2\le t\), where \(t\) is a finite number larger than zero. We will not implement that in this course.)

+
+

a) Expression for Ridge regression#

+

Show that the optimal parameters

+
+\[ +\hat{\boldsymbol{\beta}}_{\mathrm{Ridge}} = \left(\boldsymbol{X}^T\boldsymbol{X}+\lambda\boldsymbol{I}\right)^{-1}\boldsymbol{X}^T\boldsymbol{y}, +\]
+

with \(\boldsymbol{I}\) being a \(p\times p\) identity matrix.

+

The ordinary least squares result is

+
+\[ +\hat{\boldsymbol{\beta}}_{\mathrm{OLS}} = \left(\boldsymbol{X}^T\boldsymbol{X}\right)^{-1}\boldsymbol{X}^T\boldsymbol{y}, +\]
+
+
+
+

Exercise 3 - Scaling data#

+
+
+
import numpy as np
+import matplotlib.pyplot as plt
+from sklearn.model_selection import train_test_split
+from sklearn.preprocessing import StandardScaler
+
+
+
+
+
+
+
n = 100
+x = np.linspace(-3, 3, n)
+y = np.exp(-x**2) + 1.5 * np.exp(-(x-2)**2) + np.random.normal(0, 0.1)
+
+
+
+
+

a) Adapt your function from last week to only include the intercept column if the boolean argument intercept is set to true.

+
+
+
def polynomial_features(x, p, intercept=False):
+    n = len(x)
+    X = np.zeros((n, p + 1))
+    #X[:, 0] = ...
+    #X[:, 1] = ...
+    #X[:, 2] = ...
+    # could this be a loop?
+
+
+
+
+
+
+
def polynomial_features(x, p, intercept=False):
+    n = len(x)
+    X = np.zeros((n, p))
+    X[:, 0] = x[:]
+    X[:, 1] = x**2
+    X[:, 2] = x**3
+    return X
+
+
+
+
+

b) Split your data into training and test data(80/20 split)

+
+
+
X = polynomial_features(x, 3)
+
+
+
+
+
+
+
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
+x_train = X_train[:, 0] # These are used for plotting
+x_test = X_test[:, 0] # These are used for plotting
+
+
+
+
+

c) Scale your design matrix with the sklearn standard scaler, though based on the mean and standard deviation of the training data only.

+
+
+
scaler = StandardScaler()
+scaler.fit(X_train)
+X_train_s = scaler.transform(X_train)
+X_test_s = scaler.transform(X_test)
+y_offset = np.mean(y_train)
+
+
+
+
+
+
+

Exercise 4 - Implementing Ridge Regression#

+

a) Implement a function for computing the optimal Ridge parameters using the expression from 2a).

+
+
+
def Ridge_parameters(X, y):
+    # Assumes X is scaled and has no intercept column
+    return np.linalg.inv(X.T @ X) @ X.T @ y
+
+beta = Ridge_parameters(X_train_s, y_train)
+
+
+
+
+

b) Fit a model to the data, and plot the prediction using both the training and test x-values extracted before scaling, and the y_offset.

+
+
+
plt.plot(x, y)
+plt.scatter(x_train, X_train_s @ beta + y_offset)
+plt.scatter(x_test, X_test_s @ beta + y_offset)
+
+
+
+
+
<matplotlib.collections.PathCollection at 0x113e21950>
+
+
+_images/cb756715680fbe8cbf1d070371bf3950695ddf24b29ecb476c48fb9e559af08e.png +
+
+
+
+

Exercise 4 - Testing multiple hyperparameters#

+

a) Compute the MSE of your ridge model for polynomials of degrees 1 to 5 with lambda set to 0.01. Plot the MSE as a function of polynomial degree.

+

b) Compute the MSE of your ridge model for a polynomial with degree 3, and with lambdas from \(10^{-1}\) to \(10^{-5}\) on a logarithmic scale. Plot the MSE as a function of lambda.

+

c) Compute the MSE of your ridge model for polynomials of degrees 1 to 5, and with lambdas from \(10^{-1}\) to \(10^{-5}\) on a logarithmic scale. Plot the MSE as a function of polynomial degree and lambda using a heatmap.

+
+
+ + + + +
+ + + + + + + + +
+ + + + + + +
+
+ + +
+ + +
+
+
+ + + + + +
+
+ + \ No newline at end of file diff --git a/doc/LectureNotes/_build/html/genindex.html b/doc/LectureNotes/_build/html/genindex.html index 10764068d..9f60090ee 100644 --- a/doc/LectureNotes/_build/html/genindex.html +++ b/doc/LectureNotes/_build/html/genindex.html @@ -220,10 +220,11 @@

Weekly material, notes and exercises

diff --git a/doc/LectureNotes/_build/html/intro.html b/doc/LectureNotes/_build/html/intro.html index a91b04569..0b745b6fe 100644 --- a/doc/LectureNotes/_build/html/intro.html +++ b/doc/LectureNotes/_build/html/intro.html @@ -224,10 +224,11 @@

Weekly material, notes and exercises

diff --git a/doc/LectureNotes/_build/html/linalg.html b/doc/LectureNotes/_build/html/linalg.html index b83150d91..51a4d76bb 100644 --- a/doc/LectureNotes/_build/html/linalg.html +++ b/doc/LectureNotes/_build/html/linalg.html @@ -223,10 +223,11 @@

Weekly material, notes and exercises

diff --git a/doc/LectureNotes/_build/html/objects.inv b/doc/LectureNotes/_build/html/objects.inv index a90c6d46d3a7a64506fd9dabc9b353b704eb14a1..99eb8b0107495cc0979bc61e220e614cf102080f 100644 GIT binary patch delta 807 zcmV+?1K9kF2b~9ygMXGwQ`;~Q$M60Wdu(Sy2MDH+TOiQK@W=oyXT@G@4YuS;azgs) zyL#BzLC{m;mH)q8?JLPj))-U=piMr@Wd?f(kOkY9($p1Pae++19Tp0;=29fx`F>2a z?^S0luW~L5U~q|;!=+RkrgFH!R%bT9(yjuT2`%vxPXRn>7Fo+5vHDShgqv^Kp?zY1oaGV z*Ql7vN*ni@xA-Y zHJ+juyyk!11VqHcW6!xASSBvKjN-BAhEXjkWSgE)%YKf4RRxur=BrM!s?~(H)}h1R z8iwliEt}Mt z6GEpx(tr1AI{;0S0_iq6zBp~gR#;heXZ5ll_G`i^)pF><8T=dbhQ^k%vtWk3_J>X0 zZZ#4bZz{-;<1M2-J+BH}DK>%c#Bd9NiaS?|Z9TP?ih6TPjV)+1Gt<)KC$-EYS829; z-GO&;E%TNp!(VD}`X5>FHd5=XME5wjO=s)&bAPKeoujeynP{|&VeHA36&jW2so? lZXm-A$G}hD@Y5kb4GZ;F(FGXg<<0*A>+*viuYdn%`&RaNj;{a! delta 789 zcmV+w1M2*p2a5-ggMXFDa@#NrhVOa`9NQVE6WehX-<;U#GFd!H+Ma0%kvNe^m887% z=?gAWq=b{6Y(d0_A0Pm&#-L3$&twWmV_1#96s9U+wMUh5jT&}{FEBkxR+GWGN&MU_ zNefmRR0C>j^FB9RAXD&wxk9bE6rIm;%<0&BT{gVTxX6LQHGg6T*HZ16%HR$g#Y*}y zJE>keR5X4N@F>fzB`x{$Gb$8@6JYhHVTQzLfE_mlED>wCA)$hfcGyV_8)|VS#a5P$ zg*ZWdUAiMoV}z+EJYd==D+q-57QuTC_ghpJi9Z z&Wu-`g3}1=)U%dI-AG}OevLDYG{E0$E`k z*vqE1wTrD$n%<+ajh$$;6E%$FZDF4M`!&lk(SL?I#I6KAz<1U#awScUFs{?rN^aPO zm)y{F6)4rg73;Bep$;2dP-2j72h|`zYxDT0_Jjp}Rm^@y$Zc;nQog+L3&z$lJSO(* zHXUp}Z}I1T`)}l&DoWjyHK`jT+7WIpT=hoXa`ZCRilr_aZa4=1>>YpB=g-0>x>u9{ TqYk>f`;gj@A8h@9vYgG~X*!1U diff --git a/doc/LectureNotes/_build/html/schedule.html b/doc/LectureNotes/_build/html/schedule.html index 5ebaa40f4..f01e24174 100644 --- a/doc/LectureNotes/_build/html/schedule.html +++ b/doc/LectureNotes/_build/html/schedule.html @@ -221,10 +221,11 @@

Weekly material, notes and exercises

diff --git a/doc/LectureNotes/_build/html/search.html b/doc/LectureNotes/_build/html/search.html index 303d77f62..f956c387e 100644 --- a/doc/LectureNotes/_build/html/search.html +++ b/doc/LectureNotes/_build/html/search.html @@ -222,10 +222,11 @@

Weekly material, notes and exercises

diff --git a/doc/LectureNotes/_build/html/searchindex.js b/doc/LectureNotes/_build/html/searchindex.js index ee128239d..8a9f7b94f 100644 --- a/doc/LectureNotes/_build/html/searchindex.js +++ b/doc/LectureNotes/_build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({"alltitles": {"A Classification Tree": [[11, "a-classification-tree"]], "A Frequentist approach to data analysis": [[2, "a-frequentist-approach-to-data-analysis"], [23, "a-frequentist-approach-to-data-analysis"]], "A better approach": [[10, "a-better-approach"]], "A first summary": [[23, "a-first-summary"]], "A quick Reminder on Lagrangian Multipliers": [[10, "a-quick-reminder-on-lagrangian-multipliers"]], "A simple example": [[6, "a-simple-example"]], "A soft classifier": [[10, "a-soft-classifier"]], "A top-down perspective on Neural networks": [[3, "a-top-down-perspective-on-neural-networks"]], "ADAM optimizer": [[15, "adam-optimizer"]], "Activation functions": [[14, "activation-functions"]], "Adaptive boosting: AdaBoost, Basic Algorithm": [[12, "adaptive-boosting-adaboost-basic-algorithm"]], "Adding error analysis and training set up": [[23, "adding-error-analysis-and-training-set-up"], [24, "adding-error-analysis-and-training-set-up"]], "Adjust hyperparameters": [[3, "adjust-hyperparameters"]], "Algorithms for Setting up Decision Trees": [[11, "algorithms-for-setting-up-decision-trees"]], "An Overview of Ensemble Methods": [[12, "an-overview-of-ensemble-methods"]], "An extrapolation example": [[6, "an-extrapolation-example"]], "An optimization/minimization problem": [[23, "an-optimization-minimization-problem"]], "And finally \\boldsymbol{X}\\boldsymbol{X}^T": [[24, "and-finally-boldsymbol-x-boldsymbol-x-t"]], "And what about using neural networks?": [[23, "and-what-about-using-neural-networks"]], "Another example, the moons again": [[11, "another-example-the-moons-again"]], "Applied Data Analysis and Machine Learning": [[17, null]], "Autocorrelation function": [[20, "autocorrelation-function"]], "Automatic differentiation": [[15, "automatic-differentiation"]], "Back to Ridge and LASSO Regression": [[24, "back-to-ridge-and-lasso-regression"]], "Back to the Cancer Data": [[13, "back-to-the-cancer-data"]], "Bagging": [[12, "bagging"]], "Bagging Examples": [[12, "bagging-examples"]], "Basic Matrix Features": [[18, "basic-matrix-features"]], "Basic ideas of the Principal Component Analysis (PCA)": [[13, null]], "Basic math of the SVD": [[7, "basic-math-of-the-svd"], [24, "basic-math-of-the-svd"]], "Basics": [[9, "basics"]], "Basics of a tree": [[11, "basics-of-a-tree"]], "Batch Normalization": [[3, "batch-normalization"]], "Bayes\u2019 Theorem and Ridge and Lasso Regression": [[7, "bayes-theorem-and-ridge-and-lasso-regression"]], "Boosting, a Bird\u2019s Eye View": [[12, "boosting-a-bird-s-eye-view"]], "Bootstrap": [[8, "bootstrap"]], "Bringing it together, first back propagation equation": [[14, "bringing-it-together-first-back-propagation-equation"]], "Building a Feed Forward Neural Network": [[3, null]], "Building a tree, regression": [[11, "building-a-tree-regression"]], "Building neural networks in Tensorflow and Keras": [[3, "building-neural-networks-in-tensorflow-and-keras"]], "CNNs in more detail, building convolutional neural networks in Tensorflow and Keras": [[5, "cnns-in-more-detail-building-convolutional-neural-networks-in-tensorflow-and-keras"]], "Cancer Data again now with Decision Trees and other Methods": [[11, "cancer-data-again-now-with-decision-trees-and-other-methods"]], "Choose cost function and optimizer": [[3, "choose-cost-function-and-optimizer"]], "Classical PCA Theorem": [[13, "classical-pca-theorem"]], "Clustering and Unsupervised Learning": [[16, null]], "Code for SVD and Inversion of Matrices": [[7, "code-for-svd-and-inversion-of-matrices"]], "Codes and Approaches": [[16, "codes-and-approaches"]], "Codes for the SVD": [[7, "codes-for-the-svd"], [24, "codes-for-the-svd"]], "Coding Setup and Linear Regression": [[0, "coding-setup-and-linear-regression"]], "Collect and pre-process data": [[3, "collect-and-pre-process-data"]], "Communication channels": [[23, "communication-channels"]], "Compare Bagging on Trees with Random Forests": [[12, "compare-bagging-on-trees-with-random-forests"]], "Comparing with a numerical scheme": [[4, "comparing-with-a-numerical-scheme"]], "Computing the Gini index": [[11, "computing-the-gini-index"]], "Conjugate gradient method": [[15, "conjugate-gradient-method"]], "Convex functions": [[15, "convex-functions"]], "Convolution Examples: Polynomial multiplication": [[5, "convolution-examples-polynomial-multiplication"]], "Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)": [[5, "convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms"]], "Convolutional Neural Network": [[14, "convolutional-neural-network"]], "Convolutional Neural Networks": [[5, null]], "Correlation Function and Design/Feature Matrix": [[24, "correlation-function-and-design-feature-matrix"]], "Correlation Matrix": [[13, "correlation-matrix"], [24, "correlation-matrix"]], "Correlation Matrix with Pandas": [[24, "correlation-matrix-with-pandas"]], "Course Format": [[23, "course-format"]], "Course setting": [[19, null]], "Covariance Matrix Examples": [[24, "covariance-matrix-examples"]], "Covariance and Correlation Matrix": [[24, "covariance-and-correlation-matrix"]], "Cross-validation": [[8, "cross-validation"]], "Deadlines for projects (tentative)": [[23, "deadlines-for-projects-tentative"]], "Decision trees, overarching aims": [[11, null]], "Deep learning methods": [[23, "deep-learning-methods"]], "Define model and architecture": [[3, "define-model-and-architecture"]], "Defining the cost function": [[3, "defining-the-cost-function"]], "Deliverables": [[0, "deliverables"], [1, "deliverables"]], "Derivatives and the chain rule": [[14, "derivatives-and-the-chain-rule"]], "Derivatives, example 1": [[24, "derivatives-example-1"]], "Deriving OLS from a probability distribution": [[7, "deriving-ols-from-a-probability-distribution"]], "Deriving and Implementing Ordinary Least Squares": [[1, "deriving-and-implementing-ordinary-least-squares"]], "Deriving the Lasso Regression Equations": [[24, "deriving-the-lasso-regression-equations"]], "Deriving the Ridge Regression Equations": [[24, "deriving-the-ridge-regression-equations"]], "Deriving the back propagation code for a multilayer perceptron model": [[14, "deriving-the-back-propagation-code-for-a-multilayer-perceptron-model"]], "Developing a code for doing neural networks with back propagation": [[3, "developing-a-code-for-doing-neural-networks-with-back-propagation"]], "Diagonalize the sample covariance matrix to obtain the principal components": [[13, "diagonalize-the-sample-covariance-matrix-to-obtain-the-principal-components"]], "Different kernels and Mercer\u2019s theorem": [[10, "different-kernels-and-mercer-s-theorem"]], "Disadvantages": [[11, "disadvantages"]], "Discriminative Modeling": [[23, "discriminative-modeling"]], "Domains and probabilities": [[20, "domains-and-probabilities"]], "Dropout": [[3, "dropout"]], "Economy-size SVD": [[24, "economy-size-svd"]], "Elements of Probability Theory and Statistical Data Analysis": [[20, null]], "Ensemble Methods: From a Single Tree to Many Trees and Extreme Boosting, Meet the Jungle of Methods": [[12, null]], "Entropy and the ID3 algorithm": [[11, "entropy-and-the-id3-algorithm"]], "Essential elements of ML": [[23, "essential-elements-of-ml"]], "Evaluate model performance on test data": [[3, "evaluate-model-performance-on-test-data"]], "Example 2": [[24, "example-2"]], "Example 3": [[24, "example-3"]], "Example 4": [[24, "example-4"]], "Example Matrix": [[24, "example-matrix"]], "Example of discriminative modeling, taken from Generative Deep Learning by David Foster": [[23, "example-of-discriminative-modeling-taken-from-generative-deep-learning-by-david-foster"]], "Example of generative modeling, taken from Generative Deep Learning by David Foster": [[23, "example-of-generative-modeling-taken-from-generative-deep-learning-by-david-foster"]], "Example of own Standard scaling": [[24, "example-of-own-standard-scaling"]], "Example relevant for the exercises": [[24, "example-relevant-for-the-exercises"]], "Example: Exponential decay": [[4, "example-exponential-decay"]], "Example: Population growth": [[4, "example-population-growth"]], "Example: The diffusion equation": [[4, "example-the-diffusion-equation"]], "Example: binary classification problem": [[3, "example-binary-classification-problem"]], "Examples": [[23, "examples"]], "Examples of likelihood functions used in logistic regression and neural networks": [[9, "examples-of-likelihood-functions-used-in-logistic-regression-and-neural-networks"]], "Exercise 1 - Finding the derivative of Matrix-Vector expressions": [[1, "exercise-1-finding-the-derivative-of-matrix-vector-expressions"]], "Exercise 1 - Github Setup": [[0, "exercise-1-github-setup"]], "Exercise 1: Setting up various Python environments": [[2, "exercise-1-setting-up-various-python-environments"]], "Exercise 2 - Deriving the expression for OLS": [[1, "exercise-2-deriving-the-expression-for-ols"]], "Exercise 2 - Setting up a Github repository": [[0, "exercise-2-setting-up-a-github-repository"]], "Exercise 2: making your own data and exploring scikit-learn": [[2, "exercise-2-making-your-own-data-and-exploring-scikit-learn"]], "Exercise 3 - Creating feature matrix and implementing OLS using the analytical expression": [[1, "exercise-3-creating-feature-matrix-and-implementing-ols-using-the-analytical-expression"]], "Exercise 3 - Fitting an OLS model to data": [[0, "exercise-3-fitting-an-ols-model-to-data"]], "Exercise 3 - Setting up a Python virtual environment": [[0, "exercise-3-setting-up-a-python-virtual-environment"]], "Exercise 3: Normalizing our data": [[2, "exercise-3-normalizing-our-data"]], "Exercise 4 - Fitting a polynomial": [[1, "exercise-4-fitting-a-polynomial"]], "Exercise 4 - The train-test split": [[0, "exercise-4-the-train-test-split"]], "Exercise 4: Adding Ridge Regression": [[2, "exercise-4-adding-ridge-regression"]], "Exercise 5 - Comparing your code with sklearn": [[1, "exercise-5-comparing-your-code-with-sklearn"]], "Exercise 5: Analytical exercises": [[2, "exercise-5-analytical-exercises"]], "Exercise: Cross-validation as resampling techniques, adding more complexity": [[8, "exercise-cross-validation-as-resampling-techniques-adding-more-complexity"]], "Exercise: Analysis of real data": [[8, "exercise-analysis-of-real-data"]], "Exercise: Bias-variance trade-off and resampling techniques": [[8, "exercise-bias-variance-trade-off-and-resampling-techniques"]], "Exercise: Lasso Regression on the Franke function with resampling": [[8, "exercise-lasso-regression-on-the-franke-function-with-resampling"]], "Exercise: Ordinary Least Square (OLS) on the Franke function": [[8, "exercise-ordinary-least-square-ols-on-the-franke-function"]], "Exercise: Ridge Regression on the Franke function with resampling": [[8, "exercise-ridge-regression-on-the-franke-function-with-resampling"]], "Exercises": [[2, "exercises"]], "Exercises and Projects": [[8, "exercises-and-projects"]], "Exercises week 34": [[0, null]], "Exercises week 35": [[1, null]], "Expectation values": [[20, "expectation-values"]], "Extremely useful tools, strongly recommended": [[23, "extremely-useful-tools-strongly-recommended"]], "Feed-forward neural networks": [[14, "feed-forward-neural-networks"]], "Feed-forward pass": [[3, "feed-forward-pass"]], "Final back propagating equation": [[14, "final-back-propagating-equation"]], "Fine-tuning neural network hyperparameters": [[3, "fine-tuning-neural-network-hyperparameters"]], "Fitting an Equation of State for Dense Nuclear Matter": [[2, "fitting-an-equation-of-state-for-dense-nuclear-matter"]], "Fixing the singularity": [[24, "fixing-the-singularity"]], "Frequently used scaling functions": [[24, "frequently-used-scaling-functions"]], "From one to many layers, the universal approximation theorem": [[14, "from-one-to-many-layers-the-universal-approximation-theorem"]], "Functionality in Scikit-Learn": [[24, "functionality-in-scikit-learn"]], "Further Dimensionality Remarks": [[5, "further-dimensionality-remarks"]], "Further properties (important for our analyses later)": [[7, "further-properties-important-for-our-analyses-later"], [24, "further-properties-important-for-our-analyses-later"]], "Gaussian Elimination": [[18, "gaussian-elimination"]], "General Features": [[11, "general-features"]], "General linear models and linear algebra": [[23, "general-linear-models-and-linear-algebra"]], "Generalizing the fitting procedure as a linear algebra problem": [[23, "generalizing-the-fitting-procedure-as-a-linear-algebra-problem"], [23, "id1"]], "Generative Adversarial Networks": [[6, "generative-adversarial-networks"]], "Generative Models": [[6, "generative-models"]], "Generative Versus Discriminative Modeling": [[23, "generative-versus-discriminative-modeling"]], "Geometric Interpretation and link with Singular Value Decomposition": [[13, "geometric-interpretation-and-link-with-singular-value-decomposition"]], "Gradient Boosting, Classification Example": [[12, "gradient-boosting-classification-example"]], "Gradient Boosting, Examples of Regression": [[12, "gradient-boosting-examples-of-regression"]], "Gradient Clipping": [[3, "gradient-clipping"]], "Gradient boosting: Basics with Steepest Descent/Functional Gradient Descent": [[12, "gradient-boosting-basics-with-steepest-descent-functional-gradient-descent"]], "Gradient descent": [[4, "gradient-descent"]], "Grading": [[21, "grading"], [21, "id2"], [23, "grading"]], "How to take derivatives of Matrix-Vector expressions": [[1, "how-to-take-derivatives-of-matrix-vector-expressions"]], "Hyperplanes and all that": [[10, "hyperplanes-and-all-that"]], "Important Matrix and vector handling packages": [[18, "important-matrix-and-vector-handling-packages"]], "Improving performance": [[3, "improving-performance"]], "In summary": [[21, "in-summary"]], "Including Stochastic Gradient Descent with Autograd": [[15, "including-stochastic-gradient-descent-with-autograd"]], "Incremental PCA": [[13, "incremental-pca"]], "Installing R, C++, cython or Julia": [[23, "installing-r-c-cython-or-julia"]], "Installing R, C++, cython, Numba etc": [[23, "installing-r-c-cython-numba-etc"]], "Instructor information": [[21, "instructor-information"]], "Interpretations and optimizing our parameters": [[23, "interpretations-and-optimizing-our-parameters"], [23, "id2"], [23, "id3"], [24, "interpretations-and-optimizing-our-parameters"], [24, "id1"], [24, "id2"]], "Interpreting the Ridge results": [[24, "interpreting-the-ridge-results"]], "Introducing JAX": [[15, "introducing-jax"]], "Introducing the Covariance and Correlation functions": [[13, "introducing-the-covariance-and-correlation-functions"], [24, "introducing-the-covariance-and-correlation-functions"]], "Introduction": [[2, "introduction"], [8, "introduction"], [17, "introduction"], [18, "introduction"]], "Iterative Fitting, Classification and AdaBoost": [[12, "iterative-fitting-classification-and-adaboost"]], "Iterative Fitting, Regression and Squared-error Cost Function": [[12, "iterative-fitting-regression-and-squared-error-cost-function"]], "Kernel PCA": [[13, "kernel-pca"]], "Kernels and non-linearity": [[10, "kernels-and-non-linearity"]], "LU Decomposition, the inverse of a matrix": [[18, "lu-decomposition-the-inverse-of-a-matrix"]], "Layers": [[3, "layers"]], "Layers used to build CNNs": [[5, "layers-used-to-build-cnns"]], "Learning goals": [[0, "learning-goals"], [1, "learning-goals"]], "Learning outcomes": [[17, "learning-outcomes"], [23, "learning-outcomes"]], "Lectures and ComputerLab": [[23, "lectures-and-computerlab"]], "Limitations of supervised learning with deep networks": [[3, "limitations-of-supervised-learning-with-deep-networks"]], "Linear Algebra, Handling of Arrays and more Python Features": [[18, null]], "Linear Regression": [[2, null]], "Linear Regression Problems": [[24, "linear-regression-problems"]], "Linear Regression, basic elements": [[2, "linear-regression-basic-elements"]], "Linking Bayes\u2019 Theorem with Ridge and Lasso Regression": [[7, "linking-bayes-theorem-with-ridge-and-lasso-regression"]], "Linking the regression analysis with a statistical interpretation": [[7, "linking-the-regression-analysis-with-a-statistical-interpretation"]], "Linking with the SVD": [[7, "linking-with-the-svd"], [24, "linking-with-the-svd"]], "Links to relevant courses at the University of Oslo": [[22, "links-to-relevant-courses-at-the-university-of-oslo"]], "Logistic Regression": [[9, null], [9, "id1"]], "MNIST and GANs": [[6, "mnist-and-gans"]], "Machine Learning": [[23, "machine-learning"]], "Machine learning": [[17, "machine-learning"]], "Main textbooks": [[23, "main-textbooks"]], "Making a tree": [[11, "making-a-tree"]], "Making your own Bootstrap: Changing the Level of the Decision Tree": [[12, "making-your-own-bootstrap-changing-the-level-of-the-decision-tree"]], "Making your own test-train splitting": [[24, "making-your-own-test-train-splitting"]], "Mathematical Interpretation of Ordinary Least Squares": [[7, "mathematical-interpretation-of-ordinary-least-squares"], [24, "mathematical-interpretation-of-ordinary-least-squares"]], "Mathematical optimization of convex functions": [[10, "mathematical-optimization-of-convex-functions"]], "Mathematics of CNNs": [[5, "mathematics-of-cnns"]], "Mathematics of the SVD and implications": [[7, "mathematics-of-the-svd-and-implications"], [24, "mathematics-of-the-svd-and-implications"]], "Matrices in Python": [[23, "matrices-in-python"]], "Matrix multiplication": [[3, "matrix-multiplication"]], "Matrix-vector notation and activation": [[14, "matrix-vector-notation-and-activation"]], "Meet the covariance!": [[20, "meet-the-covariance"]], "Meet the Covariance Matrix": [[7, "meet-the-covariance-matrix"], [24, "meet-the-covariance-matrix"]], "Meet the Hessian Matrix": [[24, "meet-the-hessian-matrix"]], "Meet the Pandas": [[23, "meet-the-pandas"]], "Min-Max Scaling": [[24, "min-max-scaling"]], "Momentum based GD": [[15, "momentum-based-gd"]], "More complicated Example: The Ising model": [[8, "more-complicated-example-the-ising-model"]], "More interpretations": [[24, "more-interpretations"]], "More on Dimensionalities": [[5, "more-on-dimensionalities"]], "More on Rescaling data": [[8, "more-on-rescaling-data"]], "More preprocessing": [[24, "more-preprocessing"]], "Multilayer perceptrons": [[14, "multilayer-perceptrons"]], "Network requirements": [[4, "network-requirements"]], "Neural Networks vs CNNs": [[5, "neural-networks-vs-cnns"]], "Neural networks": [[14, null]], "Note about SVD Calculations": [[24, "note-about-svd-calculations"]], "Numerical experiments and the covariance, central limit theorem": [[20, "numerical-experiments-and-the-covariance-central-limit-theorem"]], "Numpy and arrays": [[18, "numpy-and-arrays"], [23, "numpy-and-arrays"]], "Numpy examples and Important Matrix and vector handling packages": [[23, "numpy-examples-and-important-matrix-and-vector-handling-packages"]], "Optimization, the central part of any Machine Learning algortithm": [[15, null]], "Optimizing our parameters": [[23, "optimizing-our-parameters"]], "Optimizing our parameters, more details": [[23, "optimizing-our-parameters-more-details"]], "Optimizing the cost function": [[3, "optimizing-the-cost-function"]], "Organizing our data": [[2, "organizing-our-data"], [23, "organizing-our-data"]], "Other Matrix and Vector Operations": [[18, "other-matrix-and-vector-operations"]], "Other Types of Recurrent Neural Networks": [[6, "other-types-of-recurrent-neural-networks"]], "Other courses on Data science and Machine Learning at UiO": [[23, "other-courses-on-data-science-and-machine-learning-at-uio"]], "Other courses on Data science and Machine Learning at UiO, contn": [[23, "other-courses-on-data-science-and-machine-learning-at-uio-contn"]], "Other popular texts": [[23, "other-popular-texts"]], "Other techniques": [[13, "other-techniques"]], "Other types of networks": [[14, "other-types-of-networks"]], "Other ways of visualizing the trees": [[11, "other-ways-of-visualizing-the-trees"]], "Our model for the nuclear binding energies": [[23, "our-model-for-the-nuclear-binding-energies"]], "Overview of first week": [[23, "overview-of-first-week"]], "Own code for Ordinary Least Squares": [[23, "own-code-for-ordinary-least-squares"], [24, "own-code-for-ordinary-least-squares"]], "PCA and scikit-learn": [[13, "pca-and-scikit-learn"]], "Pandas AI": [[23, "pandas-ai"]], "Partial Differential Equations": [[4, "partial-differential-equations"]], "Plans for week 35": [[24, "plans-for-week-35"]], "Practical tips": [[15, "practical-tips"]], "Practicalities": [[21, "practicalities"], [21, "id1"]], "Predicting New Points With A Trained Recurrent Neural Network": [[6, "predicting-new-points-with-a-trained-recurrent-neural-network"]], "Preprocessing our data": [[24, "preprocessing-our-data"]], "Prerequisites": [[23, "prerequisites"]], "Prerequisites and background": [[17, "prerequisites-and-background"]], "Prerequisites: Collect and pre-process data": [[5, "prerequisites-collect-and-pre-process-data"]], "Probability Distribution Functions": [[20, "probability-distribution-functions"]], "Program for stochastic gradient": [[15, "program-for-stochastic-gradient"]], "Properties of PDFs": [[20, "properties-of-pdfs"]], "Pros and cons of trees, pros": [[11, "pros-and-cons-of-trees-pros"]], "Python installers": [[17, "python-installers"], [23, "python-installers"]], "RMS prop": [[15, "rms-prop"]], "Random Numbers": [[20, "random-numbers"]], "Random forests": [[12, "random-forests"]], "Randomized PCA": [[13, "randomized-pca"]], "Reading material": [[23, "reading-material"]], "Reading recommendations:": [[24, "reading-recommendations"]], "Reading suggestions week 34": [[23, "reading-suggestions-week-34"]], "Recurrent neural networks": [[14, "recurrent-neural-networks"]], "Recurrent neural networks: Overarching view": [[6, null]], "Reducing the number of degrees of freedom, overarching view": [[2, "reducing-the-number-of-degrees-of-freedom-overarching-view"], [24, "reducing-the-number-of-degrees-of-freedom-overarching-view"]], "Reformulating the problem": [[4, "reformulating-the-problem"]], "Regression Case": [[12, "regression-case"]], "Regression analysis, overarching aims": [[23, "regression-analysis-overarching-aims"]], "Regression analysis, overarching aims II": [[23, "regression-analysis-overarching-aims-ii"]], "Regularization": [[3, "regularization"]], "Reminder from last week": [[24, "reminder-from-last-week"]], "Reminder on Statistics": [[8, "reminder-on-statistics"]], "Replace or not": [[15, "replace-or-not"]], "Required Technologies": [[17, "required-technologies"]], "Resampling Methods": [[8, null]], "Resampling methods": [[8, "id1"]], "Residual Error": [[24, "residual-error"]], "Resources on differential equations and deep learning": [[4, "resources-on-differential-equations-and-deep-learning"]], "Revisiting our Linear Regression Solvers": [[15, "revisiting-our-linear-regression-solvers"]], "Rewriting the Covariance and/or Correlation Matrix": [[24, "rewriting-the-covariance-and-or-correlation-matrix"]], "Rewriting the fitting procedure as a linear algebra problem": [[23, "rewriting-the-fitting-procedure-as-a-linear-algebra-problem"]], "Rewriting the fitting procedure as a linear algebra problem, more details": [[23, "rewriting-the-fitting-procedure-as-a-linear-algebra-problem-more-details"]], "Ridge and LASSO Regression": [[24, "ridge-and-lasso-regression"]], "Ridge and Lasso Regression": [[7, null], [7, "id1"]], "Same code but now with momentum gradient descent": [[15, "same-code-but-now-with-momentum-gradient-descent"]], "Schedule first week": [[23, "schedule-first-week"]], "Schematic Regression Procedure": [[11, "schematic-regression-procedure"]], "Setting up the Back propagation algorithm": [[14, "setting-up-the-back-propagation-algorithm"]], "Setting up the Matrix to be inverted": [[24, "setting-up-the-matrix-to-be-inverted"]], "Setting up the network using Autograd; The full program": [[4, "setting-up-the-network-using-autograd-the-full-program"]], "Similar (second order function now) problem but now with AdaGrad": [[15, "similar-second-order-function-now-problem-but-now-with-adagrad"]], "Simple Python Code to read in Data and perform Classification": [[11, "simple-python-code-to-read-in-data-and-perform-classification"]], "Simple case": [[24, "simple-case"]], "Simple linear regression model using scikit-learn": [[2, "simple-linear-regression-model-using-scikit-learn"], [23, "simple-linear-regression-model-using-scikit-learn"]], "Software and needed installations": [[23, "software-and-needed-installations"]], "Solving Differential Equations with Deep Learning": [[4, null]], "Solving the one dimensional Poisson equation": [[4, "solving-the-one-dimensional-poisson-equation"]], "Solving the wave equation with Neural Networks": [[4, "solving-the-wave-equation-with-neural-networks"]], "Some famous Matrices": [[18, "some-famous-matrices"]], "Some simple problems": [[15, "some-simple-problems"]], "Some useful matrix and vector expressions": [[24, "some-useful-matrix-and-vector-expressions"]], "Splitting our Data in Training and Test data": [[2, "splitting-our-data-in-training-and-test-data"], [24, "splitting-our-data-in-training-and-test-data"]], "Standard steepest descent": [[15, "standard-steepest-descent"]], "Statistical analysis and optimization of data": [[17, "statistical-analysis-and-optimization-of-data"], [23, "statistical-analysis-and-optimization-of-data"]], "Steepest descent": [[15, "steepest-descent"]], "Stochastic Gradient Descent (SGD)": [[15, "stochastic-gradient-descent-sgd"]], "Stochastic variables and the main concepts, the discrete case": [[20, "stochastic-variables-and-the-main-concepts-the-discrete-case"]], "Support Vector Machines, overarching aims": [[10, null]], "Systematic reduction": [[5, "systematic-reduction"]], "Teachers": [[23, "teachers"]], "Teachers and Grading": [[21, null]], "Teaching Assistants Fall semester 2023": [[21, "teaching-assistants-fall-semester-2023"]], "Tentative deadllines for projects": [[21, "tentative-deadllines-for-projects"]], "Testing the Means Squared Error as function of Complexity": [[2, "testing-the-means-squared-error-as-function-of-complexity"], [24, "testing-the-means-squared-error-as-function-of-complexity"]], "Textbooks": [[22, null]], "The Algorithm before theorem": [[13, "the-algorithm-before-theorem"]], "The Breast Cancer Data, now with Keras": [[3, "the-breast-cancer-data-now-with-keras"]], "The CART algorithm for Classification": [[11, "the-cart-algorithm-for-classification"]], "The CART algorithm for Regression": [[11, "the-cart-algorithm-for-regression"]], "The CIFAR01 data set": [[5, "the-cifar01-data-set"]], "The Jacobian": [[24, "the-jacobian"]], "The MNIST dataset again": [[5, "the-mnist-dataset-again"]], "The RELU function family": [[3, "the-relu-function-family"]], "The SVD, a Fantastic Algorithm": [[24, "the-svd-a-fantastic-algorithm"]], "The Softmax function": [[3, "the-softmax-function"]], "The \\chi^2 function": [[2, "the-chi-2-function"], [23, "the-chi-2-function"], [23, "id4"], [23, "id5"], [23, "id6"], [23, "id7"], [23, "id8"]], "The bias-variance tradeoff": [[8, "the-bias-variance-tradeoff"]], "The code for solving the ODE": [[4, "the-code-for-solving-the-ode"]], "The complete code with a simple data set": [[24, "the-complete-code-with-a-simple-data-set"]], "The cost/loss function": [[24, "the-cost-loss-function"]], "The course has two central parts": [[17, "the-course-has-two-central-parts"]], "The equations for ordinary least squares": [[24, "the-equations-for-ordinary-least-squares"]], "The logistic function": [[9, "the-logistic-function"]], "The mean squared error and its derivative": [[24, "the-mean-squared-error-and-its-derivative"]], "The moons example": [[10, "the-moons-example"]], "The multilayer perceptron (MLP)": [[14, "the-multilayer-perceptron-mlp"]], "The network with one input layer, specified number of hidden layers, and one output layer": [[4, "the-network-with-one-input-layer-specified-number-of-hidden-layers-and-one-output-layer"]], "The plethora of machine learning algorithms/methods": [[23, "the-plethora-of-machine-learning-algorithms-methods"]], "The singular value decomposition": [[7, "the-singular-value-decomposition"], [24, "the-singular-value-decomposition"]], "The two-dimensional case": [[10, "the-two-dimensional-case"]], "To our real data: nuclear binding energies. Brief reminder on masses and binding energies": [[23, "to-our-real-data-nuclear-binding-energies-brief-reminder-on-masses-and-binding-energies"]], "Topics covered in this course: Statistical analysis and optimization of data": [[23, "topics-covered-in-this-course-statistical-analysis-and-optimization-of-data"]], "Towards the PCA theorem": [[13, "towards-the-pca-theorem"]], "Train and test datasets": [[3, "train-and-test-datasets"]], "Two-dimensional Objects": [[5, "two-dimensional-objects"]], "Type of problem": [[4, "type-of-problem"]], "Types of Machine Learning": [[23, "types-of-machine-learning"]], "Useful Python libraries": [[17, "useful-python-libraries"], [23, "useful-python-libraries"]], "Using Autograd": [[15, "using-autograd"]], "Using forward Euler to solve the ODE": [[4, "using-forward-euler-to-solve-the-ode"]], "Using gradient descent methods, limitations": [[15, "using-gradient-descent-methods-limitations"]], "Visualization": [[3, "visualization"], [3, "id1"]], "Visualizing the Tree, Classification": [[11, "visualizing-the-tree-classification"]], "Week 34: Introduction to the course, Logistics and Practicalities": [[23, null]], "Week 35: From Ordinary Linear Regression to Ridge and Lasso Regression": [[24, null]], "What Is Generative Modeling?": [[23, "what-is-generative-modeling"]], "What does it mean?": [[24, "what-does-it-mean"]], "What is Machine Learning?": [[2, "what-is-machine-learning"]], "What is a good model?": [[2, "what-is-a-good-model"], [23, "what-is-a-good-model"]], "What is a good model? Can we define it?": [[23, "what-is-a-good-model-can-we-define-it"]], "Which activation function should I use?": [[3, "which-activation-function-should-i-use"]], "Why Linear Regression (aka Ordinary Least Squares and family)": [[23, "why-linear-regression-aka-ordinary-least-squares-and-family"]], "Wisconsin Cancer Data": [[9, "wisconsin-cancer-data"]], "Writing Our First Generative Adversarial Network": [[6, "writing-our-first-generative-adversarial-network"]], "Writing our own PCA code": [[13, "writing-our-own-pca-code"]], "XGBoost: Extreme Gradient Boosting": [[12, "xgboost-extreme-gradient-boosting"]], "scikit-learn implementation": [[3, "scikit-learn-implementation"]]}, "docnames": ["E1", "E2", "chapter1", "chapter10", "chapter11", "chapter12", "chapter13", "chapter2", "chapter3", "chapter4", "chapter5", "chapter6", "chapter7", "chapter8", "chapter9", "chapteroptimization", "clustering", "intro", "linalg", "schedule", "statistics", "teachers", "textbooks", "week34", "week35"], "envversion": {"sphinx": 62, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1}, "filenames": ["E1.ipynb", "E2.ipynb", "chapter1.ipynb", "chapter10.ipynb", "chapter11.ipynb", "chapter12.ipynb", "chapter13.ipynb", "chapter2.ipynb", "chapter3.ipynb", "chapter4.ipynb", "chapter5.ipynb", "chapter6.ipynb", "chapter7.ipynb", "chapter8.ipynb", "chapter9.ipynb", "chapteroptimization.ipynb", "clustering.ipynb", "intro.md", "linalg.ipynb", "schedule.md", "statistics.ipynb", "teachers.md", "textbooks.md", "week34.ipynb", "week35.ipynb"], "indexentries": {}, "objects": {}, "objnames": {}, "objtypes": {}, "terms": {"": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 13, 14, 15, 17, 18, 20, 21, 23, 24], "0": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 21, 23, 24], "00": [2, 3, 7, 13, 23, 24], "000": [3, 5], "00000000e": [], "001": [4, 10, 15], "004": 7, "00727646693": [2, 23], "0086649156": [2, 23], "01": [2, 3, 4, 7, 11, 13, 15, 22, 23, 24], "0110": 20, "01719003e": [], "02": [2, 6, 9, 14, 23], "02334824": [], "02857": 6, "02f": 8, "03077640549": 6, "03097597e": [], "031": 7, "04": 13, "0458": 11, "05": [6, 8], "062292565": 6, "062435": [], "06730814": [], "07": [], "0713": [2, 23], "07285": 5, "08": 20, "08078025e": [], "08336233266": 6, "0917": 11, "0n": [2, 23], "1": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22, 23], "10": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 19, 20, 21, 23, 24], "100": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 15, 16, 18, 20, 21, 23, 24], "1000": [2, 3, 4, 6, 7, 10, 13, 15, 16, 17, 20, 23], "10000": [4, 7, 8, 12, 13, 15, 20], "100000": 10, "10001": 12, "1001": 20, "1002": 20, "1003": 20, "1005": 20, "1009": 20, "101": 1, "1011": 20, "1013": 20, "1013904243": 20, "1015": 20, "102": 1, "1023": 20, "1024": 5, "1026": 20, "1027": 20, "103": 3, "1030": 20, "1037": 20, "1038": 20, "1040": 20, "1047": 20, "107": 1, "108": [], "10th": 11, "10x": [2, 23], "11": [1, 2, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 20, 22, 23, 24], "110": [], "1100": 20, "1101": 20, "111": [3, 9, 14], "112": 1, "11340253": [], "11590451": [], "116": 1, "117": 1, "118": 1, "12": [2, 3, 4, 5, 6, 7, 8, 10, 11, 13, 14, 18, 20, 22, 23, 24], "120": 5, "121": [1, 10, 11, 12], "1215pm": [21, 23], "122": [10, 11, 12], "124": [2, 23], "125": 1, "127": [1, 6], "128": [5, 6, 15], "129": 1, "1298": 11, "12pm": [21, 23], "13": [2, 4, 11, 14, 18, 20, 23], "131": 1, "133": 9, "135": 1, "136": 1, "14": [2, 4, 6, 8, 10, 11, 12, 14, 18, 20, 22, 24], "141": 1, "143": 1, "1446729567": 6, "149": 1, "14g": 8, "15": [2, 4, 6, 8, 9, 10, 11, 14, 15, 20, 23], "150": [6, 10], "152": 1, "153760": [], "156": 1, "157": [], "158": [], "159": 1, "15g": 8, "15pm": 23, "16": [3, 4, 5, 6, 7, 10, 11, 12, 20, 23], "160": 1, "1603": 5, "161": 1, "162": 1, "16231451": 6, "163": 1, "16384": 5, "164": 1, "167": 1, "17": [3, 4, 10, 20], "172": 1, "173": 1, "176": 1, "178": 1, "179": 1, "1797": 3, "18": [4, 8, 9, 10, 11, 12, 20, 23], "1807": 6, "18392847": [], "19": [4, 20, 23], "1940": [], "1943": 14, "1970": [18, 23], "1973": 11, "1979": 8, "1_1": 14, "1_2": 14, "1_3": 14, "1cm": [2, 10, 12, 20, 23], "1d": [3, 4, 5], "1e": [4, 6, 15, 16], "1e10": 16, "1e4": 8, "1f": 3, "1k": 18, "1n": [2, 23], "1x": [2, 23], "2": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22], "20": [1, 2, 3, 4, 8, 9, 10, 20, 21, 23, 24], "200": [2, 4, 5, 6, 10, 11, 12], "2000": [2, 24], "2004": 15, "2006": 22, "20072279": [], "2008": 23, "2010": 3, "2011": 3, "2014": 6, "2015": 3, "2016": [2, 23], "2018": [2, 8, 24], "2021": [8, 16], "2022": 23, "2025": [23, 24], "21": [2, 3, 7, 9, 11, 14, 18, 23, 24], "2116753732": 6, "215pm": [21, 23], "2167072": [], "22": [2, 3, 7, 14, 15, 18, 23, 24], "221": 10, "225": 6, "22948497": [], "23": [3, 14, 18], "24": [2, 3, 18, 23], "25": [4, 5, 6, 7, 8, 10, 11, 13, 24], "250": [4, 6, 9, 11], "25000": [], "250154": [], "253775": [], "255": 5, "256": 6, "26": [], "26303845": [], "264": [], "265": [], "265109911": 6, "266": [], "269": [], "27": 3, "270": [], "27n_": 20, "28": [3, 5, 6], "2830637392": 6, "2861": 20, "2873": 11, "2882": 20, "2886": 20, "2890": [2, 23], "2892": 20, "29": 24, "2915": 20, "2931": 23, "29364655": [], "294399745619595": [], "296247": [], "2968": 23, "2980": 23, "298273": [], "298375": [], "2990": 23, "2_": 14, "2_1": 14, "2_2": 14, "2_3": 14, "2_i": 14, "2_m": [8, 20], "2_t": 15, "2_x": 20, "2b": 20, "2cm": 10, "2d": [3, 5, 13, 14, 17, 23], "2e": 8, "2f": [2, 9, 11, 12, 13, 14, 23], "2g": 4, "2g_i": 4, "2k": 5, "2m": 8, "2n": [2, 4, 5, 23, 24], "2nd": 11, "2p": 20, "2pt": 6, "2x": [2, 5, 10, 15, 23], "2x_ix_jy_iy_j": 10, "2x_j": 10, "2y_i": 12, "2y_j": 10, "3": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23], "30": [2, 3, 6, 8, 9, 12, 15, 21], "30000": [2, 23], "3072": 5, "31": [14, 18, 20], "315": 8, "3155": [2, 7, 8, 24], "32": [5, 6, 8, 14, 15, 18, 20], "3200": 3, "3250": 3, "3297": [], "33": [14, 18, 21], "3303": [], "3310": [], "332331": [], "333": 9, "3331": [], "3337": [], "34": 18, "3436": [2, 23], "3437": [2, 23], "35": [2, 8, 23], "3581341341": 6, "359": 7, "36": [2, 7, 8, 20], "370782966": 6, "38": 20, "39": [2, 21, 23], "3d": [1, 4, 5, 6, 8, 15], "3f": [3, 5, 11], "3n": 18, "3x": [4, 10], "3x_i": 4, "3y": 10, "4": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 23], "40": [3, 8, 21, 23], "400": 6, "4000": 23, "4050": [22, 23], "41": 18, "4155": [0, 4], "41589548": [], "42": [3, 6, 10, 11, 12, 18], "43": [2, 9, 18], "4310": 23, "436462435": 6, "44": [2, 18], "45": [21, 23], "46": [21, 23], "462": 9, "47": [21, 23], "479465113": 6, "47958494": [], "48": [], "48257387": [21, 23], "49": [7, 8, 13], "49152": 5, "4940954": [2, 23], "4990": 20, "4992": 20, "4997": 20, "4c4c7f": [11, 12], "4d": 5, "4f": 8, "4pm": [21, 23], "4y": 10, "4y_i": 12, "5": [0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 23, 24], "50": [3, 4, 5, 6, 8, 9, 10, 12, 15, 23, 24], "500": [3, 5, 6, 8, 11, 12, 15], "5018": 20, "506": [], "507d50": [11, 12], "50j": 15, "50x10": 3, "51": 12, "510": 3, "512132": [], "5177783846": 6, "53": 11, "54": [8, 20], "5411205": [], "54894451": [], "55": 3, "56": 3, "56536": [2, 23], "569": 3, "57": [2, 10, 21, 23], "571": 7, "58": [12, 21, 23], "591317992": 6, "5cm": 20, "5f": 10, "5x": 10, "5y": 10, "6": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 18, 20, 21, 23, 24], "60": [3, 5], "60000": 6, "6019067271": 6, "606439": [], "625": 9, "63": 3, "64": [3, 5, 6, 15, 18, 23], "64x50": 3, "65": [3, 10, 11], "6887363571": 6, "69": [1, 20], "69069n_": 20, "691": [], "6n_": 20, "7": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 18, 20, 22, 23], "70": [3, 9], "70653767": 6, "71": 3, "724": 5, "73": [], "7304881": [], "75": [7, 8, 10, 13], "76": [21, 23], "765": 9, "77": [21, 23], "7718": 11, "7782028952": 6, "77893972": [], "78": [], "7d7d58": [11, 12], "8": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 18, 20, 21, 23], "80": [2, 3, 7, 10, 24], "800": [6, 9], "81": 3, "815am": [21, 23], "85": 3, "8702784034": 6, "88": 23, "8f": 8, "8g": 8, "8n": 18, "8x8": 3, "9": [2, 3, 4, 6, 7, 8, 9, 10, 11, 13, 14, 15, 18, 20, 23], "90": 3, "9040": 11, "91": [21, 23], "92": [21, 23], "93": 1, "931": [2, 23], "933": 7, "937": 20, "938": 20, "939": [2, 20, 23], "94": 20, "95": [3, 13], "954": 20, "955820c21e8b": 6, "96": 8, "960": 20, "961": 20, "962": 20, "9649652536": 6, "96611194e": [], "9780387310732": 22, "9780387848570": 22, "9781098134174": 23, "9781492032632": 22, "9781801819312": 23, "98": [1, 2, 3], "985": 20, "986": 20, "989": 20, "9898ff": [11, 12], "99": [1, 15], "991": 20, "992": 20, "993": 20, "996": 7, "999": [11, 20], "9x": 8, "9y": 8, "A": [0, 1, 4, 5, 7, 8, 9, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 24], "AND": 4, "And": [2, 5, 6, 7, 8, 11, 15, 17, 20], "As": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 15, 18, 20, 23, 24], "At": [2, 6, 8, 15, 23], "BE": [2, 23], "Be": [4, 17, 23], "Being": 15, "But": [1, 2, 3, 4, 5, 7, 8, 11, 12, 20, 24], "By": [2, 5, 7, 8, 14, 15, 18, 23, 24], "For": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 23, 24], "IF": 8, "IN": 22, "If": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 20, 23, 24], "In": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 23, 24], "Ising": [7, 14, 24], "It": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 24], "Its": [3, 4, 6, 13], "No": [8, 11, 23], "Not": [2, 3, 7, 8, 24], "OR": 20, "Of": 20, "On": [2, 5, 20, 21, 22, 23], "One": [2, 3, 5, 6, 7, 8, 9, 10, 13, 14, 15, 20, 24], "Or": [2, 3, 8, 23], "Such": [1, 2, 8, 14, 20], "That": [2, 7, 9, 12, 13, 14, 16, 20, 23], "The": [1, 6, 12, 15, 16, 18, 19, 20, 21, 22], "Then": [0, 1, 2, 3, 8, 10, 11, 12, 13, 14, 15, 16, 18, 23], "There": [0, 2, 5, 6, 7, 8, 10, 11, 13, 14, 16, 18, 20, 21, 23, 24], "These": [2, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 18, 20, 21, 23, 24], "To": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 20, 24], "With": [1, 2, 7, 8, 10, 11, 12, 13, 14, 16, 18, 20, 23, 24], "_": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 23, 24], "_0": [7, 10, 12, 13, 15, 24], "_1": [4, 7, 8, 10, 12, 13, 14, 15, 16, 18, 24], "_2": [4, 7, 10, 13, 14, 15, 18, 24], "_3": 18, "_4": 18, "_9": 15, "__class__": 12, "__doc__": 8, "__future__": [10, 11], "__init__": 3, "__main__": 4, "__name__": [4, 12], "_auto1": [4, 5, 6, 7, 8, 9, 14, 15, 18, 20, 24], "_auto10": [8, 14], "_auto11": 8, "_auto12": 8, "_auto2": [4, 5, 6, 7, 8, 14, 15, 18, 20], "_auto3": [5, 6, 7, 8, 14, 15, 18], "_auto4": [6, 8, 14, 15, 18], "_auto5": [6, 8, 14, 15, 18], "_auto6": [6, 8, 14, 18], "_auto7": [6, 8, 14, 18], "_auto8": [8, 14], "_auto9": [8, 14], "_build": [2, 17, 22, 23], "_c": 3, "_compon": 13, "_depth": 11, "_export": [0, 1], "_fraction": 11, "_i": [2, 3, 4, 7, 8, 9, 10, 13, 14, 15, 23, 24], "_j": [2, 3, 4, 5, 7, 8, 10, 15, 24], "_k": 15, "_l": 14, "_lambda": 8, "_leaf": 11, "_m": 12, "_multilayer_perceptron": [], "_n": [4, 7, 10, 13, 15, 24], "_node": 11, "_p": [7, 10, 24], "_ratio": 13, "_sampl": 11, "_split": [8, 11], "_t": 15, "_test": 8, "_varianc": 13, "_weight": 11, "a0": 5, "a0faa0": [11, 12], "a1": [2, 23], "a2": [2, 23], "a3": [2, 23], "a4": [2, 23], "a_": [1, 2, 3, 18, 23, 24], "a_0": [2, 23], "a_1a": [2, 23], "a_2a": [2, 23], "a_3": [2, 23], "a_3a": [2, 23], "a_4": [2, 23], "a_4a": [2, 23], "a_h": 3, "a_i": [2, 3, 4, 14, 23], "a_j": [3, 14], "a_k": [2, 3, 14], "aaron": 22, "ab": [2, 4, 7, 15, 16, 23, 24], "ab_channel": 17, "abandon": 3, "abid": 20, "abil": [2, 12], "abl": [1, 2, 3, 6, 7, 8, 9, 12, 14, 15, 24], "about": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 21], "abov": [0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 22, 23, 24], "abovement": [8, 23], "abscissa": 15, "absolut": [2, 4, 7, 8, 15, 23, 24], "absorb": 24, "abstract": 3, "acceler": 15, "accept": [2, 5, 8, 11, 24], "access": [5, 13, 20, 23], "accid": [6, 8], "accompani": [2, 23, 24], "accomplish": [10, 11, 15], "accord": [2, 3, 4, 7, 8, 11, 14, 15, 16, 20, 23], "accordingli": 13, "account": [0, 1, 2, 5, 7, 15, 20, 23], "accumul": [14, 15, 20], "accur": [2, 5, 6, 8, 12, 15], "accuraci": [2, 3, 5, 6, 7, 8, 9, 11, 12, 13, 14, 23, 24], "accuracy_scor": [2, 3, 12, 23], "accuracy_score_numpi": 3, "achiev": [2, 3, 7, 8, 10, 14, 18, 23], "aco": 20, "acquaint": 17, "acquir": [3, 17, 23], "acr": [], "across": [3, 5, 8, 11, 17, 23], "act": [3, 5, 18], "action": 20, "activ": [0, 2, 4, 5, 6, 11, 19, 21, 23], "actual": [0, 1, 2, 3, 6, 7, 8, 10, 13, 18, 20, 23, 24], "ad": [0, 1, 3, 5, 6, 7, 10, 15, 18], "ada_clf": 12, "adaboostclassifi": 12, "adadelta": 15, "adam": [3, 5, 6, 23], "adapt": [6, 8, 15, 22], "add": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 13, 14, 20, 21, 23, 24], "add_subplot": [3, 9, 14, 16], "addendum": 7, "addit": [0, 2, 4, 5, 7, 8, 9, 10, 11, 12, 14, 15, 17, 18, 20, 21, 22, 23, 24], "addition": [14, 15], "address": [3, 11, 13, 15, 23], "adjac": [5, 14], "adjoint": [7, 24], "adjust": [2, 7, 14, 15], "admir": [2, 23], "advanc": [6, 8, 14, 22, 23], "advantag": [3, 5, 7, 8, 12, 15, 18], "adversari": 23, "afecionado": 23, "affect": [0, 5], "affin": [2, 5, 10, 13, 24], "afford": 5, "aficionado": 23, "aforement": 16, "african": [], "after": [0, 1, 2, 3, 4, 6, 7, 8, 11, 13, 14, 15, 17, 18, 20, 23, 24], "afterward": [2, 23], "ag": [2, 9, 23, 24], "ag_0": 4, "again": [2, 3, 6, 7, 8, 9, 10, 12, 13, 14, 15, 20, 23, 24], "against": [3, 6, 9, 12], "agegroup": 9, "agegroupmean": 9, "aggreg": [11, 12], "agorithm": 12, "agre": [7, 8, 20, 24], "agreement": 15, "ahead": 11, "ai": [2, 22], "aid": 13, "aim": [1, 2, 3, 6, 8, 9, 13, 16, 17, 18, 24], "ainv": 7, "airplan": 5, "aka": 7, "al": [1, 2, 4, 6, 22, 23, 24], "alarm": [7, 9], "aldo": 24, "algebra": [2, 5, 7, 15, 17, 24], "algorithm": [1, 2, 3, 4, 6, 7, 8, 9, 10, 15, 16, 17, 18, 20, 22], "align": [2, 4, 7, 8, 9, 10, 15, 20, 23, 24], "all": [0, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24], "allevi": [3, 15], "alloc": [5, 18], "allow": [0, 2, 3, 4, 5, 7, 8, 10, 12, 15, 17, 18, 23, 24], "almost": [2, 3, 8, 10, 13, 15, 20], "alon": [4, 11], "along": [0, 4, 5, 6, 7, 8, 11, 12, 13, 17, 18, 23, 24], "alpha": [2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 15, 16, 20, 23, 24], "alpha_": 12, "alpha_0": 5, "alpha_1": 5, "alpha_2": 5, "alpha_i": [5, 15], "alpha_k": 15, "alpha_m": 12, "alpha_n": 5, "alpha_opt": 15, "alreadi": [0, 4, 5, 6, 7, 8, 12, 14, 17, 18, 20, 23, 24], "also": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 24], "alter": 3, "altern": [0, 2, 3, 6, 7, 8, 10, 11, 13, 15, 18, 23, 24], "although": [1, 2, 3, 7, 8, 10, 12, 15, 23], "alwai": [1, 2, 5, 7, 8, 14, 15, 20, 23, 24], "am": 6, "ame2016": [2, 23], "american": [], "among": [2, 5, 7, 11, 12, 14, 18, 23, 24], "amongst": 7, "amount": [2, 3, 5, 6, 8, 10, 12, 16, 17], "an": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 18, 20, 21, 22, 24], "an_": 20, "anaconda": [2, 3, 17, 23], "analogi": 15, "analys": 8, "analysi": [3, 5, 6, 9, 16, 18, 22], "analyt": [4, 5, 7, 8, 9, 14, 15, 17, 23, 24], "analyz": [1, 2, 3, 5, 6, 7, 8, 20, 24], "andrew": 3, "angl": [2, 5, 11, 24], "anharmon": 5, "ani": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 20, 23, 24], "anim": [6, 14], "ann": 14, "annot": [2, 3, 5, 9, 10, 23], "announc": 23, "anoth": [0, 2, 3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 18, 20, 23, 24], "ansatz": [2, 23], "answer": [2, 3, 5, 7, 8, 18, 21, 23], "antialias": [4, 8], "anticip": 6, "anymor": [3, 10], "anyon": [0, 6, 10], "anyth": [0, 1, 3, 20], "anytim": [21, 23], "apach": 3, "apart": [13, 15], "api": [3, 17, 23], "appar": 4, "appear": [2, 3, 5, 15, 18, 20], "append": [3, 5, 6, 10, 11, 15, 23], "appli": [2, 3, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 20, 22, 23, 24], "applic": [1, 2, 3, 5, 6, 7, 8, 9, 11, 14, 15, 18, 20, 22, 23, 24], "apply_gradi": 6, "approach": [0, 1, 3, 4, 6, 7, 8, 11, 12, 13, 14, 15, 17, 20, 22, 24], "appropri": [4, 8, 11, 14, 15, 17, 20], "approv": 23, "approx": [2, 4, 5, 8, 12, 13, 15, 20, 23], "approxim": [2, 3, 4, 5, 6, 7, 8, 9, 12, 13, 15, 20, 23, 24], "apt": [2, 17, 23], "aq": 20, "ar": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24], "aragorn": 23, "arang": [3, 5, 6, 8, 9, 11, 12, 14, 15, 23], "arbitrari": [3, 6, 8, 10, 14, 15, 20], "arbitrarili": [2, 3, 13, 23], "arc": 8, "architectur": [5, 6, 14], "area": [2, 5, 8, 22, 23], "argmax": [3, 13], "argmin": [6, 12, 16], "argsort": 13, "argu": [3, 15], "argument": [2, 4, 5, 7, 13, 14, 15, 23, 24], "aris": [2, 8, 14, 15, 20, 23], "arithmet": [2, 15, 18, 23], "arm": 8, "armadillo": 18, "around": [2, 3, 6, 7, 8, 13, 20, 23], "arrai": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 14, 15, 16, 17, 20, 24], "arrang": [5, 23], "arraybox": 15, "arriv": [2, 8, 11, 13, 18, 20, 23], "arrow": 14, "arrowprop": 10, "art": [2, 3, 17], "articl": [2, 5, 6, 8, 12, 23, 24], "artifici": [2, 4, 9, 14, 22, 23], "artificialneuron": 14, "arug": 15, "arxiv": [5, 6], "asarrai": [2, 8, 11], "asid": 24, "ask": [0, 7, 8, 13, 14], "aspect": [2, 8, 17, 23], "assembl": 5, "assembli": [2, 23], "assert": 6, "assess": [2, 8, 23], "assici": 6, "assign": [0, 2, 9, 10, 11, 14, 15, 16, 19, 21, 22, 23], "associ": [2, 8, 11, 14, 16, 20, 23], "assum": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 23, 24], "assumpt": [2, 5, 7, 8, 11, 13, 20, 23], "ast": [2, 7, 8, 23], "astyp": [6, 11, 12], "asymmetri": [2, 23], "asymptot": [6, 8], "atom": [2, 23], "attempt": [2, 6, 8, 9, 10, 12, 23], "attend": 23, "attent": [2, 18, 23], "attract": [2, 12, 23], "attribut": [2, 11, 23], "audi": [2, 23], "audio": [5, 6], "august": [23, 24], "aurelien": [2, 22, 23], "austfjel": 8, "auth": 0, "authent": 0, "author": [2, 3, 12, 20], "authour": 23, "auto": [11, 12, 20], "autocor": 20, "autocorrelation_tim": 20, "autocorrelform": 20, "autocovari": 20, "autoencod": [6, 17, 23], "autoencond": 17, "autograd": [17, 23], "autom": [2, 17, 22, 23], "automac": 18, "automag": 23, "automat": [1, 2, 3, 4, 5, 6, 13, 17, 18, 23], "automobil": 5, "autonom": 6, "avail": [2, 3, 6, 8, 12, 13, 17, 18, 19, 21, 22, 23], "averag": [2, 3, 5, 8, 11, 12, 15, 16, 20, 21, 23], "avoid": [2, 6, 7, 8, 11, 13, 15, 18, 24], "awai": [4, 5, 8, 24], "awar": [4, 12], "award": [21, 23], "ax": [2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 23], "axes3d": [4, 8, 15], "axes_grid1": 8, "axhlin": 10, "axi": [2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 23], "axiom": 7, "axvlin": [6, 10], "axvspan": 6, "b": [0, 1, 2, 3, 5, 6, 7, 8, 10, 11, 12, 14, 15, 16, 20, 21, 23, 24], "b1": 10, "b2": 10, "b3": 10, "b_": [2, 3, 18], "b_0": 2, "b_1": [2, 4, 14, 15], "b_2": [2, 15], "b_5": 15, "b_group": 11, "b_i": [2, 3, 4, 14, 23], "b_ia_": [2, 23], "b_ia_i": 2, "b_index": 11, "b_j": [3, 14], "b_k": [2, 3, 14, 15], "b_m": 14, "b_score": 11, "b_valu": 11, "babcock": 23, "bachelor": [19, 21], "back": [0, 1, 2, 5, 6, 7, 8, 10, 11, 12, 18, 20, 23], "backbon": 18, "backend": [3, 6], "background": [22, 23], "backpropag": 3, "backtrack": 11, "backup": 18, "backward": [3, 4, 6, 14, 18], "bad": 8, "badli": 20, "bag": [11, 17, 23], "bag_clf": 12, "baggin": 23, "baggingboot": 12, "baggingclassifi": 12, "baggingtre": 12, "balanc": 8, "band": 18, "bandwidth": 18, "bar": [2, 8, 13, 23], "barber": 22, "bare": [6, 12], "base": [0, 1, 2, 3, 5, 6, 7, 9, 10, 11, 12, 16, 17, 20, 21, 22, 23, 24], "basi": [7, 9, 10, 12, 13, 14, 15, 18, 24], "basic": [0, 8, 10, 14, 15, 16, 17, 20, 23], "batch": [5, 6, 13, 14, 15], "batch_shap": 6, "batch_siz": [3, 5, 6], "batchnorm": 6, "bay": 9, "bayesian": [7, 17, 22, 23], "becaus": [2, 3, 4, 5, 6, 7, 8, 10, 11, 14, 15, 16, 23], "becom": [2, 3, 4, 7, 8, 9, 11, 14, 15, 20, 23, 24], "been": [2, 3, 4, 5, 6, 7, 8, 13, 14, 15, 17, 18, 23], "befor": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 14, 15, 16, 18, 20, 23, 24], "beforehand": [2, 20, 23], "begin": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 18, 20, 21, 23, 24], "behav": [3, 8, 15], "behavior": [2, 3, 15, 23], "behaviour": 14, "behind": [2, 3, 8, 10, 15, 23], "being": [2, 3, 4, 5, 6, 7, 9, 10, 12, 13, 14, 15, 20, 23, 24], "believ": [11, 18], "belong": [9, 10, 11, 15, 16], "below": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 20, 23, 24], "benchmark": 12, "benefici": [3, 15], "benefit": [2, 3, 6, 13, 15, 17, 23], "bengio": [3, 22, 23, 24], "benign": [3, 9], "besid": [6, 7], "bessel": [7, 24], "best": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 21, 23, 24], "beta": [1, 3, 5, 12, 13, 15, 23], "beta_": [5, 15], "beta_0": [3, 5, 15], "beta_1": [3, 5, 12, 15], "beta_1x_i": 15, "beta_2": [5, 15], "beta_3": 5, "beta_i": 5, "beta_j": 15, "beta_k": 15, "beta_linreg": 15, "beta_m": 12, "beta_mg_m": 12, "beta_n": 5, "better": [2, 3, 4, 5, 6, 8, 11, 12, 13, 14, 15, 23, 24], "between": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 20, 23, 24], "beyond": [2, 3, 7, 8, 10, 15, 23, 24], "bf": [15, 16, 18, 20], "bg": 23, "bgd": 15, "bia": [2, 3, 4, 5, 7, 10, 11, 12, 14, 15, 23, 24], "bias": [3, 4, 5, 7, 8, 11, 14], "big": [2, 3, 4, 7, 8, 16], "bigger": [3, 8], "bigr": 14, "bike": 11, "bilbo": 23, "billion": [5, 14, 17], "bin": [9, 20], "binari": [2, 5, 7, 9, 11, 12, 14, 23], "binarycrossentropi": 6, "bind": 2, "binomi": [17, 20, 23], "binsboot": 8, "bioinformat": 2, "biolog": [3, 14], "bios1100": [17, 23], "bird": [2, 5], "birth": 23, "bishop": [22, 23], "bit": [3, 6, 18, 20, 23], "bitwis": 20, "bivari": 4, "bk": 15, "bla": [18, 23], "black": [10, 11, 16], "block": [8, 12, 17, 18, 20, 23], "blog": 23, "blogpost": 6, "blue": [2, 5], "bmatrix": [2, 3, 5, 7, 9, 10, 13, 15, 18, 23, 24], "bmi": 3, "bodi": [2, 3, 6, 14], "bold": 3, "boldfac": [1, 2, 7, 24], "boldsymbol": [1, 2, 3, 4, 5, 7, 8, 9, 10, 12, 13, 15, 16, 23], "boltzmann": [14, 17, 23], "book": [22, 23, 24], "book1": 22, "boolean": 6, "boost": [3, 11, 17, 23], "boostrap": 12, "bootstrap": [3, 15, 17, 23], "borrow": 23, "boston_dataset": [], "bot": 10, "both": [0, 1, 2, 3, 6, 7, 8, 10, 11, 12, 15, 16, 17, 18, 20, 21, 23, 24], "bottl": 9, "bound": [10, 14], "boundari": [4, 6, 10, 13, 14], "box": [6, 11], "boyd": [10, 15], "bracket": [6, 20], "brain": [3, 9, 14], "branch": [11, 23], "break": [2, 6, 8, 13, 16, 23], "breast": [7, 9, 13], "breviti": 15, "brew": [2, 17, 23], "brg": 10, "brief": 24, "briefli": [1, 2, 23], "bring": [2, 7, 8, 12], "britt": [21, 23], "broad": 2, "broadli": 23, "brought": [15, 17, 23], "brownle": 6, "browser": [0, 23], "brute": [5, 7, 13, 24], "buffer_s": 6, "bui": 6, "build": [1, 2, 6, 7, 8, 12, 18, 20, 23], "built": [3, 5, 6, 8], "bunch": 13, "busi": [], "byte": [18, 23], "c": [0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24], "c1": [10, 13], "c2": [10, 13], "c_": [10, 11, 12, 15, 20], "c_0": 20, "c_1": 14, "c_2": 14, "c_3": 14, "c_4": 14, "c_i": [14, 15], "c_k": 20, "ca": [3, 23], "cach": 12, "cal": [2, 10, 12, 14, 15], "calcul": [1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 18, 20, 23], "call": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 23, 24], "calor": [2, 24], "cambridg": [15, 22], "can": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 24], "cancel": [2, 15, 23, 24], "cancer": [7, 12], "cancerpd": 9, "candid": [10, 11, 12], "cannot": [2, 3, 6, 7, 8, 9, 10, 11, 20, 24], "canopi": [2, 17, 23], "canva": [0, 1, 23], "cap": 7, "capabl": [2, 3, 10, 15, 17, 23], "capac": [4, 21], "capita": [], "captur": [6, 13, 14, 23], "car": [5, 6], "card": [2, 9, 23], "cardin": 3, "care": [0, 13], "carefulli": 15, "carlo": [2, 8, 17, 20, 22, 23], "carri": [4, 8, 9], "cart": 12, "case": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13, 14, 15, 16, 17, 18, 23], "casella": 22, "cast": 3, "cat": [5, 6], "catch": 2, "categor": [2, 3, 5, 11, 13, 23], "categori": [2, 3, 5, 9, 12, 14, 16, 23], "categorical_crossentropi": [3, 5], "caus": [2, 7, 8, 20, 23, 24], "causal": 2, "causat": [2, 23], "cax": 3, "cb": [8, 23], "cbar": 3, "cc": [2, 3, 7, 15, 23, 24], "ccc": [7, 14], "cdf": 20, "cdot": [2, 4, 8, 14, 15, 16, 18, 20, 23], "celebr": 15, "cell": 6, "center": [2, 3, 8, 9, 10, 11, 13, 16, 20, 23], "central": [1, 2, 5, 7, 8, 10, 18, 23, 24], "centroid": [16, 20], "centroid_differ": 16, "centuri": 5, "certain": [2, 5, 8, 9, 11, 20, 23, 24], "cg": 15, "cha": [], "chain": [2, 3, 15, 17, 20, 23], "challeng": 0, "chanc": [3, 7, 15, 20], "chang": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 13, 14, 15, 16, 18, 20, 23, 24], "channel": 5, "chapter": [1, 2, 8, 12, 13, 18, 22, 23, 24], "chapter3": 2, "charact": [2, 5, 7, 23, 24], "character": [10, 11, 12, 14, 20], "characterist": [2, 3, 5, 12, 15, 23], "charg": [2, 23], "charl": [], "chase": 6, "chatgpt": 0, "chd": 9, "chddata": 9, "cheap": [7, 24], "cheaper": [3, 15], "check": [0, 1, 3, 5, 6, 7, 13, 15, 18, 23], "checkmark": 5, "checkpoint": 6, "checkpoint_dir": 6, "checkpoint_prefix": 6, "chen": 12, "cheng": 24, "chiaramont": 4, "childcar": 1, "children": 1, "choic": [2, 3, 4, 5, 6, 8, 11, 14, 15, 16, 18, 23, 24], "choleski": [7, 18, 24], "choos": [0, 4, 5, 8, 11, 12, 13, 15, 16], "chosen": [1, 2, 3, 4, 8, 10, 11, 12, 15, 20, 23], "chosen_datapoint": 3, "christian": 22, "christoph": [22, 23], "cifar": 5, "cifar10": 5, "circ": [3, 14], "circl": [2, 10, 14, 24], "circuit": 5, "circumfer": 11, "circumv": [3, 7, 15, 24], "ckpt": 6, "clariti": 20, "class": [2, 3, 5, 6, 8, 9, 10, 11, 13, 14, 15, 20, 23], "class_nam": [5, 11], "class_val": 11, "class_valu": 11, "classic": [9, 11, 15], "classif": [2, 5, 7, 8, 9, 10, 13, 14, 17, 22, 23, 24], "classifi": [2, 3, 6, 9, 11, 12, 13, 23], "classificaton": 3, "classifii": 12, "clean": 3, "clear": [3, 7, 12, 14, 15], "clearli": [2, 5, 7, 8, 9, 10, 20], "clever": [3, 12], "clf": [2, 8, 10, 11, 12, 23, 24], "clf3": 2, "clf_lasso": 8, "clf_ridg": 8, "cli": 0, "clip": [5, 20], "clone": [0, 21], "close": [2, 3, 4, 6, 8, 10, 11, 13, 14, 15, 16, 20, 22, 23], "closer": [5, 7, 15, 24], "closest": [10, 13, 15, 16], "closur": [17, 23], "cloud": [17, 23], "cluster": [2, 3, 6, 8, 13, 17, 23], "cluster_label": 16, "cm": [3, 4, 5, 8, 10, 15], "cmap": [2, 3, 4, 5, 6, 8, 10, 11, 12, 23], "cmap_arg": 8, "cmd": [0, 11], "cn_": 20, "cnn": 14, "cnn_kera": 5, "cntk": [17, 23], "co": [2, 4, 5, 8, 11, 15, 23], "code": [2, 5, 6, 8, 9, 10, 17, 18, 20, 22], "coef": [2, 23], "coef0": 10, "coef_": [1, 2, 7, 8, 10, 11, 15, 23, 24], "coeff": 7, "coeffici": [2, 5, 7, 8, 9, 10, 11, 15, 18, 23], "coerc": [2, 8, 23], "coin": [12, 20], "coin_toss": 12, "col": [2, 13, 23, 24], "colab": [17, 23], "cold": 11, "colinear": [], "collaps": 10, "collect": [4, 8, 12, 13, 17, 20, 22, 23], "collinear": [7, 24], "color": [2, 5, 6, 8, 10, 11, 12, 20], "color_channel": 5, "color_cod": 8, "colorbar": [3, 8], "colsample_bytre": 12, "colsaobject": 12, "column": [1, 2, 3, 4, 7, 8, 9, 10, 11, 13, 14, 18, 23, 24], "columntransform": 11, "com": [0, 1, 6, 8, 17, 22, 23], "combin": [0, 3, 4, 7, 8, 9, 12, 20], "come": [0, 2, 3, 5, 6, 7, 14, 15, 16, 23, 24], "command": [0, 2, 3], "comment": [2, 6, 7, 8], "commerci": [2, 17, 23], "commit": 0, "commod": [2, 23], "common": [1, 2, 3, 5, 7, 8, 9, 11, 13, 15, 16, 20, 23, 24], "commonli": [2, 3, 6, 8, 9, 11, 15, 16, 24], "commun": [0, 2, 14], "commut": 5, "commutatitav": 5, "compact": [2, 3, 5, 7, 8, 9, 11, 13, 14, 15, 16, 23, 24], "compair": 2, "compar": [2, 5, 6, 7, 8, 13, 15, 18, 23, 24], "comparison": [4, 6, 15], "compat": 9, "compet": 2, "competit": 12, "compil": [2, 3, 5, 6, 15, 17, 18, 23], "complet": [0, 1, 2, 4, 5, 6, 11, 14, 23], "completenn": 14, "complex": [1, 3, 7, 10, 11, 13, 14, 15, 23], "complic": [2, 3, 11, 15, 23], "compoment": 24, "compon": [1, 2, 3, 5, 6, 7, 8, 9, 11, 16, 17, 23, 24], "components_": 13, "compos": [11, 14, 15, 16, 17, 23], "compphys": [1, 2, 8, 17, 19, 21, 22, 23], "compress": [2, 23, 24], "compris": 8, "compromis": [7, 24], "compulsori": [17, 23], "comput": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 17, 18, 19, 20, 22, 23, 24], "computation": [2, 5, 8, 11, 15, 20, 23], "computationalscienceuio": 23, "concaten": [4, 6, 8, 16], "concav": [3, 15, 24], "concentr": 12, "concept": [2, 4, 17, 23, 24], "conceptu": [14, 15], "concern": [2, 3, 6, 9, 23], "concic": 23, "conclud": [2, 7, 15], "conclus": 3, "cond": 4, "conda": [2, 3, 17, 23], "condis": 24, "condit": [2, 4, 6, 7, 8, 10, 11, 13, 15, 20, 23, 24], "conduct": 17, "condwav": 4, "confid": [2, 7, 8, 9, 10, 23, 24], "configur": 5, "confirm": [7, 14], "confus": [7, 8, 9, 12, 18], "confusion_matrix": 11, "congruenti": 20, "conjug": [6, 10], "conjugaci": 15, "conjunct": 5, "connect": [2, 3, 5, 6, 11, 13, 14, 15, 18, 23, 24], "consequ": [7, 8, 10, 12, 14, 15, 24], "conserv": [7, 16, 24], "consid": [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 14, 15, 18, 20, 23, 24], "consider": [2, 3, 7, 15, 23, 24], "consist": [3, 4, 5, 6, 8, 14, 15, 20, 24], "constant": [1, 2, 4, 6, 7, 8, 10, 14, 15, 20, 23, 24], "constitu": [2, 23], "constitut": [4, 8], "constrain": [3, 5, 7, 9, 13], "constraint": [7, 8, 10, 15, 24], "construct": [2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 18, 20, 23, 24], "contact": [2, 23], "contain": [0, 2, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 18, 20, 22, 23, 24], "contemporari": 23, "content": [0, 3, 17, 18, 23], "context": [8, 12, 15], "contigu": 18, "continu": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 18, 20, 23, 24], "contour": [11, 12, 15], "contourf": [10, 11, 12], "contrast": [3, 6, 11, 12, 14, 23], "contribut": [2, 5, 7, 15, 20, 23, 24], "contributor": 2, "control": [0, 2, 3, 5, 11, 15, 17, 23], "conv": [5, 6], "conv2d": [5, 6], "conv2dtranspos": 6, "convei": 23, "conveni": [7, 8, 14, 15, 18, 23], "convent": [14, 24], "converg": [3, 4, 6, 7, 10, 15, 16, 24], "convergencewarn": [], "convert": [2, 3, 6, 7, 11, 13, 15, 18, 23, 24], "converttomatrix": 6, "convex": [6, 7, 9, 24], "convinc": 15, "convolut": [3, 6, 17, 23], "cool": [6, 11], "coolwarm": 8, "coordin": [7, 14, 16, 24], "coorel": [], "copi": [0, 2, 3, 16, 24], "core": 12, "corel": 23, "coronari": 9, "corr": [7, 9, 13, 24], "correalt": [13, 17], "correct": [0, 2, 3, 4, 5, 6, 7, 9, 15, 18, 20, 23, 24], "correctli": [3, 4, 8, 9, 12], "correl": [2, 3, 5, 7, 8, 9, 12, 14, 15, 17, 20, 23], "correlation_matrix": [7, 9, 13, 24], "correspond": [2, 5, 7, 8, 10, 11, 13, 14, 17, 18, 20, 23, 24], "cortex": 14, "cosin": [5, 8], "cost": [1, 2, 4, 5, 7, 8, 9, 10, 11, 14, 15, 23], "cost_deep_grad": 4, "cost_funct": 4, "cost_function_deep": 4, "cost_function_deep_grad": 4, "cost_function_grad": 4, "cost_grad": 4, "cost_sum": 4, "costol": 15, "could": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 20, 23, 24], "coulomb": [2, 23], "count": [0, 2, 11, 19, 20, 21, 23], "counterpart": 23, "countor": 15, "coupl": [6, 7, 8], "cours": [0, 1, 2, 3, 5, 7, 13, 21, 24], "coursework": 0, "courvil": [22, 23, 24], "cov": [7, 8, 13, 18, 20, 23, 24], "cov_xi": [7, 13, 24], "cov_xx": [7, 13, 24], "cov_yi": [7, 13, 24], "covari": [2, 9, 17, 18, 23], "covariance_matrix": [7, 13, 16], "cover": [2, 7, 17, 21, 22, 24], "covert": [2, 23], "covxi": 20, "covxx": 20, "covxz": 20, "covyi": 20, "covyz": 20, "covzz": 20, "cpu": 3, "craft": 5, "creat": [0, 3, 5, 6, 7, 11, 12, 13, 14, 17, 23], "create_biases_and_weight": 3, "create_convolutional_neural_network_kera": 5, "create_neural_network_kera": 3, "create_x": [7, 13], "credit": [2, 9, 21, 23], "crim": [], "crime": [], "criteria": [2, 6, 11, 12, 16, 20, 23], "criterion": [11, 12, 15], "critic": 8, "cross": [0, 2, 3, 5, 9, 11, 12, 15, 17, 20, 23, 24], "cross_entropi": 6, "cross_val_scor": 8, "cross_valid": [9, 12], "crossvalid": 8, "crucial": [3, 20], "cs231": 5, "csr_matrix": [18, 23], "csv": [2, 6, 8, 9, 11], "ctnk": 3, "cubic": 2, "cumbersom": 7, "cumsum": [12, 13, 23], "cumul": [9, 12, 20], "cumulative_heads_ratio": 12, "cup": 7, "current": [0, 1, 3, 4, 5, 6, 15, 16, 22], "curs": [2, 24], "curv": [8, 9, 12, 14], "curvatur": 15, "custom": [8, 16], "custom_cmap": [11, 12], "custom_cmap2": [11, 12], "cutpoint": 11, "cv": [8, 9, 12], "cvxbook": 15, "cvxopt": [7, 10, 24], "cycl": [3, 14], "d": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 18, 20, 21, 23, 24], "d2_g_t": 4, "d_f": 15, "d_g_t": 4, "d_net_out": 4, "da": 5, "dagger": [7, 18, 24], "dai": [3, 11, 17], "damp": 5, "darget": 11, "darkr": 20, "dat": [2, 23], "dat_id": [2, 8, 9, 11, 23], "data": [1, 4, 6, 7, 10, 12, 14, 15, 16, 18, 22], "data1": 16, "data2": 16, "data3": 16, "data4": 16, "data_id": [2, 8, 9, 11, 23], "data_indic": 3, "data_panda": 23, "data_path": [2, 8, 9, 11, 23], "databas": 3, "datafil": [2, 8, 9, 11, 23], "datafram": [2, 6, 7, 9, 11, 13, 23, 24], "datapoint": [1, 3, 7, 8, 9, 13, 15], "datasci": [0, 1], "dataset": [1, 2, 6, 8, 9, 10, 11, 12, 13, 15, 16, 23], "datatyp": 6, "date": [0, 23, 24], "daughter": 12, "david": 22, "dbh": 3, "dbo": 3, "dcomposit": 18, "ddot": 4, "dead": 3, "deadlin": 0, "deal": [2, 3, 5, 7, 8, 10, 13, 15, 16, 18, 20, 23, 24], "dealt": 2, "debt": 9, "debug": [2, 7, 8, 24], "decad": [2, 5], "decai": [2, 15, 20, 23], "decemb": [21, 23], "decent": 12, "decid": [2, 4, 5, 7, 8, 11, 24], "decim": [2, 23], "decis": [2, 3, 10, 13, 17, 22, 23], "decision_funct": 10, "decision_tre": 11, "decisiontreeclassifi": [11, 12], "decisiontreeregressor": [2, 11, 12], "declar": [2, 6, 18, 23], "decompos": [7, 8, 18, 24], "decomposit": [2, 8, 14, 23], "decompost": [7, 24], "deconvolut": 5, "decorrel": [12, 15], "decreas": [3, 4, 6, 7, 8, 12, 13, 15], "deduc": [2, 23], "deep": [5, 9, 14, 15, 17, 22, 24], "deep_neural_network": 4, "deep_param": 4, "deep_tree_clf": [11, 12], "deep_tree_clf1": 11, "deep_tree_clf2": 11, "deepen": [7, 17, 23], "deeper": [2, 5, 6, 23], "deeplearningbook": [22, 23], "deer": 5, "def": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 20, 23, 24], "def_covari": 20, "default": [2, 3, 4, 6, 8, 9, 18, 23], "default_tim": 6, "defect": [7, 24], "defici": [7, 24], "defin": [1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 24], "definit": [3, 4, 7, 8, 9, 10, 12, 13, 14, 15, 18, 20, 24], "defint": 20, "degre": [0, 1, 5, 7, 8, 10, 11, 12, 13, 20, 23], "deisenroth": 24, "del": 3, "delet": [0, 8], "delimit": 6, "deliv": [0, 19, 23], "delta": [2, 4, 5, 8, 10, 14, 15, 16, 23], "delta_": [3, 18], "delta_0": 5, "delta_1": 5, "delta_2": 5, "delta_3": 5, "delta_4": 5, "delta_5": 5, "delta_h": [2, 3, 23], "delta_j": [5, 14], "delta_k": 14, "delta_l": [3, 5], "delta_momentum": 15, "delta_n": [2, 5, 23], "delug": 17, "delv": 2, "demand": 15, "demonstr": [2, 5, 7, 8, 9, 13, 14, 17, 23, 24], "den": 6, "denomin": [3, 7], "denot": [3, 4, 8, 9, 15, 20], "dens": [3, 5, 6], "densiti": [2, 4, 8, 20], "depart": [21, 23, 24], "depend": [0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 13, 14, 15, 17, 18, 20, 23, 24], "depict": 20, "deploy": [2, 17, 23], "depth": [2, 5, 11, 12, 18], "deriv": [2, 3, 4, 8, 9, 10, 12, 13, 15, 17, 23], "derivati": 15, "derivative_fn": 15, "descend": [7, 11, 13, 24], "descent": [2, 3, 5, 9, 10, 14, 23, 24], "describ": [2, 4, 6, 7, 8, 10, 12, 13, 14, 15, 18, 23], "descript": [2, 10, 11, 23], "design": [2, 3, 5, 6, 7, 8, 9, 12, 13, 14, 15, 23], "designmatrix": [2, 23], "desir": [2, 4, 6, 7, 15, 16, 23, 24], "desktop": 0, "despit": [3, 14], "destroi": 18, "det": [7, 18, 24], "detail": [2, 8, 13, 15, 16, 18, 24], "detect": [5, 10, 14], "determin": [2, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 18, 20, 23, 24], "determinist": [9, 15, 20], "dev": 3, "develop": [2, 5, 7, 10, 12, 13, 14, 17, 18, 23, 24], "deviat": [2, 3, 4, 6, 7, 8, 20, 23, 24], "devis": 14, "df": [6, 10, 13, 15, 23], "df1": 23, "di": [], "diag": [7, 10, 24], "diagnost": [3, 12], "diagon": [2, 7, 9, 15, 18, 20, 23, 24], "diagonaliz": [7, 24], "diagram": 12, "diagsvd": 8, "dice": [8, 20], "dict": [8, 10], "dictionari": [], "did": [1, 2, 3, 7, 8, 9, 12, 13, 16, 23], "die": 3, "diff": 4, "diff1": 4, "diff2": 4, "diff_ag": 4, "diffeent": 10, "differ": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 23, 24], "differenti": [1, 2, 5, 17, 18, 23, 24], "difficult": [2, 3, 8, 12, 15, 20, 23], "difficulti": [2, 3, 15, 23], "diffonedim": 4, "digit": [2, 3, 5, 6, 8, 21, 23], "dilemma": 15, "dilut": 3, "dim": [6, 13, 16, 18], "dimens": [1, 2, 3, 4, 5, 6, 7, 10, 13, 16, 18, 23, 24], "dimension": [2, 6, 7, 8, 11, 13, 15, 16, 17, 18, 23, 24], "dimensionless": [2, 5, 23], "diment": 18, "dimnsion": 6, "diod": 5, "direct": [2, 3, 4, 6, 13, 14, 15, 16, 23, 24], "directli": [3, 6, 7, 8, 20, 24], "disadvantag": [2, 23], "disappear": [5, 8], "disc_loss": 6, "disc_tap": 6, "discard": [8, 13], "disciplin": [2, 5, 14], "disclaim": 20, "discord": 23, "discourag": [0, 15], "discov": [2, 23], "discover": 7, "discret": [3, 5, 7, 9, 15], "discrimin": [6, 9, 12, 13], "discriminator_loss": 6, "discriminator_loss_list": 6, "discriminator_model": 6, "discriminator_optim": 6, "discuss": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 23, 24], "diseas": 9, "disguis": 8, "disord": [3, 9], "displai": [2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 20, 23, 24], "displaystyl": [2, 7, 23, 24], "disregard": [2, 23], "dissimilar": [13, 16], "dist": 16, "distanc": [10, 11, 13, 16, 20], "distance_list": 11, "distinct": [5, 9, 10, 11, 12, 16], "distinctli": 10, "distinguish": [2, 6, 9, 10, 20, 23], "distplot": [], "distribut": [2, 3, 6, 8, 9, 12, 13, 15, 16, 17, 18, 23, 24], "distrubut": [2, 17, 23], "dive": [2, 10, 18, 23], "diverg": [3, 15], "divid": [2, 3, 5, 7, 8, 9, 10, 11, 13, 14, 20, 23, 24], "divis": [8, 10, 11, 15, 18, 20], "dna": 9, "dnn": [2, 3, 4, 6, 14, 23], "dnn1": 6, "dnn2_gru2": 6, "dnn_kera": 3, "dnn_model": 3, "dnn_numpi": 3, "dnn_scikit": [2, 3, 23], "do": [0, 1, 2, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 18, 23, 24], "doc": [0, 1, 2, 17, 19, 21, 22, 23], "document": [0, 6, 15], "doe": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 13, 14, 15, 18, 20, 23], "doesn": [5, 11, 14, 23], "dog": [3, 5, 6], "domain": [7, 10, 15], "domin": [2, 23], "don": [0, 1, 2, 3, 5, 7, 8, 10, 13, 15, 17, 23, 24], "done": [1, 2, 4, 5, 6, 7, 8, 11, 12, 13, 15, 18, 23, 24], "dot": [2, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 20, 23, 24], "doubl": [1, 5, 6, 18, 23], "doubli": 3, "down": [2, 5, 8, 11, 13, 14, 15], "download": [0, 2, 3, 5, 7, 8, 18, 22, 23], "downsampl": 5, "dozen": 3, "dq": 8, "drag": 15, "dramat": 13, "drastic": 6, "draw": [6, 8, 12, 15], "drawback": [2, 3, 5, 15, 24], "drawn": [3, 6, 8, 9, 13, 20, 23], "drive": [5, 6], "driven": 5, "drop": [2, 3, 7, 8, 13, 15, 20, 23, 24], "dropna": [2, 8, 23], "dropout": 6, "dt": [4, 5, 15, 20], "dtype": [2, 3, 5, 6, 16, 18, 23], "dub": [2, 23], "due": [3, 4, 7, 8, 10, 12, 14, 15, 21, 23, 24], "dummi": [], "dure": [2, 3, 5, 6, 10, 11, 13, 17, 23], "dwell": [], "dwh": 3, "dwo": 3, "dx": [4, 5, 10, 20], "dx_1": 20, "dx_1p": 8, "dx_2p": 8, "dx_mp": 8, "dx_n": 20, "dxp": 8, "dy": [3, 10, 20], "dynam": 6, "dz": 10, "e": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 20, 21, 23, 24], "e_": [2, 4, 23], "each": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 24], "eapprox": [2, 23], "earli": [3, 15], "earlier": [2, 7, 9, 10, 11, 13, 14, 15, 23, 24], "earthexplor": 8, "eas": [8, 11, 16], "easi": [0, 2, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 23, 24], "easier": [0, 7, 8, 10, 11, 15, 20, 23, 24], "easiest": 15, "easili": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 23, 24], "eastern": [21, 23], "ebind": [2, 23], "eblock": 11, "econometr": 23, "economi": 7, "ecosystem": [17, 23], "ect": 19, "edg": 5, "edgecolor": 8, "editor": 0, "edu": 15, "educ": [2, 23], "eff": 20, "effect": [1, 3, 6, 12, 15, 20], "effic": 3, "effici": [2, 5, 12, 15, 17, 18, 20, 23], "efron": 8, "egrad": 15, "eig": [7, 13, 15, 18, 20, 23, 24], "eigen": 20, "eigenpair": [7, 13, 24], "eigenvalu": [2, 7, 10, 13, 15, 18, 23, 24], "eigenvector": [7, 13, 15, 24], "eight": [18, 23], "eigval": [18, 20, 23], "eigvalu": [13, 15], "eigvec": [18, 20, 23], "eigvector": [13, 15], "eir": [21, 23], "eispack": [18, 23], "either": [3, 7, 8, 9, 10, 11, 12, 13, 15, 20, 23, 24], "eivind": 21, "eivinsto": 21, "ekstr\u00f8m": 6, "elabor": 20, "elarn": 5, "electr": [2, 5, 14, 23], "electron": 23, "eleg": 13, "element": [3, 4, 5, 6, 7, 8, 9, 10, 13, 14, 15, 17, 18, 22, 24], "elementari": [12, 15, 18], "elementwis": [5, 15], "elementwise_grad": [4, 15], "elessar": 23, "elif": 16, "elim": 18, "elimin": [5, 10], "elin": [21, 23], "ellipsi": 1, "els": [1, 3, 5, 6, 9, 11, 14, 15, 18], "elu": 3, "elus": [2, 23], "email": [19, 21, 23], "embed": [2, 13, 24], "embodi": 8, "emit": 20, "emner": 22, "emphas": [2, 12, 17, 23], "emphasi": [2, 17, 22, 23], "empir": [3, 13, 20], "emploi": [2, 3, 7, 8, 13, 15, 20, 23, 24], "employ": 2, "empti": [0, 8, 12], "emul": 14, "en": [17, 22], "enabl": 13, "enbodi": 8, "encod": [2, 5, 7, 11, 13, 16, 23, 24], "encompass": [2, 20], "encount": [0, 2, 3, 7, 9, 15, 20, 23, 24], "encourag": 0, "end": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 21, 23, 24], "endpoint": [5, 8], "energi": [2, 6, 8], "enforc": 14, "eng": 22, "engin": [2, 3, 5, 6, 17, 23], "enorm": 5, "enough": [2, 8, 15, 23], "ensembl": [3, 11, 23], "ensur": [2, 3, 4, 5, 7, 8, 13, 15, 20, 24], "entail": 23, "enter": [7, 8, 24], "enthought": [2, 17, 23], "entir": [3, 5, 9, 11, 17, 20, 23], "entiti": [11, 14, 18, 23], "entri": [2, 7, 10, 13, 14, 18, 23, 24], "entropi": [3, 5, 9, 12, 15, 23], "enumer": [2, 3, 4, 5, 6, 8, 10, 23], "env": 20, "environ": [4, 17, 23], "environemnt": 0, "eo": [2, 8], "eol": 2, "eosfit": 2, "epoch": [2, 3, 5, 6, 14, 15, 23], "epsilon": [2, 7, 8, 9, 15, 23, 24], "epsilon_": [2, 23], "epsilon_0": [2, 23], "epsilon_1": [2, 23], "epsilon_2": [2, 23], "epsilon_i": [2, 23, 24], "eq": [5, 15, 16, 18, 20], "eqnarrai": [5, 7, 8], "equal": [1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 13, 14, 15, 16, 18, 20, 23, 24], "equat": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 18, 20, 23], "equilibrium": [4, 14], "equiv": [5, 15, 18, 20], "equival": [2, 3, 7, 9, 10, 13, 15, 17, 18, 23, 24], "erf": 20, "eriador": 23, "err": [2, 12], "err_": 8, "err_sqr": 4, "errat": 15, "erron": 4, "error": [0, 1, 3, 4, 6, 7, 8, 9, 11, 13, 14, 15, 17, 18, 20], "error_estimate_corr_tim": 20, "error_hidden": 3, "error_output": 3, "escap": 15, "especi": [0, 3, 5, 11, 14, 15], "essenti": [0, 2, 7, 8, 11, 12, 14, 16, 20, 24], "establish": [1, 2, 8, 12, 13], "estim": [2, 3, 7, 8, 9, 12, 13, 15, 17, 20, 23, 24], "estimated_mse_fold": 8, "estimated_mse_kfold": 8, "estimated_mse_sklearn": 8, "et": [1, 2, 4, 6, 22, 23, 24], "eta": [2, 3, 5, 10, 14, 15, 23], "eta0": [10, 15], "eta_": 15, "eta_t": 15, "eta_v": [2, 3, 5, 23], "etc": [2, 3, 5, 7, 9, 10, 11, 13, 14, 15, 16, 17, 18, 20, 24], "ethic": 17, "euclidean": [2, 16, 24], "evalu": [0, 1, 2, 4, 5, 6, 7, 8, 11, 15, 20, 23, 24], "evalut": 15, "even": [2, 3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 24], "evenli": 6, "event": [7, 9, 12, 20], "eventu": [2, 7, 8, 13, 14, 15, 21, 24], "everi": [0, 2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 14, 15, 16, 17, 20, 21, 23, 24], "everyth": [1, 6, 14], "everywher": [6, 15], "evolv": 2, "exact": [2, 7, 13, 14, 15, 18, 20, 23, 24], "exactli": [2, 5, 6, 8, 14, 17, 24], "exam": 23, "examin": 8, "exampl": [0, 1, 2, 7, 13, 14, 15, 17, 18, 20, 22], "exce": [3, 14, 15], "excel": [2, 3, 6, 7, 12, 23, 24], "except": [5, 6, 8, 10, 11, 18], "excess": [2, 23], "excit": 2, "exclud": [3, 8, 14], "exclus": [2, 3, 5, 8, 20, 23], "execut": [0, 4, 7, 15, 24], "exemplifi": 15, "exercic": [21, 23], "exercis": [7, 17, 19, 21, 23], "exhaust": 8, "exhibit": [2, 7, 8, 10, 23, 24], "exist": [2, 3, 4, 5, 7, 8, 9, 10, 11, 15, 18, 23], "exit": [7, 18, 24], "exp": [1, 2, 3, 4, 7, 8, 9, 10, 12, 13, 14, 15, 20, 24], "exp_term": 3, "expand": [7, 9, 13, 15], "expans": [2, 5, 7, 10, 12, 14, 15, 23, 24], "expect": [0, 2, 3, 7, 8, 9, 13, 14, 15, 17, 23, 24], "expectation_value_of_h_wrt_p": 20, "expens": [1, 8, 12, 15], "experi": [0, 2, 3, 8, 10, 15, 17, 23, 24], "experiment": [2, 6, 8, 11, 20, 23], "expert": [3, 11], "explain": [1, 2, 8, 11, 12, 13, 15, 23], "explained_variance_ratio_": 13, "explanatori": [2, 23], "explicit": [2, 5, 8, 15, 18, 23, 24], "explicitli": [2, 6], "explod": 3, "exploit": [2, 5, 14, 15, 23], "explor": [3, 6, 8, 10, 15, 17, 23], "expon": 3, "exponenti": [2, 3, 7, 8, 12, 15, 20, 23], "export": [0, 1, 11], "export_graphviz": 11, "export_text": 11, "exporttext": 11, "expos": 17, "express": [2, 4, 5, 7, 8, 9, 12, 14, 15, 18, 20, 23], "exptmean": 20, "exptvari": 20, "extend": [2, 4, 9, 13, 15, 17, 23], "extens": [0, 2, 14, 17, 23], "extent": [2, 3, 8, 22], "extern": [5, 8, 11], "extra": [0, 3, 5, 7, 21, 23, 24], "extract": [1, 2, 5, 7, 8, 9, 10, 13, 15, 18, 23, 24], "extrapol": [2, 23], "extrem": [0, 1, 2, 3, 6, 7, 8, 9, 10, 11, 15, 18, 24], "extremum": 15, "extrins": 13, "ey": [2, 7, 8, 15, 16, 18, 23, 24], "f": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 23, 24], "f1": 15, "f11": [2, 23], "f12": [2, 23], "f13": [2, 23], "f1_grad": 15, "f1d": 15, "f2": 15, "f2_grad_x1": 15, "f2_grad_x1_analyt": 15, "f2_grad_x2": 15, "f2_grad_x2_analyt": 15, "f3": 15, "f3_grad": 15, "f3_grad_analyt": 15, "f4": 15, "f4_grad": 15, "f4_grad_analyt": 15, "f5": 15, "f5_grad": 15, "f6": 15, "f6_for": 15, "f6_for_grad": 15, "f6_grad_analyt": 15, "f6_while": 15, "f6_while_grad": 15, "f7": 15, "f7_grad": 15, "f7_grad_analyt": 15, "f8": 15, "f8_grad": 15, "f9": [2, 15, 23], "f9_altern": 15, "f9_alternative_grad": 15, "f9_grad": 15, "f_": 12, "f_0": [5, 12], "f_1": [12, 15], "f_2": [14, 15], "f_3": 14, "f_d": 20, "f_grad": 15, "f_grad_analyt": 15, "f_i": [1, 2, 8, 14], "f_m": [5, 12], "f_n": 5, "f_vec": 4, "face": [15, 23], "facecolor": [8, 10, 20], "facil": [2, 17], "facilit": 14, "fact": [2, 3, 5, 7, 11, 13, 14, 15, 23, 24], "factor": [2, 3, 5, 7, 8, 11, 12, 13, 15, 18, 20, 23, 24], "factori": 15, "fade": 8, "fafab0": [11, 12], "fail": [2, 8, 15, 21, 23], "failur": 9, "fairli": [3, 4, 20], "faisal": [1, 24], "fake": 6, "fake_loss": 6, "fake_output": 6, "fall": [10, 11, 19], "fals": [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 16, 18, 23, 24], "famili": [2, 9, 10, 20, 24], "familiar": [0, 2, 5, 7, 8, 10, 17, 18, 20, 23], "famou": [8, 14], "far": [1, 2, 5, 6, 7, 8, 10, 13, 14, 15, 16, 23, 24], "fashion": [2, 11, 12, 23], "fast": [3, 5, 8, 12, 14, 15, 17, 20, 23], "faster": [3, 13, 15], "fastest": [15, 18], "favor": 9, "favorit": 20, "fc": 5, "featur": [0, 2, 3, 5, 7, 8, 9, 10, 12, 13, 14, 15, 17, 20, 23], "feature_nam": [3, 9, 11], "feautur": 11, "fed": 3, "feed": [2, 4, 5, 13, 17, 23], "feed_forward": 3, "feed_forward_out": 3, "feed_forward_train": 3, "feedback": [6, 23], "feeddorward": 6, "feedforward": [3, 6, 14], "feel": [0, 1, 2, 7, 8, 13, 15, 17, 21, 23], "feet": [], "fetch": [0, 8], "few": [3, 5, 6, 7, 11, 20, 23], "fewer": [2, 11, 13, 23], "ffnn": [3, 14], "field": [2, 5, 8, 14, 17], "fifth": [2, 8, 23], "fig": [2, 3, 4, 5, 6, 8, 9, 14, 15, 16, 23], "fig_id": [2, 8, 9, 11, 23], "figaxi": 20, "figsiz": [2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 23], "figur": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 23, 24], "figure_id": [2, 8, 9, 11, 23], "figurefil": [2, 8, 9, 11, 23], "file": [0, 2, 6, 7, 8, 9, 11, 23], "file_prefix": 6, "filenam": 23, "fill": [7, 11, 24], "filter": [5, 6], "final": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 19, 20, 21, 23], "financ": 2, "find": [0, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 20, 23, 24], "fine": [2, 16], "finish": 4, "finit": [5, 7, 8, 14, 15, 20, 24], "finnicki": 0, "first": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 15, 16, 18, 20, 21, 22, 24], "firsteigvector": 13, "fit": [3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 20, 24], "fit_intercept": [1, 2, 7, 8, 24], "fit_mod": 11, "fit_theta": 8, "fit_transform": [0, 2, 8, 10, 11, 13], "fiti": [2, 23], "five": [2, 11, 23, 24], "fix": [2, 5, 6, 8, 12, 13, 14, 15, 23], "flag": 6, "flat": [14, 15], "flatten": [3, 5, 6, 7, 18], "flexibl": [3, 8, 10, 12, 14, 23], "flip": [21, 23], "float": [2, 5, 6, 7, 11, 13, 15, 16, 18, 23, 24], "float32": [6, 11], "float64": [6, 18, 23], "flop": [7, 18, 24], "flow": [3, 6, 14], "fluctuat": 7, "fly": 13, "fm": 2, "fmax": 5, "fmesh": 15, "fn": 9, "focu": [0, 2, 5, 6, 7, 8, 17, 22, 23], "focus": [3, 8, 9, 18], "fold": [8, 11], "folder": [0, 2, 6, 8, 23], "follow": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 24], "font": [9, 20, 23], "fontdict": 20, "fontsiz": [3, 8, 10, 11, 12, 20], "fontweight": 3, "footprint": 5, "foral": [10, 24], "forc": [2, 7, 8, 12, 13, 24], "forcast": 6, "forecast": [6, 14], "forest": [2, 3, 11, 17, 23], "forget": 13, "form": [0, 1, 2, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 17, 18, 20, 23, 24], "formal": [5, 6, 16, 20], "format": [2, 3, 5, 6, 8, 9, 10, 11, 12, 13, 17, 20, 22], "format_data": 6, "formatstrformatt": [8, 15], "formul": [6, 8, 13, 16], "formula": [5, 15, 20], "forth": [6, 14], "fortran": [2, 17, 18, 23], "fortran2003": [17, 23], "fortran90": 20, "fortun": [2, 13, 24], "forward": [2, 5, 8, 17, 18, 23], "found": [3, 4, 6, 7, 8, 14, 15, 23, 24], "foundat": [17, 23], "four": [6, 7, 8, 10, 14, 18, 19, 21, 23], "fourier": [2, 23], "fourierdef1": 5, "fourierdef2": 5, "fourierseriessign": 5, "fourth": [14, 23, 24], "fp": 9, "frac": [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 23, 24], "fraction": 11, "frame": 9, "framework": [3, 10, 12, 20], "frank": [7, 13], "frankefunct": [7, 8, 13], "fredli": [21, 23], "free": [0, 1, 2, 8, 13, 15, 17, 18, 20, 21, 22, 23], "freecodecamp": 17, "freedom": 7, "freeli": 2, "freez": 0, "frequenc": [5, 8, 9, 20], "frequent": [2, 10, 11, 15], "frequentist": 17, "fresh": 12, "fridai": [0, 21, 23], "friedman": [8, 22, 23], "friendli": 6, "frodo": 23, "frog": 5, "from": [0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 13, 15, 16, 17, 18, 20, 21, 22], "from_cod": 11, "from_logit": [5, 6], "from_tensor_slic": 6, "front": [2, 6, 7, 23, 24], "frustrat": 0, "fulfil": [4, 7, 14, 24], "full": [3, 5, 7, 9, 11, 12, 15, 20, 23, 24], "full_matric": [7, 24], "fulli": [5, 8, 14, 20], "fun": [17, 23], "func": 4, "function": [0, 1, 4, 5, 6, 7, 11, 16, 17, 18], "functionali": 13, "fundament": [2, 8, 17, 23], "funtion": 4, "further": [4, 9, 11, 23], "furthermor": [2, 5, 7, 8, 9, 13, 14, 15, 17, 23, 24], "futur": [2, 6, 10, 11, 23], "fy": [0, 19, 21, 22, 23], "fys5419": [22, 23], "fys5429": [22, 23], "f\u00f8470": [21, 23], "g": [0, 2, 3, 4, 5, 6, 8, 10, 11, 12, 13, 15, 20, 23, 24], "g0": 4, "g_": [4, 11, 12], "g_0": 4, "g_1": [4, 12], "g_2": [4, 12], "g_analyt": 4, "g_dnn_ag": 4, "g_euler": 4, "g_i": 4, "g_m": [5, 12], "g_n": 5, "g_re": 4, "g_t": 4, "g_t_d2t": 4, "g_t_d2x": 4, "g_t_dt": 4, "g_t_hessian": 4, "g_t_hessian_func": 4, "g_t_jacobian": 4, "g_t_jacobian_func": 4, "g_trial": 4, "g_trial_deep": 4, "g_vec": 4, "gain": [3, 7, 9, 11, 12, 15, 24], "galleri": [2, 23], "game": 6, "gamge": 23, "gamma": [2, 4, 10, 11, 12, 13, 15, 23], "gamma1": 10, "gamma2": 10, "gamma_": [2, 23], "gamma_0": 12, "gamma_1": 12, "gamma_1x": 12, "gamma_i": [2, 10, 20, 23], "gamma_j": 15, "gamma_k": 15, "gamma_m": 12, "gamma_x": [2, 23], "gap": 10, "gate": [6, 14], "gather": [2, 3, 14, 24], "gaug": 14, "gaussbacksub": 18, "gaussian": [6, 7, 8, 10, 16, 20, 23], "gaussian_point": 16, "gaussian_rbf": 10, "gave": 15, "gavra": 23, "gbc": 23, "gca": [4, 8, 10, 15], "gd": 3, "gd_clf": 12, "gdclassiffiercgain": 12, "gdclassiffierconfus": 12, "gdclassiffierroc": 12, "gdm": 15, "gdregress": 12, "ge": [3, 7, 9, 20, 24], "gen_loss": 6, "gen_tap": 6, "gender": [2, 23], "genener": 6, "gener": [0, 1, 2, 3, 4, 5, 7, 8, 10, 12, 13, 14, 15, 16, 18, 20, 22, 24], "generaliz": 1, "generallay": 14, "generate_and_save_imag": 6, "generate_imag": 6, "generate_latent_point": 6, "generate_simple_clustering_dataset": 16, "generated_imag": 6, "generator_loss": 6, "generator_loss_list": 6, "generator_model": 6, "generator_optim": 6, "genom": 17, "geodes": 13, "geometr": [2, 15, 23], "geometri": 7, "georg": 22, "geotif": 8, "geq": [4, 7, 10, 11, 15, 24], "geron": [2, 22, 23], "get": [0, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 15, 17, 18, 20, 21, 23, 24], "get_dummi": 11, "get_paramet": 4, "get_split": 11, "get_yaxi": 10, "get_yticklabel": 8, "gh": 0, "gibb": [17, 23], "gif": 6, "gini": 12, "gini_index": 11, "ginvers": 15, "git": [0, 2, 17, 23], "giter": 15, "github": [2, 17, 19, 21, 22, 23, 24], "gitignor": 0, "gitlab": [0, 2, 17, 23], "give": [2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 20, 23, 24], "given": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 23, 24], "global": [8, 9, 15], "glorot": 3, "gnew": 15, "go": [0, 1, 2, 3, 5, 7, 8, 10, 11, 13, 14, 15, 23, 24], "goal": [2, 9, 11, 23], "goe": [0, 2, 3, 4, 7, 8, 15, 16, 18, 23, 24], "golden": 15, "gone": [7, 24], "gong": 3, "good": [0, 3, 5, 6, 7, 8, 11, 12, 13, 15, 17, 20, 22, 24], "goodfellow": [6, 22, 23, 24], "googl": [3, 6, 17, 23], "got": [3, 8], "gotten": 23, "gov": 8, "govern": 23, "gp": 22, "gpu": [3, 15, 17, 23], "grad": [4, 15], "grad_analyt": 15, "grade": 19, "gradient": [2, 5, 6, 9, 10, 11, 14, 17, 23, 24], "gradientboostingclassifi": 12, "gradientboostingregressor": 12, "gradients_of_discrimin": 6, "gradients_of_gener": 6, "gradienttap": 6, "gradual": [3, 16], "grai": [6, 8], "graph": [1, 3, 11, 13, 14, 15], "graph_from_dot_data": 11, "graphic": [0, 2, 3, 11, 23], "grasp": 2, "gray_r": [3, 5], "grayscal": 5, "great": [0, 7, 15], "greater": [3, 9, 20, 24], "greatli": 15, "greedi": 11, "green": [2, 5, 11, 20], "grei": 6, "grid": [3, 5, 8, 9, 10, 14, 20], "grossli": 15, "ground": [2, 23], "group": [0, 2, 8, 9, 11, 16, 17, 19, 21, 23], "groupbi": [2, 23], "grow": [3, 5, 11, 12], "growth": [2, 23], "gru": 6, "guarante": [2, 6, 15, 20, 23, 24], "guess": [3, 6, 12, 15, 16], "guestrin": 12, "gui": 0, "guid": 3, "h": [0, 2, 3, 7, 8, 10, 15, 20, 21, 22, 23, 24], "h1": 4, "h_": [2, 15, 23], "h_1": [4, 15], "h_2": [4, 15], "h_m": 12, "ha": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 23, 24], "haanen": [21, 23], "habit": [2, 24], "had": [2, 3, 8, 9, 15, 23], "hadamard": [3, 14, 15], "half": [3, 10, 11], "halv": 12, "hand": [2, 3, 4, 5, 7, 13, 14, 15, 17, 18, 20, 21, 22, 23, 24], "handi": 5, "handl": [0, 2, 3, 4, 7, 11, 13, 17, 24], "handle_unknown": 11, "handsid": 14, "handwrit": 14, "handwritten": [3, 7], "happen": [3, 4, 5, 6, 7, 8, 12, 15, 20, 24], "hard": [3, 9, 10, 12, 15], "hardcopi": [17, 23], "harder": [2, 3, 24], "harmon": 5, "hasn": [], "hassl": [2, 17, 23], "hast": [17, 23], "hasti": [1, 2, 8, 22, 23, 24], "hat": [1, 2, 3, 7, 8, 9, 11, 12, 13, 14, 15, 18, 24], "have": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 23, 24], "haven": 3, "he": 9, "head": [6, 12, 20], "header": [2, 23], "heads_proba": 12, "health": [2, 24], "hear": [2, 15, 23], "heart": [2, 9, 23], "heatmap": [2, 3, 5, 9, 23], "heavili": 2, "heavisid": 3, "height": [3, 5, 8], "held": 15, "help": [0, 1, 2, 3, 6, 14, 15, 23], "helper": [6, 16], "henc": [2, 7, 8, 10, 11, 12, 14, 15, 23, 24], "henrik": [21, 23], "her": 9, "here": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 24], "hereaft": [2, 10, 14, 23], "hermitian": 18, "hessenberg": 18, "hessian": [2, 4, 7, 15], "heterogen": [11, 12], "hi": 9, "hidden": [3, 5, 6, 14], "hidden_bia": 3, "hidden_bias_gradi": 3, "hidden_layer_s": [2, 3, 23], "hidden_neuron": 6, "hidden_weight": 3, "hidden_weights_gradi": 3, "hierarch": [7, 24], "high": [2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 15, 16, 17, 18, 23, 24], "higher": [2, 3, 5, 7, 8, 10, 15, 23, 24], "highest": [3, 4], "highli": [2, 5, 6, 12, 17, 18, 22, 23, 24], "highwai": [], "hing": 10, "hint": [0, 1, 15, 24], "hip": 17, "hire": 2, "hist": [6, 8, 9, 20], "histogram": [8, 9, 20], "histor": [9, 13], "histori": [0, 5, 6, 14], "hitherto": 7, "hjorth": [21, 23, 24], "hobbi": 20, "hoc": [7, 24], "hoff": 22, "hold": [3, 5, 8, 15, 16], "holder": [2, 23], "home": [], "homepag": 23, "homework": [8, 15], "homogen": [3, 5, 11, 12, 15], "honchar": 4, "hopefulli": [0, 2, 13, 20, 23], "horizont": 13, "horlyk": [21, 23], "hors": [5, 9, 23], "hot": [3, 11], "hour": [3, 17, 19, 20, 21, 23], "how": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 24], "howev": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 24], "hspace": [2, 6, 10, 12, 20, 23], "hstack": 3, "htf": 23, "html": [1, 2, 17, 19, 21, 22, 23], "http": [0, 1, 2, 5, 6, 8, 15, 17, 18, 19, 21, 22, 23, 24], "huang": [2, 23], "huber": [2, 23], "huge": [3, 5, 6, 17], "human": [2, 3, 5, 8, 11, 14], "humid": 11, "hundr": 3, "hungri": 3, "hybrid": 19, "hydrogen": [2, 23], "hyperbol": [3, 6, 14], "hyperparam": 10, "hyperparamet": [5, 6, 7, 8, 11, 15, 24], "hyperplan": 13, "h\u00f8rlyk": [21, 23], "i": [0, 1, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24], "i0": [2, 23], "i1": [2, 8, 10, 14, 23], "i2": [2, 10, 14, 23], "i3": [2, 14, 23], "i5": [2, 23], "i_": 15, "i_1": [7, 8], "i_2": [7, 8], "ian": 22, "ic": 3, "id": [9, 15], "ida": [21, 23], "idea": [2, 3, 4, 5, 6, 8, 11, 12, 14, 15, 18], "ideal": [2, 4, 8, 10, 15, 20, 23], "idem": 8, "ident": [7, 8, 14, 15, 18, 24], "identifi": [2, 3, 9, 11, 13, 14, 15, 16, 23, 24], "ieor": 20, "ifi": 22, "ifs": [17, 23], "ignor": [0, 2, 3, 5, 11, 24], "ii": [18, 20], "iii": [18, 23], "ij": [1, 2, 3, 5, 8, 10, 14, 16, 18, 20, 23, 24], "ik": [2, 18, 23, 24], "illustr": [7, 9, 12, 14, 15, 16, 17, 23], "im": 8, "imag": [3, 5, 6, 8, 11, 13, 14, 16, 22, 23], "image_at_epoch_": 6, "image_batch": 6, "image_height": 5, "image_path": [2, 8, 9, 11, 23], "image_width": 5, "imageio": 8, "images_from_seed_imag": 6, "imagin": 3, "immedi": [2, 5, 6, 8, 17, 23], "implement": [2, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 20, 23, 24], "impli": [5, 7, 8, 9, 15, 18, 24], "implicit": 5, "implicitli": [13, 20], "import": [0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 20], "importantli": 5, "impos": [2, 8, 13, 14, 23], "imposs": [2, 7, 23, 24], "impress": [2, 14, 23], "improv": [0, 2, 6, 7, 11, 12, 13, 15, 24], "impur": 11, "imread": 8, "imshow": [3, 5, 6, 8], "in3050": [22, 23], "in3310": 23, "in4080": [22, 23], "in4300": [22, 23], "in4310": 22, "in5400": 5, "in5550": 22, "in_out_neuron": 6, "inaccur": 15, "inact": 14, "inadequ": [2, 23], "inch": 8, "includ": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13, 14, 17, 20, 21, 22, 23, 24], "include_bia": [8, 11], "incom": [1, 14], "incorrect": 3, "incoveni": 10, "increas": [2, 3, 5, 6, 7, 8, 11, 14, 15, 20, 23], "increasingli": 20, "ind": 8, "inde": [2, 4, 6, 7, 8, 15, 23, 24], "indefinit": 6, "independ": [2, 7, 8, 9, 10, 14, 15, 20, 23, 24], "index": [2, 3, 5, 6, 12, 16, 17, 18, 20, 22, 23], "index_col": [2, 23], "indic": [1, 2, 3, 5, 6, 7, 8, 11, 12, 13, 15, 23, 24], "indispens": 8, "individu": [3, 8, 9, 12, 14, 20, 23, 24], "indu": [], "indx": 18, "indx1": 4, "indx2": 4, "indx3": 4, "ineffici": [5, 15], "inequ": [10, 15], "inertia": 15, "inf1000": [17, 23], "inf1100": [17, 23], "inf1100l": [17, 23], "inf1110": [17, 23], "inf3000": 23, "infeas": 11, "infer": [2, 3, 6, 8, 22, 23], "inferenc": 3, "infil": [2, 8, 9, 11, 23], "infin": [7, 8, 9, 13, 24], "infinit": 5, "infinitesim": 20, "influenc": [8, 12], "influenti": 3, "info": 23, "inform": [2, 3, 5, 6, 8, 11, 13, 14, 15, 16, 18, 22, 23], "inforom": 0, "infti": [5, 8, 15, 20], "ingeni": 15, "ingredi": [2, 11, 23], "inher": 8, "inherit": [18, 23], "initi": [2, 3, 4, 8, 12, 15, 16, 18, 20, 23], "inject": 16, "inlin": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 23, 24], "inner": [2, 15, 24], "inp": 6, "inplac": 15, "input": [1, 2, 3, 5, 6, 7, 8, 9, 10, 14, 15, 16, 20, 23, 24], "input_dim": 3, "input_shap": [5, 6], "inputs": 3, "inputs_shuffl": [2, 3, 24], "insert": [5, 7, 8, 10, 12, 20, 24], "insid": [6, 9], "insight": [2, 3, 7, 17, 23, 24], "insist": [8, 15], "inspir": [2, 3, 14, 23], "instabl": 4, "instal": [0, 2, 3, 7, 8, 11], "instanc": [1, 2, 3, 4, 6, 8, 11, 13, 15, 23, 24], "instanti": 12, "instead": [2, 3, 4, 5, 6, 7, 8, 10, 11, 13, 15, 16, 18, 20, 23, 24], "institut": 3, "instruct": [0, 2, 3], "int": [2, 3, 4, 5, 6, 7, 8, 13, 15, 16, 18, 20, 24], "int32": 12, "int_": [5, 8, 20], "int_0": 20, "int_a": 20, "intak": [2, 24], "integ": [3, 4, 15, 16, 18, 20, 23], "integer_vector": 3, "integr": [5, 8, 20, 23], "intellig": [2, 16, 22, 23], "intend": 12, "intens": 3, "intention": 16, "interact": [2, 8, 11, 14, 17, 23], "intercept": [1, 2, 8, 10, 13, 15, 23, 24], "intercept_": [2, 8, 10, 11, 15, 23], "interchang": [7, 14, 18], "interconnect": 3, "interest": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 14, 17, 20, 23, 24], "interfac": [0, 2, 3, 18, 24], "interior": [2, 11, 23], "intermedi": [18, 24], "intern": [3, 12, 14], "interpol": [3, 5, 6, 8, 14], "interpr": [7, 24], "interpret": [0, 1, 2, 3, 8, 11, 12, 14, 15, 18, 20], "interv": [2, 5, 7, 8, 9, 15, 20, 23, 24], "intial": 15, "intract": [2, 6, 24], "intrins": [5, 13, 18, 20, 23], "intro": [17, 22, 23], "introduc": [2, 3, 7, 8, 10, 12, 14, 18, 20, 23], "introduct": [3, 4, 6, 15, 22, 24], "introductori": [2, 6, 18, 22, 23, 24], "intuit": [2, 7, 8, 10, 14, 15, 23], "inv": [2, 7, 15, 23, 24], "invalu": [2, 15, 17, 23], "invari": 3, "invd": 7, "inver": 10, "invers": [2, 5, 8, 15, 23, 24], "inverse_transform": 10, "invert": [1, 2, 7, 9, 12, 15, 23], "invh": 15, "invok": 10, "involv": [2, 4, 8, 9, 13, 14, 23, 24], "io": [2, 17, 19, 21, 22, 23, 24], "ip": [2, 10, 20, 23], "ipca": 13, "ipynb": [17, 23], "ipython": [2, 7, 9, 11, 13, 16, 17, 23, 24], "iq": 8, "iri": [10, 11], "irreduc": 8, "irrelev": [7, 24], "irrespect": [2, 23], "isn": 7, "isnul": [], "isomap": 13, "issu": [0, 3, 11, 18], "it_arrai": 15, "item": [2, 15, 23], "items": [18, 23], "iter": [3, 4, 6, 8, 10, 15, 16, 20], "its": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23], "itself": [7, 8, 14, 20, 23, 24], "j": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 13, 14, 15, 16, 18, 20, 22, 23, 24], "j1": 18, "j_": 8, "j_lasso_sk": 8, "j_ridge_sk": 8, "j_sk": 8, "jackknif": [8, 17, 23], "jacobian": [4, 15], "jason": 6, "jax": [17, 23], "jensen": [21, 23, 24], "jerom": 22, "ji": [14, 18], "jit": 15, "jj": [2, 7, 8, 23], "jk": [2, 3, 8, 14, 18, 23], "jl": [2, 23], "jm": 18, "jnp": 15, "job": [0, 4, 10, 12], "join": [2, 6, 8, 9, 11, 23], "joint": [6, 7], "judg": 15, "judgement": 8, "julia": [17, 18], "jump": 20, "junk": 6, "jupit": 23, "jupyt": [0, 1, 2, 17, 22, 23], "just": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 20, 23, 24], "justif": 2, "justifi": [5, 12], "k": [2, 3, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 23, 24], "k0": 9, "k1": 9, "kaggl": 8, "kappa_d": 20, "karl": [21, 23], "karush": 10, "katrin": [21, 23], "keep": [0, 2, 3, 6, 7, 8, 13, 15, 16, 18, 23, 24], "keepdim": [3, 8, 12, 18], "kei": [3, 5, 8, 14], "kept": [6, 8, 16], "kera": [2, 6, 17, 23], "kernel": [2, 3, 5, 17, 23, 24], "kernel_regular": [3, 5], "kernel_s": 6, "kernelpca": 13, "kev": [2, 23], "kevin": [22, 23], "keyword": [18, 23], "kfold": 8, "kg": 3, "ki": 18, "kick": [3, 15], "kiener": 4, "kilomet": 8, "kind": [2, 4, 5, 6, 10, 14, 15, 16, 23, 24], "kj": [8, 14, 18, 24], "kjm": [17, 23], "kkt": 10, "kl": 20, "km": [14, 23], "kmean": 16, "kmeanspoint": 16, "kn_k": 16, "know": [0, 1, 2, 3, 4, 7, 8, 10, 15, 17, 23, 24], "knowledg": [2, 17, 23], "known": [3, 5, 6, 7, 8, 9, 10, 11, 14, 18, 20, 22], "kondev": [2, 23], "kp": 20, "kpca": 13, "kroneck": 16, "kuhn": 10, "kvalsund": [21, 23], "kwown": [2, 23], "l": [2, 3, 4, 5, 7, 8, 9, 10, 12, 13, 14, 15, 18, 20, 23], "l0": 9, "l1": [2, 3, 5, 9, 23], "l1_l2": [3, 5], "l1regl": 7, "l2": [3, 5], "l_": 18, "l_1": 9, "l_2": [9, 15], "l_j": 14, "la": 15, "la_i": 14, "la_k": 14, "lab": [17, 23], "label": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 20, 23, 24], "labelencod": [9, 12], "labels": [8, 10, 11], "labels_shuffl": [2, 3, 24], "laboratori": 19, "lack": [2, 23], "lagari": 4, "lagrang": [10, 13], "lambda": [2, 3, 4, 5, 7, 8, 9, 10, 12, 14, 15, 20, 23, 24], "lambda_": 13, "lambda_0": 13, "lambda_1": [7, 10, 13, 24], "lambda_2": [10, 13], "lambda_i": [10, 13], "lambda_iy_i": 10, "lambda_jy_iy_j": 10, "lambda_k": 10, "lambda_n": [7, 10, 24], "lamda": 3, "land": 10, "landmark": 10, "landscap": 15, "langl": [2, 8, 13, 20, 23, 24], "languag": [2, 3, 6, 10, 17, 18, 22, 23], "lapack": [18, 23], "laplac": 7, "laptop": [0, 17], "larg": [2, 3, 4, 6, 7, 8, 10, 11, 12, 13, 15, 17, 18, 20, 22, 23, 24], "larger": [2, 5, 7, 8, 10, 12, 13, 15, 20, 23, 24], "largest": [6, 10, 13], "lasso": [2, 9, 17, 23], "lasso_sk": 8, "last": [1, 2, 3, 5, 6, 7, 8, 9, 10, 14, 18, 20, 21, 23], "latent": 6, "latent_dim": 6, "latent_point": 6, "latent_space_value_rang": 6, "later": [0, 2, 3, 6, 9, 10, 14, 15, 16, 17, 23], "latest": [0, 6, 17], "latest_checkpoint": 6, "latex": 23, "latter": [2, 5, 8, 9, 10, 13, 15, 18, 20, 23, 24], "lattic": 14, "law": 2, "layer": [2, 6, 15, 23], "lbfg": [9, 11, 12], "lcc": [7, 8], "lda": 13, "ldot": [2, 8, 13, 23], "le": [7, 9, 12, 15, 20, 24], "lead": [1, 2, 3, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 20, 23, 24], "leaf": 11, "leaki": 3, "leakyrelu": 6, "lear": 15, "learn": [5, 6, 7, 8, 9, 10, 11, 12, 14, 18, 21, 22], "learnabl": 5, "learner": 12, "learnig": 23, "learning_r": [10, 12], "learning_rate_init": [2, 3, 23], "learning_schedul": 15, "least": [2, 9, 10, 12, 13, 17, 18, 20], "leat": 15, "leav": [2, 3, 5, 7, 8, 11, 13, 23], "lectur": [2, 3, 7, 12, 13, 14, 15, 17, 18, 19, 21, 22, 24], "lecturenot": [2, 17, 22, 23], "left": [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 23, 24], "leftarrow": [10, 14], "legend": [0, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 15, 23, 24], "leinonen": 23, "len": [1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 18, 23, 24], "length": [1, 2, 3, 5, 6, 10, 11, 15, 17, 23, 24], "length_of_sequ": 6, "leq": [2, 7, 9, 10, 15, 16, 20, 23, 24], "less": [2, 3, 5, 6, 7, 8, 10, 11, 15, 17, 20, 23, 24], "lessen": 3, "let": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 23, 24], "letter": [1, 2, 18, 20, 23, 24], "level": [2, 3, 7, 8, 11, 17, 18, 19, 21, 23], "li": [10, 13], "lib": [], "liblinear": 12, "librari": [2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 18, 20, 22, 24], "licens": [2, 3, 17, 23], "lie": [2, 8, 13, 20, 23, 24], "life": [2, 3, 10, 14, 23], "lifetim": 15, "like": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 17, 18, 20, 23, 24], "likelihood": [2, 3, 7, 11, 23, 24], "lim_": 20, "limit": [2, 7, 8, 10, 14, 18, 23, 24], "lin_clf": 10, "lin_model": [], "lin_reg": 11, "linalg": [2, 4, 7, 8, 10, 13, 15, 18, 20, 23, 24], "line": [0, 1, 2, 5, 8, 10, 13, 15, 23], "line1": 10, "line2": 10, "line3": 10, "line_model": 0, "line_ms": 0, "line_predict": 0, "linear": [1, 3, 5, 7, 8, 9, 11, 12, 13, 14, 17, 20], "linear_model": [0, 1, 2, 7, 8, 9, 10, 11, 12, 13, 15, 23, 24], "linear_regress": 8, "linearli": [7, 24], "linearloc": [8, 15], "linearregress": [0, 1, 2, 8, 9, 11, 23, 24], "linearsvc": 10, "liner": [3, 5], "linerar": 12, "linewidth": [2, 4, 6, 8, 10, 11, 12], "link": [0, 2, 6, 11, 14, 17, 19, 21, 23], "linlag": 7, "linpack": [18, 23], "linreg": [2, 23], "linspac": [1, 2, 4, 5, 6, 8, 10, 11, 12, 15, 18, 20, 23, 24], "linu": 6, "linux": [2, 3, 17, 23], "liquid": [2, 23], "list": [0, 3, 4, 5, 6, 11, 17, 23], "listedcolormap": [11, 12], "literatur": [3, 9, 16, 22], "littl": [3, 5, 11, 14], "live": [1, 10], "ll": [2, 20, 23, 24], "lle": [2, 24], "lloyd": [6, 16], "lmb": [2, 4, 7, 8, 24], "lmbd": [2, 3, 5, 23], "lmbd_val": [2, 3, 5, 23], "lmbda": 15, "ln": [3, 15], "load": [3, 6, 8, 9, 11, 12], "load_boston": [], "load_breast_canc": [3, 9, 11, 12, 13], "load_data": [5, 6], "load_digit": [3, 5], "load_iri": [10, 11], "loc": [5, 8, 9, 10, 11, 12, 23], "local": [0, 2, 3, 5, 9, 14, 15, 24], "locat": [0, 4, 5, 10], "log": [0, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 15, 18, 23], "log10": [2, 7, 8, 24], "log_": [2, 23], "log_clf": 12, "logarithm": [2, 7, 9, 18, 23], "logic": [2, 3, 11, 23], "login": 0, "logist": [2, 3, 4, 10, 11, 12, 13, 14, 15, 17, 24], "logisticregress": [9, 11, 12, 13], "logit": 9, "logreg": [9, 11, 12, 13], "logspac": [2, 3, 5, 7, 8, 23, 24], "long": [2, 3, 5, 6, 14, 15, 23], "longer": [4, 5, 10, 12, 16, 18, 20, 23], "loocv": 8, "look": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 18, 20, 23, 24], "loop": [1, 3, 6, 8, 12, 14, 16, 17, 18, 23], "lose": 3, "loss": [2, 3, 5, 6, 7, 8, 9, 10, 12, 13, 15, 18, 23], "loss_fil": 6, "lossfil": 6, "lost": 6, "lot": [1, 3, 6, 8], "low": [2, 8, 11, 12, 13, 23, 24], "lower": [1, 2, 3, 5, 8, 11, 12, 18, 24], "lowercas": [18, 23], "lowest": [11, 15, 20], "lr": [3, 5, 6, 12], "lstat": [], "lstm": 6, "lstm_2layer": 6, "lstsq": [2, 23, 24], "lt": 8, "lu": [2, 7, 23, 24], "lubksb": 18, "luckili": 4, "ludcmp": 18, "lux": 18, "lvert": 3, "lw": [2, 23], "m": [0, 2, 3, 4, 5, 7, 8, 10, 11, 12, 13, 14, 15, 18, 20, 21, 22, 23, 24], "m_": [11, 14], "m_1": 16, "m_h": [2, 23], "m_k": 16, "m_l": 14, "m_n": [2, 23], "m_p": [2, 23], "m_t": 15, "ma": 13, "machin": [0, 1, 3, 5, 6, 7, 8, 9, 11, 12, 13, 14, 18, 22, 24], "machinelearn": [1, 2, 8, 17, 19, 21, 22, 23], "mackai": 22, "made": [2, 3, 5, 6, 7, 8, 9, 11, 13, 14, 23, 24], "mae": [2, 23], "magic": 6, "magnitud": [3, 8, 9, 15], "mai": [2, 3, 4, 5, 7, 8, 9, 10, 11, 13, 14, 15, 17, 18, 20, 23, 24], "mail": [19, 21], "main": [2, 3, 5, 6, 7, 8, 9, 11, 18, 22, 24], "mainli": [2, 7, 8, 9, 11, 23, 24], "maintain": 8, "major": [3, 8, 11, 12, 15, 18, 23], "make": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 13, 14, 15, 17, 18, 20, 22, 23], "make_axes_locat": 8, "make_moon": [10, 11, 12], "make_pipelin": [2, 8, 12, 24], "makedir": [2, 8, 9, 11, 23], "malcondit": 18, "malign": [3, 9, 11], "mammographi": 7, "manag": [0, 2, 4, 5, 17, 23], "mandatori": [21, 23], "mani": [0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 13, 15, 16, 17, 18, 20, 22, 23, 24], "manifold": 13, "manner": 5, "manual": 8, "map": [2, 3, 4, 8, 9, 10, 13, 14, 16, 20, 23], "marc": 24, "margin": [2, 7, 10], "marit": [2, 23], "mark": 23, "marker": [9, 18, 23], "markov": [17, 23], "marsaglia": 20, "mass": [2, 3, 7, 15, 24], "massag": [2, 23], "masses2016": [2, 23], "masses2016ol": [2, 23], "masses2016tre": 2, "masseval2016": [2, 23], "master": [19, 21], "mat": [17, 23], "mat1100": [17, 23], "mat1110": [17, 23], "mat1120": [17, 23], "match": [0, 3, 6, 7, 15, 16, 24], "materi": [0, 6, 7, 9, 15, 18, 19, 21, 24], "math": [5, 9, 14, 15, 18, 20, 22, 23], "mathbb": [2, 6, 7, 8, 9, 10, 13, 14, 15, 16, 18, 20, 23, 24], "mathbf": [2, 7, 8, 9, 10, 15, 18, 23, 24], "mathcal": [3, 7, 8, 9, 15], "matheemat": 5, "mathemat": [2, 8, 13, 14, 15, 17, 18, 20, 22, 23], "mathemati": 23, "mathrm": [2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 20, 23, 24], "matmul": [3, 4, 7], "matnat": 22, "matplotlib": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 24], "matric": [1, 2, 3, 5, 6, 8, 9, 10, 13, 15, 17, 24], "matrix": [2, 4, 5, 6, 8, 9, 10, 12, 15, 20], "matshow": 3, "matter": [4, 5, 15, 24], "max": [2, 3, 4, 5, 6, 11, 12, 14, 15, 21, 23], "max_depth": [2, 11, 12], "max_diff": 4, "max_diff1": 4, "max_diff2": 4, "max_it": [2, 3, 10, 15, 23], "max_iter": 16, "max_leaf_nod": 12, "max_sampl": 12, "maxdegre": [2, 8, 12, 24], "maxdepth": 12, "maxim": [3, 6, 7, 9, 10, 13], "maximum": [2, 4, 5, 7, 9, 10, 11, 12, 15, 16, 23, 24], "maxpolydegre": [7, 8, 24], "maxpooling2d": 5, "mbox": [7, 8, 24], "mcculloch": 14, "md": 13, "mdoel": 6, "mean": [0, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23], "mean_absolute_error": [2, 23], "mean_divisor": 16, "mean_i": 20, "mean_matrix": 16, "mean_squared_error": [0, 2, 6, 8, 9, 12, 23, 24], "mean_squared_log_error": [2, 23], "mean_vector": 16, "mean_x": 20, "meaning": [2, 6, 9, 23], "meansquarederror": [2, 23], "meant": [5, 9, 12, 15], "measur": [1, 2, 3, 4, 7, 8, 11, 13, 14, 16, 20, 23, 24], "mechan": [2, 6, 20, 23], "median": [2, 23, 24], "medicin": 14, "medium": [6, 10, 15], "medv": [], "meet": [2, 21], "mehta": [2, 23, 24], "memori": [5, 6, 13, 14, 15, 18], "mention": [2, 14, 15, 20, 23], "mere": 2, "meshgrid": [4, 7, 8, 10, 11, 12, 13], "mess": 0, "messag": [7, 15], "messi": 4, "met": [2, 5, 10, 24], "meteorolog": 11, "meter": 8, "method": [0, 1, 2, 3, 4, 5, 6, 7, 9, 10, 13, 14, 16, 17, 18, 20, 22, 24], "metion": 8, "metric": [0, 2, 3, 5, 8, 9, 11, 12, 16, 23, 24], "metropoli": [17, 23], "mev": [2, 20, 23], "mgd": 15, "mglearn": [17, 23], "mgrid": 15, "mhjensen": [], "mi": 12, "mia": [21, 23], "microsoft": 22, "mid": 3, "midel": 6, "midnight": 0, "midpoint": 11, "might": [0, 2, 3, 4, 6, 8, 11, 15, 24], "mild": 11, "millimet": 8, "million": [2, 23, 24], "mimic": 14, "min": [2, 4, 7, 10, 11], "min_": [2, 4, 7, 16, 23, 24], "min_samples_leaf": 11, "mind": [0, 2, 8, 15, 23, 24], "mindboard": 6, "mine": [17, 23], "mini": [3, 13, 14, 15], "minibatch": [3, 13, 15], "minibathc": 15, "miniforge3": [], "minim": [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 24], "minima": [2, 3, 9, 15, 23], "minimum": [2, 3, 4, 8, 10, 11, 13, 15, 24], "minmaxscal": [2, 24], "minor": 20, "minst": 3, "minu": 9, "mirjalili": 23, "mirror": 11, "misc": 8, "misclassif": [10, 11, 12], "misclassifi": [10, 12], "miser": 2, "mismatch": 3, "miss": [9, 12], "mistak": 6, "mit": 22, "mix": [3, 4, 23], "mixtur": 15, "mk": [11, 18], "mkdir": [2, 8, 9, 11, 23], "ml": [2, 3, 12, 15, 18, 24], "mlab": 20, "mle": [7, 9], "mlp": 3, "mlpclassifi": 3, "mlpregressor": [2, 23], "mm": 18, "mml": 24, "mn": [14, 20], "mnist": [3, 13], "mod": 20, "mode": [19, 21, 23], "model": [1, 4, 5, 7, 9, 10, 11, 12, 13, 15, 16, 17, 20, 22, 24], "model_select": [0, 1, 2, 3, 5, 7, 8, 9, 11, 12, 13, 23, 24], "moder": 12, "modern": [2, 8, 9, 17, 23], "modif": [4, 14, 15], "modifi": [2, 3, 5, 7, 9, 10, 12, 14, 15, 23, 24], "modul": [1, 2, 18, 23], "modular": 20, "modulo": 20, "moe": [13, 24], "moment": [7, 8, 15, 20], "mondai": [21, 23], "monitor": 15, "monoton": [7, 14, 20], "mont": [2, 8, 17, 20, 22, 23], "montli": 1, "moor": [7, 8], "more": [1, 2, 3, 4, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 20], "moreov": [2, 5], "morten": [21, 23, 24], "mortenhj": 23, "most": [0, 1, 2, 3, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 20, 23, 24], "mostli": [3, 13], "motion": [2, 15], "motiv": [3, 6], "move": [0, 1, 2, 6, 7, 8, 9, 11, 14, 15, 16, 20, 24], "mpl": [9, 23], "mpl_toolkit": [4, 8, 15], "mplot3d": [4, 8, 15], "mplregressor": 3, "mse": [0, 1, 2, 6, 7, 8, 11, 12, 23, 24], "mse_simpletre": 12, "mselassopredict": 7, "mselassotrain": 7, "mseownridgepredict": [8, 24], "msepredict": 7, "mseridgepredict": [2, 7, 8, 24], "msetrain": 7, "msle": [2, 23], "mt": [9, 14], "mu": [2, 8, 13, 15, 20, 23], "mu0": 20, "mu1": 20, "mu2": 20, "mu_": [8, 20], "mu_i": 8, "mu_n": 13, "mu_x": 20, "much": [0, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 18, 20, 23, 24], "multi": [2, 3, 5, 9, 17, 23], "multiclass": [3, 9], "multidimension": [13, 14, 23], "multilay": 3, "multinomi": 9, "multipl": [0, 4, 6, 7, 8, 9, 14, 15, 20, 24], "multipli": [5, 7, 8, 13, 15, 18, 20, 24], "multiplum": 10, "multivari": [2, 4, 12, 13, 17, 20, 23], "multivariate_norm": [13, 16], "multpli": 1, "murphi": [13, 22, 23], "must": [0, 3, 4, 7, 8, 10, 12, 14, 15, 16, 20, 24], "mutat": 9, "mutual": [3, 5, 8, 15], "mx_": 20, "my": 23, "myenv": [], "myriad": [2, 17, 23], "mz1": 20, "mz2": 20, "m\u00f8svatn": 8, "n": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 18, 20, 23, 24], "n1": 18, "n2": 18, "n_": [3, 4, 5, 10, 14, 20], "n_0": [14, 20], "n_boostrap": [8, 12], "n_bootstrap": 8, "n_categori": [3, 5], "n_cluster": 16, "n_compon": 13, "n_epoch": 15, "n_estim": 12, "n_examples_to_gener": 6, "n_featur": 3, "n_filter": 5, "n_hidden": 4, "n_hidden_neuron": [2, 3, 23], "n_i": 20, "n_input": [2, 3, 5, 24], "n_instanc": 11, "n_job": 12, "n_k": 16, "n_l": [14, 20], "n_layer": 3, "n_m": 11, "n_neuron": 3, "n_neurons_connect": 5, "n_neurons_layer1": 3, "n_neurons_layer2": 3, "n_point": 16, "n_sampl": [8, 10, 11, 12, 16], "n_split": 8, "n_step": 6, "n_t": 4, "n_x": 4, "nabla": [3, 15], "nabla_": [4, 15], "nabla_w": 15, "nag": 15, "naimi": [2, 23], "naiv": 9, "naive_kmean": 16, "name": [0, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 20, 21, 23, 24], "narrow": 15, "nation": [3, 7], "nativ": [17, 23], "natur": [2, 3, 6, 10, 11, 14, 15, 20, 22, 23], "navier": 14, "navig": 0, "nb": 20, "nb_": 18, "nbconvert": 23, "nd": 16, "ndarrai": 8, "ne": [11, 12, 18, 20, 24], "nearest": [3, 5, 8, 13], "nearli": 15, "neat": 23, "neccesari": 8, "necess": 4, "necessari": [2, 3, 5, 6, 10, 16, 23], "necessarili": [2, 6, 13, 20, 23], "necesserali": 7, "neck": 9, "need": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 24], "neg": [2, 3, 5, 7, 8, 9, 12, 15, 18, 20, 23], "neg_mean_squared_error": 8, "neglect": 20, "neglig": 20, "neighbor": [5, 8, 13], "neither": [6, 15], "neq": [15, 16, 20], "nervou": 14, "nest": [11, 14], "nesterov": 15, "net": [4, 6, 14], "netlib": [18, 23], "network": [2, 11, 15, 17, 22, 24], "neural": [2, 15, 17, 22, 24], "neural_network": [2, 3, 4, 23], "neuralnetwork": 3, "neuron": [3, 4, 5, 6, 14], "neutral": [2, 23], "neutron": [2, 23], "never": [3, 6, 8, 11, 20], "new": [0, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 15, 16, 18, 23, 24], "new_chang": 15, "new_hobbit": 23, "newaxi": [2, 5, 8, 11], "newli": [2, 23], "newton": [3, 9, 10, 15, 20], "next": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 15, 16, 23, 24], "next_guess": 15, "next_input": 6, "ng": 3, "ni": 16, "nice": [2, 3, 7, 13, 23, 24], "niter": 15, "nitric": [], "nlambda": [2, 7, 8, 24], "nlp": 22, "nm": 20, "nm_n": [2, 23], "nmse": 8, "nn": [4, 7, 8, 14, 18, 23], "nn_model": 3, "nnmin": 4, "node": [3, 5, 11, 12, 14], "nois": [2, 6, 7, 8, 10, 11, 12, 15, 23, 24], "noise_dimens": 6, "noisi": [3, 8], "non": [2, 3, 5, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 20, 23, 24], "none": [2, 3, 4, 6, 7, 11, 12, 15, 20, 23, 24], "nonlinear": [5, 8, 10, 11, 13, 14], "nonneg": [8, 11, 15], "nonparametr": 8, "nonsens": 20, "nonsingular": 18, "nonumb": [5, 9, 10, 15, 18], "nor": [3, 6, 15], "norm": [2, 3, 7, 8, 10, 13, 15, 23, 24], "normal": [1, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 20, 23, 24], "normali": [18, 23], "norwai": [8, 23], "notat": [2, 4, 7, 8, 15, 16, 20, 23, 24], "note": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 13, 14, 15, 16, 17, 18, 20, 22, 23], "notebook": [0, 1, 2, 3, 5, 11, 17, 23], "noth": [3, 4, 7, 10, 14, 16, 20, 24], "notic": [6, 7, 14, 15, 18, 20, 23], "notion": 5, "novel": [5, 8, 12, 23], "novemb": [3, 21, 23], "now": [0, 1, 2, 4, 6, 7, 8, 9, 10, 12, 13, 14, 16, 17, 18, 20, 23, 24], "nowadai": [2, 3, 5, 11, 17, 23], "nox": [], "np": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 18, 20, 23, 24], "npr": 4, "nsampl": 8, "nt": 4, "nu": 20, "nuclear": [7, 24], "nuclei": [2, 20, 23], "nucleon": [2, 23], "nucleu": [2, 23], "num": 6, "num_coordin": 4, "num_hidden_neuron": 4, "num_it": 4, "num_neuron": 4, "num_neurons_hidden": 4, "num_point": 4, "num_tre": 12, "num_valu": 4, "number": [1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 21, 23], "numberid": 9, "numberparamet": 5, "numer": [2, 7, 8, 11, 12, 13, 14, 15, 17, 18, 22, 23, 24], "numpi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 20, 24], "nunmpi": [7, 24], "nx": 4, "ny": 20, "o": [2, 3, 6, 7, 8, 9, 10, 11, 13, 18, 21, 22, 23, 24], "obei": [8, 13, 15], "object": [0, 2, 3, 6, 10, 12, 18, 23], "obliqu": [7, 24], "observ": [2, 3, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 20, 23], "obtain": [2, 3, 7, 8, 9, 10, 11, 12, 14, 15, 16, 18, 20, 23, 24], "obviou": [7, 8, 13, 20, 24], "obviouli": 23, "obvious": [2, 6, 7, 8, 18, 23], "oc": 24, "occupi": [], "occur": [2, 8, 10, 11, 18, 20, 23], "octob": [21, 23], "od": 2, "odd": [2, 5, 9, 23, 24], "odenum": 4, "odesi": 4, "oen": 2, "off": [3, 5, 6, 7, 11, 15, 20], "offer": [8, 13, 17, 18, 19, 21, 23], "offic": [21, 23], "offici": [19, 23], "often": [0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 24], "ofter": [18, 23], "ol": [2, 15, 24], "old": [0, 3, 7, 12, 15], "ols_paramet": 1, "ols_sk": 8, "ols_svd": 8, "olstheta": [2, 7], "omega": [4, 5, 8], "omega_0": 5, "omit": [2, 7, 23, 24], "onc": [3, 8, 11, 13, 15], "one": [0, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 20, 21, 23, 24], "onehot": 3, "onehot_vector": 3, "onehotencod": 11, "ones": [1, 2, 4, 7, 8, 10, 11, 12, 13, 15, 18, 23, 24], "ones_lik": 6, "ong": 24, "onl": 5, "onli": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 23, 24], "onlin": [0, 13, 19], "onto": [7, 13, 24], "open": [0, 2, 3, 6, 8, 9, 11, 17, 19, 21, 23], "oper": [0, 1, 2, 3, 5, 7, 8, 12, 13, 14, 15, 17, 20, 23, 24], "operation": 20, "oplu": 20, "opmiz": 15, "opportun": 2, "oppos": [8, 15], "opposit": [3, 7, 10, 24], "opt": [3, 7, 23], "optim": [1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 16], "optimis": [3, 5], "option": [0, 2, 3, 5, 7, 8, 10, 13, 18, 24], "optmiz": [3, 10, 15, 24], "oral": 23, "orang": 2, "order": [0, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 18, 20, 23, 24], "ordinari": [2, 4, 5, 9, 13, 15, 17], "oreilli": [22, 23], "org": [1, 2, 5, 6, 17, 18, 22, 23], "organ": [8, 9, 12, 18], "orient": [3, 7, 20, 24], "origin": [0, 2, 5, 7, 8, 10, 13, 14, 15, 18, 23, 24], "orthogn": [7, 24], "orthogon": [2, 7, 8, 10, 13, 15, 18, 23, 24], "orthonorm": [7, 24], "os": [21, 23], "oscar": 3, "oscil": [5, 15], "oskar": 23, "oskarlei": 23, "oslo": [2, 17, 19, 21, 23, 24], "osx": [2, 17, 23], "other": [1, 2, 3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 17, 19, 20, 21, 22, 24], "otherwis": [2, 3, 6, 9, 15, 18, 23], "ouput": [7, 9, 14], "our": [0, 1, 3, 4, 5, 8, 9, 10, 11, 12, 14, 16, 17, 18, 20], "ourmodel": 2, "ourselv": [2, 7, 8, 10, 13, 15, 23, 24], "out": [0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 20, 23, 24], "out_fil": 11, "outcom": [2, 9, 11, 12, 14, 20, 24], "outdoor": 11, "outer": [8, 14, 15], "outfil": 6, "outlier": [2, 10, 23, 24], "outlin": [8, 12, 13], "outlook": 11, "outperform": 12, "output": [2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 18, 20, 23, 24], "output_bia": 3, "output_bias_gradi": 3, "output_shap": 6, "output_weight": 3, "output_weights_gradi": 3, "outputlayer1": 14, "outputlayer2": 14, "outsid": 6, "over": [0, 1, 2, 3, 5, 6, 7, 8, 11, 12, 14, 15, 18, 23, 24], "over1": 15, "overal": [3, 12], "overcast": 11, "overcom": [14, 15], "overdetermin": [2, 23], "overfit": [2, 3, 5, 8, 11, 12, 15], "overflow": 7, "overhead": 14, "overlap": [5, 9, 10, 11], "overlin": [2, 7, 8, 11, 12, 13, 16, 18, 23, 24], "overst": 2, "overtrain": 6, "overview": 5, "own": [1, 6, 7, 8, 10, 14, 15, 17, 18], "owner": [], "ownmsepredict": 2, "ownmsetrain": 2, "ownridgetheta": [2, 8, 24], "ownypredictridg": 2, "ownytilderidg": 2, "oxid": [], "p": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 18, 20, 23, 24], "p0": 4, "p1": 4, "p_": [4, 6, 10, 11], "p_hidden": 4, "p_i": [7, 20], "p_j": 20, "p_n": 20, "p_output": 4, "p_x": 20, "pack": [2, 23], "packag": [0, 2, 3, 5, 6, 7, 10, 13, 15, 17, 20, 24], "packtpub": 23, "packtpublish": 23, "pad": [5, 6], "page": [2, 17, 23], "pai": [0, 2, 3, 11, 15], "pair": [2, 4, 5, 11, 17, 20, 23], "paltform": 0, "panda": [2, 6, 7, 8, 9, 11, 13, 17], "panel": 23, "paper": 3, "paradigm": [2, 23], "parallel": [12, 15, 17, 18, 23], "param": 4, "paramat": 4, "paramet": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 20], "parameter": [2, 8, 12, 23, 24], "parametr": [2, 8, 23, 24], "paramt": [5, 7], "part": [2, 3, 5, 7, 8, 12, 18, 19, 20, 21, 23, 24], "partial": [1, 2, 3, 7, 8, 9, 10, 12, 13, 14, 15, 20, 23, 24], "particip": [0, 17, 19, 21, 23], "particl": [2, 6, 15, 20, 23], "particular": [1, 2, 3, 4, 5, 7, 8, 11, 12, 13, 14, 15, 20, 22, 23, 24], "particularli": [7, 8, 10, 13, 15, 20, 24], "partit": [3, 6, 11], "partli": [8, 23], "partner": 0, "pass": [4, 5, 14, 16], "past": [12, 20], "patch": [8, 20], "path": [2, 6, 8, 9, 11, 17, 23], "patient": 9, "patter": 6, "pattern": [2, 5, 6, 14, 22, 23], "pauli": [2, 23], "pc": [0, 13, 17], "pca": [2, 9, 17, 23, 24], "pd": [2, 6, 7, 8, 9, 11, 13, 23, 24], "pde": 4, "pdf": [0, 1, 2, 5, 6, 7, 8, 11, 22, 23], "pedagog": [2, 23, 24], "penal": 8, "penalti": [8, 15], "penros": [7, 8], "pentagon": 15, "peopl": [3, 11, 15, 17], "per": [2, 3, 8, 19, 21, 23], "percentag": [12, 13, 21], "perceptron": [2, 3, 9, 23], "peregrin": 23, "perfect": [2, 3, 15, 23], "perfectli": [6, 8], "perform": [1, 2, 4, 5, 6, 7, 8, 10, 12, 13, 14, 15, 16, 17, 18, 20, 23, 24], "performac": 6, "perhap": [2, 7, 15, 23, 24], "perimet": 3, "period": [3, 6, 20], "permiss": 0, "permut": 13, "persist": 15, "person": [1, 7, 8, 9, 19, 21, 23], "perspect": 22, "pertin": [14, 23], "petal": [10, 11], "peter": [22, 24], "phantom": 20, "phase": [8, 14], "phenomena": 20, "phi": 10, "phi_k": 10, "philosophi": 15, "phone": [21, 23], "photo": [6, 23], "phrase": [2, 23], "physic": [2, 3, 6, 9, 14, 15, 20, 21, 22, 23, 24], "pi": [4, 5, 7, 8, 9, 11, 14, 15, 20], "pick": [3, 11, 12, 13, 15, 16], "pickl": 3, "pictur": [2, 23], "pie": [17, 23], "piec": [13, 16], "pillow": [2, 17, 23], "pinv": [7, 8, 15, 24], "pip": [0, 2, 3, 17, 23], "pip3": [2, 3, 23], "pipelin": [2, 8, 10, 12, 24], "pippin": 23, "pit": 6, "pitfal": 8, "pitt": 14, "pixel": [3, 5, 6, 23], "pixel_height": [3, 5], "pixel_width": [3, 5], "place": [0, 2, 6, 8, 10, 15, 18, 23], "plai": [2, 5, 6, 7, 8, 10, 13, 17, 23, 24], "plain": [10, 12, 14, 15, 16], "plan": [8, 11, 21, 22, 23], "plane": [10, 11], "plateau": 7, "platform": [17, 23], "plausibl": 14, "pleas": [15, 21, 23], "plenti": 3, "plethora": [5, 14], "plot": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 24], "plot_confusion_matrix": [9, 12], "plot_count": 8, "plot_cumulative_gain": [9, 12], "plot_data": 3, "plot_dataset": 10, "plot_decision_boundari": [11, 12], "plot_import": 12, "plot_max": 6, "plot_min": 6, "plot_model": 6, "plot_numb": 6, "plot_predict": 10, "plot_regression_predict": 11, "plot_result": 6, "plot_roc": [9, 12], "plot_surfac": [4, 8, 15], "plot_train": 11, "plot_tre": [11, 12], "plt": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 23, 24], "plu": [2, 5, 7, 9, 23, 24], "pm": 10, "pmatrix": 4, "pml": 22, "pn": 5, "png": [2, 6, 8, 9, 11, 23], "point": [2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 15, 16, 18, 20, 21, 23, 24], "point_1": 6, "point_2": 6, "poisson": [17, 20, 23], "poli": [8, 10], "poly100_kernel_svm_clf": 10, "poly3": 2, "poly3_plot": 2, "poly_featur": [0, 10, 11], "poly_features10": 11, "poly_fit": 11, "poly_fit10": 11, "poly_kernel_svm_clf": 10, "poly_model": 0, "poly_ms": 0, "poly_predict": 0, "polydegre": [2, 7, 8, 12, 24], "polygon": 15, "polym": 14, "polynomi": [0, 2, 7, 8, 9, 10, 11, 12, 13, 23, 24], "polynomial_featur": [0, 1, 8], "polynomial_svm_clf": 10, "polynomialfeatur": [0, 1, 2, 8, 10, 11, 24], "polytrop": [2, 8], "pool": 5, "pool_siz": 5, "poor": [3, 15], "poorli": [2, 24], "popul": [2, 7, 23, 24], "popular": [0, 2, 3, 5, 8, 9, 10, 11, 13, 14, 17, 18, 20, 24], "popularli": [2, 23], "portabl": 12, "portion": [13, 15], "pose": [2, 6, 7, 8, 13, 20, 23], "posit": [2, 3, 4, 5, 7, 9, 10, 12, 13, 15, 16, 18, 20, 23, 24], "possibl": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 20, 21, 23, 24], "possibli": [8, 10, 15], "posterior": 7, "postpon": [2, 24], "postul": 7, "potenti": [2, 5, 7, 8, 14, 15], "pott": 14, "power": [2, 3, 7, 8, 10, 11, 14, 15, 23, 24], "pp": [7, 8], "practic": [1, 2, 7, 8, 9, 10, 20, 24], "practition": [2, 3, 5, 23], "pre": 23, "preced": [3, 13, 14, 20], "preceed": 6, "preceq": 10, "precis": [2, 4, 7, 13, 15, 18, 20, 23, 24], "pred": 8, "predicit": 2, "predict": [0, 1, 2, 3, 7, 8, 9, 10, 11, 12, 17, 22, 23, 24], "predict_prob": 3, "predict_proba": [9, 12], "predictor": [2, 7, 8, 9, 11, 12, 13, 23, 24], "prefer": [0, 2, 3, 8, 10, 11, 13, 15, 17, 23], "prepar": [2, 8, 18, 23, 24], "preprocess": [0, 1, 2, 6, 8, 9, 10, 11, 12, 13], "prerequisit": 2, "presenc": 15, "present": [2, 7, 8, 9, 11, 14, 15, 18, 20, 23, 24], "preserv": [5, 13, 18], "press": [0, 15, 22], "pretrain": [3, 6], "pretti": [2, 6, 10, 11, 17, 23], "prev_centroid": 16, "prevent": [15, 20], "previou": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 13, 14, 15, 18, 20, 24], "previous": [4, 5, 11, 12, 20], "price": [2, 6, 11, 15], "primal": 10, "primari": [2, 9, 23], "prime": 20, "princip": [2, 7, 9, 17, 23, 24], "principl": [2, 8, 9, 10, 16, 23], "print": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 18, 20, 23, 24], "print_funct": [10, 11], "printout": [2, 23], "prior": [2, 7, 8, 23], "privat": 2, "prob": [3, 20], "probabilist": [2, 22, 23, 24], "probabl": [2, 3, 5, 6, 8, 9, 12, 15, 17, 23, 24], "problem": [2, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 17, 18, 20], "probml": 22, "proce": [2, 7, 8, 9, 10, 11, 12, 13, 15, 18, 23, 24], "procedur": [4, 6, 7, 8, 10, 12, 13, 15, 24], "proceed": 18, "process": [2, 4, 6, 8, 11, 12, 14, 15, 17, 18, 20, 22, 23], "prod": 22, "prod_": [3, 7, 9], "produc": [2, 5, 6, 7, 8, 11, 12, 13, 14, 15, 17, 18, 20, 23, 24], "product": [1, 2, 3, 5, 7, 8, 9, 10, 14, 15, 17, 18, 23, 24], "profess": [2, 23], "program": [0, 2, 3, 6, 7, 8, 10, 14, 16, 17, 18, 19, 20, 21, 23, 24], "programm": 18, "progress": [3, 6, 16], "prohibit": 8, "project": [0, 2, 3, 4, 5, 7, 13, 15, 17, 19, 24], "project_root_dir": [2, 8, 9, 11, 23], "promin": 14, "promis": 10, "promot": [21, 23], "prone": [0, 11], "pronounc": [15, 17, 23], "proof": [2, 13, 14, 15, 23], "propag": [4, 5, 15], "proper": [2, 4, 8, 9], "properli": [3, 8, 10, 12, 15], "properti": [1, 2, 3, 5, 14, 15, 18, 23], "proport": [2, 3, 7, 11, 13, 15, 20, 23, 24], "propos": [3, 6, 8, 12, 23], "propto": [7, 15], "proton": [2, 23], "prove": [5, 15], "provid": [2, 3, 5, 6, 7, 8, 10, 11, 12, 14, 15, 17, 18, 20, 23, 24], "proxi": [3, 15], "prune": 11, "pseudo": [18, 20], "pseudoinv": 7, "pseudoinvers": [7, 8], "pseudorandom": [8, 20], "psychologi": [2, 23], "pt": 15, "public": [0, 2, 17, 23], "pull": 0, "punish": [2, 3, 23], "pure": [5, 11, 20], "purest": 11, "puriti": 11, "purpos": [2, 5, 12, 14, 16, 23], "push": 0, "put": 3, "py": 7, "pycod": 23, "pydata": 17, "pydot": 11, "pyhton2": 23, "pylab": [9, 23], "pypi": 17, "pyplot": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 23, 24], "pythagora": 7, "python": [3, 4, 5, 7, 8, 10, 13, 14, 15, 16, 20, 24], "python2": 2, "python3": [2, 17, 23], "pytorch": [2, 17, 23], "q": [7, 8, 10, 13, 20], "qp": 10, "qquad": [4, 13, 15, 18], "qr": [7, 8, 18, 24], "quad": [3, 15, 18], "quadrat": [2, 10, 11, 15, 23], "qualit": [6, 11, 20], "qualiti": [2, 11, 17, 23, 24], "quantifi": 3, "quantil": 12, "quantit": [2, 8, 11, 23], "quantiti": [1, 2, 4, 7, 8, 9, 11, 12, 13, 14, 16, 18, 20, 23, 24], "quantum": [6, 14, 22, 23], "quartil": [2, 24], "quench": 7, "queri": 11, "question": [2, 7, 8, 11, 13, 14, 15, 21, 23, 24], "qugan": 6, "quick": [6, 20], "quickli": [3, 5, 11, 13, 15], "quit": [0, 3, 7, 8, 11, 12, 14, 24], "quot": 6, "r": [0, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 24], "r2": [2, 7, 8, 23, 24], "r2_score": [2, 23], "r2score": [2, 23], "r_1": 11, "r_2": 11, "r_j": 11, "r_m": 11, "rad": [], "radial": [10, 14], "radioact": 20, "radiu": [2, 3, 24], "rain": 11, "ramp": 3, "ran0": 20, "ran1": 20, "ran2": 20, "ran3": 20, "rand": [0, 2, 6, 7, 8, 11, 12, 15, 18, 23, 24], "randint": [8, 11, 15], "randn": [0, 2, 3, 4, 7, 8, 11, 13, 15, 23, 24], "random": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 15, 16, 17, 18, 23, 24], "random_forest_model": 12, "random_index": 15, "random_indic": [3, 5], "random_st": [9, 10, 11, 12, 13], "randomforestclassifi": 12, "randomli": [3, 8, 11, 15, 16], "rang": [2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 20, 23, 24], "rangl": [2, 8, 13, 20, 23, 24], "rangle_x": 20, "rank": [7, 24], "rankdir": 6, "raphson": [3, 10, 15], "rapidli": 2, "rare": [3, 15], "raschka": [23, 24], "rasckha": 23, "rate": [3, 4, 5, 6, 10, 11, 12, 14, 15], "rather": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 20, 23, 24], "ratio": [6, 9, 11, 12, 13], "rational": [2, 23], "ravel": [7, 8, 9, 10, 11, 12, 13, 15, 18], "raw": 5, "rbf": [10, 13, 14], "rbf_kernel_svm_clf": 10, "rbf_pca": 13, "rc": 20, "rcond": [2, 23, 24], "rcparam": [3, 5, 9, 10, 11, 12, 20, 23], "re": [0, 4, 6, 15], "reach": [3, 6, 7, 8, 11, 12, 14, 15, 16], "read": [1, 2, 4, 5, 6, 7, 8, 9, 10, 13, 14, 18, 20, 22], "read_csv": [2, 8, 9, 11], "read_fwf": [2, 23], "reader": [2, 8, 18, 20, 23], "readi": [2, 3, 7, 8, 10, 12, 13, 14, 18, 23], "readili": 3, "readm": 0, "readthedoc": 17, "real": [1, 2, 3, 6, 9, 12, 13, 14, 18, 24], "real_loss": 6, "real_output": 6, "realist": [10, 23], "realiti": 20, "realiz": [3, 14], "realli": [2, 3, 23], "rearrang": 15, "reason": [2, 3, 5, 6, 12, 15, 22, 23], "reassign": 3, "recal": [7, 8, 11, 12, 13, 14, 18, 20, 23, 24], "recast": 5, "receiv": [3, 5, 12, 14, 20], "recent": [2, 8, 15, 22], "recept": [5, 14], "receptive_field": 5, "recip": [2, 8, 9, 18, 23, 24], "reciproc": 7, "recogn": [2, 6, 7, 12, 23], "recognit": [2, 3, 5, 14, 22, 23], "recommen": 23, "recommend": [0, 2, 4, 5, 6, 7, 8, 10, 15, 17, 18, 22], "reconsid": 11, "reconstruct": 13, "record": [12, 19, 21, 23], "recreat": 0, "rectangl": [11, 15], "rectangular": [7, 24], "rectifi": [3, 5, 14], "recur": [2, 17, 23], "recurr": [2, 3, 17, 23], "recurs": [11, 17, 18, 23], "red": [2, 5, 6, 8, 10, 11], "redefin": [2, 12, 23, 24], "reduc": [3, 5, 7, 8, 11, 12, 13, 15, 23], "reduct": [2, 12, 13, 17, 20, 23, 24], "refer": [2, 3, 4, 5, 7, 8, 13, 14, 15, 16, 18, 22, 23, 24], "referenc": 4, "refin": 14, "refit": 8, "reflect": [2, 3, 6, 7, 20, 23], "refresh": [17, 23], "refreshprogrammingskil": 23, "reg": [12, 13], "regard": [3, 11, 15], "regardless": [1, 14], "region": [5, 6, 8, 11, 14], "regist": [8, 20], "reglasso": 7, "regr_1": [2, 11], "regr_2": [2, 11], "regr_3": [2, 11], "regress": [1, 3, 10, 13, 14, 17, 18], "regressor": [2, 9, 12], "regridg": [2, 7, 8, 24], "regular": [2, 5, 6, 7, 8, 9, 11, 15, 21, 23, 24], "regularli": 0, "reilli": [2, 22, 23], "reinforc": [2, 10, 17, 23], "reiter": 3, "reject": 9, "rel": [2, 6, 8, 9, 11, 14, 15, 20, 23, 24], "relat": [2, 3, 5, 6, 7, 13, 15, 16, 18, 20, 23, 24], "relationship": [2, 6, 11, 23], "relativeerror": [2, 23, 24], "releas": [3, 17, 23], "relev": [2, 3, 7, 9, 13, 17, 20, 23], "reli": [2, 8, 10], "reliabl": [9, 20], "relu": [5, 6, 23], "remain": [3, 4, 6, 8, 14, 18, 20], "remaind": 20, "reman": 4, "remark": 3, "rememb": [2, 10, 15, 18, 23], "remind": [2, 7, 13, 15, 18, 20], "remot": 0, "remov": [6, 7, 8, 24], "renam": 0, "render": [2, 23, 24], "reorder": [7, 9, 24], "reorgan": [2, 23], "repeat": [2, 3, 5, 6, 7, 8, 11, 12, 13, 15, 16, 18, 20, 23, 24], "repeated": 23, "repeatedli": [2, 8, 12, 15], "repet": 5, "repetit": [8, 23, 24], "rephras": 15, "replac": [2, 3, 5, 6, 7, 8, 12, 14, 16, 17, 23, 24], "replica": 8, "repo": 0, "report": 23, "repositori": [6, 23], "repres": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 20, 23, 24], "represent": [2, 3, 5, 8, 20, 23], "representd": 5, "reproduc": [0, 1, 2, 7, 8, 11, 14, 17, 20, 23, 24], "repuls": [2, 23], "request": [2, 15], "requir": [0, 2, 3, 5, 6, 7, 8, 10, 11, 13, 14, 15, 18, 23, 24], "res1": 4, "res2": 4, "res3": 4, "res_analyt": 4, "res_analytical1": 4, "res_analytical2": 4, "res_analytical3": 4, "resaml": 8, "resampl": [2, 9, 12, 17, 23, 24], "rescal": [2, 13, 14, 24], "rescu": 7, "reseach": 8, "research": [2, 6, 15, 17, 22, 23], "resembl": [8, 20], "reserv": [3, 7, 8, 20], "reshap": [2, 3, 4, 5, 6, 8, 10, 11, 12, 18, 23, 24], "residenti": [], "residu": [2, 7, 15, 23], "resiz": [7, 24], "resourc": 23, "respect": [1, 2, 3, 4, 5, 7, 8, 9, 10, 12, 13, 14, 15, 16, 20, 23, 24], "respond": 14, "respons": [2, 9, 11, 14, 23, 24], "rest": [2, 7, 24], "restat": [2, 14, 23], "restor": 6, "restored_discrimin": 6, "restored_gener": 6, "restrict": [2, 5, 11, 14, 23], "result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23], "retail": [], "retain": [7, 8, 24], "return": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 16, 18, 20, 23, 24], "return_data": 16, "return_sequ": 6, "return_x_i": 11, "reus": [3, 5, 8], "reveal": [2, 14, 23], "revers": [3, 18], "review": [17, 18], "revisit": 16, "revolut": 23, "reward": [2, 6, 23], "rewrit": [1, 2, 5, 7, 8, 9, 10, 12, 13, 14, 15, 18, 20], "rewritten": [4, 8, 10, 12, 20], "rewrot": 15, "rf": 12, "rgb": 5, "rgoj5yh7evk": 17, "rh": 8, "rho": [2, 12, 15], "rho_1": 12, "rho_2": 12, "rho_m": 12, "rich": [2, 23], "ride": 11, "rideclass": 11, "ridedata": 11, "ridg": [9, 13, 15, 17, 23], "ridge_sk": 8, "ridgetheta": 7, "right": [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 14, 15, 16, 18, 20, 23, 24], "right_sid": 4, "rightarrow": [2, 3, 7, 8, 10, 13, 14, 15, 20, 23, 24], "rigor": [2, 23, 24], "ring": 8, "rise": [2, 23], "risk": [2, 15, 23], "rival": 6, "river": [], "rlm": 23, "rm": 20, "rmse": [], "rmsporp": 15, "rmsprop": [3, 5, 6, 15], "rnd_clf": 12, "rng": 20, "rnn": [6, 14], "rnn1": 6, "rnn2": 6, "rnn_2layer": 6, "rnn_input": 6, "rnn_output": 6, "rnn_train": 6, "rntrick1": 20, "rntrick2": 20, "rntrick3": 20, "rntrick4": 20, "ro": [2, 15, 23], "robert": 22, "robust": [2, 23], "robustscal": [2, 24], "roc": [9, 12], "role": [2, 4, 7, 8, 10, 17, 23, 24], "roll": 8, "room": [2, 21, 23], "root": [0, 2, 7, 11, 15, 20, 24], "rot": 23, "rotat": [3, 10, 11, 12], "rotation_matrix": 11, "roughli": [3, 5], "round": [9, 11, 15], "routin": [15, 18, 23], "row": [1, 2, 3, 4, 7, 8, 11, 13, 18, 23, 24], "rr": [7, 24], "rrr": [7, 24], "rug": 15, "rule": [2, 3, 7, 8, 15, 23, 24], "run": [0, 2, 3, 4, 6, 7, 8, 10, 11, 13, 15, 17, 23, 24], "runtim": [0, 3, 8, 16], "rust": [2, 17, 18, 23], "rvert": 3, "rvert_2": 3, "s_": [5, 8], "s_1": 8, "s_i": [8, 9], "s_j": 8, "s_k": 8, "saddl": 15, "sai": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 18, 20, 23, 24], "said": [8, 11, 15], "sake": [2, 7, 9, 13, 23, 24], "sale": [2, 23], "sam": 23, "same": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 13, 14, 16, 18, 20, 23, 24], "samm": 12, "sampl": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 15, 16, 17, 18, 20, 23, 24], "sample_vari": 16, "sampleexptvari": 20, "samwis": 23, "sastri": 13, "satisfactori": [2, 23], "satisfi": [3, 4, 5, 8, 10, 15, 18, 20], "satur": [3, 8], "save": [2, 6, 8, 9, 11, 15, 23], "save_fig": [2, 8, 9, 11, 12, 23], "savefig": [2, 6, 8, 9, 11, 20, 23], "savetxt": 6, "saw": [7, 24], "scalabl": 12, "scalar": [4, 7, 8, 12, 24], "scale": [2, 3, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 21, 23], "scale_mean": 6, "scale_std": 6, "scaler": [2, 9, 10, 11, 12, 13, 24], "scan": [7, 9], "scari": 7, "scatter": [0, 2, 3, 8, 9, 10, 11, 16, 23], "scenario": [8, 15], "schedul": 15, "scheme": [3, 15], "schrage": 20, "sch\u00f8yen": 8, "scienc": [2, 3, 12, 14, 15, 17, 19, 20, 21, 22], "scientif": [2, 17, 23], "scientist": [2, 23], "scikit": [0, 1, 5, 7, 8, 10, 11, 12, 15, 17, 18, 22], "scikit_learn": 2, "scikitlearn": 23, "scikitplot": [9, 12], "scipi": [2, 5, 7, 8, 15, 17, 18, 23, 24], "scl": 8, "scm": 0, "score": [0, 1, 2, 3, 5, 8, 9, 11, 12, 13, 21, 23, 24], "scores_kfold": 8, "scratch": [1, 3, 15], "sdg": 15, "seaborn": [2, 3, 5, 8, 9, 23], "seamless": [2, 17, 23], "search": [0, 2, 3, 5, 7, 11, 15, 23], "sebastian": 23, "sebastianraschka": 23, "sec": 8, "second": [0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 16, 17, 18, 20, 21, 23, 24], "secondeigvector": 13, "secondli": 14, "section": [1, 6, 13, 18, 20, 24], "sector": 2, "see": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 17, 18, 20, 23, 24], "seed": [2, 3, 4, 5, 6, 7, 8, 10, 11, 13, 15, 16, 20, 23, 24], "seed_imag": 6, "seek": [3, 4, 10], "seem": [3, 5, 6], "seemingli": [2, 23], "seen": [2, 3, 5, 7, 12, 14, 20], "segment": 15, "seismic": 8, "seldomli": [2, 23], "select": [0, 3, 7, 8, 10, 11, 12, 13, 19, 20, 21, 22, 23, 24], "selevet": 0, "self": [3, 7, 24], "sell": 6, "semest": [9, 19], "semi": [10, 15], "semilogx": 8, "send": [7, 14, 15, 21, 23], "senior": [19, 21], "sens": [2, 6, 8, 10, 23], "sensibl": 5, "sensit": [2, 7, 8, 11, 15, 23, 24], "sent": 4, "sentenc": [6, 14], "separ": [2, 3, 4, 6, 8, 10, 11, 14, 16, 17, 20, 23], "septemb": 23, "sequenc": [5, 6, 9, 11, 12, 14, 15, 17, 18, 20, 23], "sequenti": [3, 5, 6, 12, 14, 20], "seri": [2, 3, 4, 5, 6, 7, 8, 12, 13, 14, 15, 18, 23, 24], "serif": [9, 20, 23], "serv": [2, 3, 4, 5, 7, 9, 15, 22, 23, 24], "session": [0, 3, 19, 21, 23], "set": [1, 3, 6, 7, 8, 9, 10, 12, 13, 15, 16, 17, 18, 20, 21], "set_major_formatt": 8, "set_major_loc": 8, "set_tick": [3, 10], "set_ticklabel": 3, "set_titl": [2, 3, 4, 5, 9, 14, 16, 23], "set_xlabel": [2, 3, 4, 5, 9, 14, 23], "set_xlim": [9, 14], "set_xticklabel": 3, "set_ylabel": [2, 3, 4, 5, 9, 23], "set_ylim": [9, 14], "set_ytick": 9, "set_yticklabel": [3, 8], "set_zlim": 8, "seth": 6, "setminu": 8, "setosa": [10, 11], "setosa_or_versicolor": 10, "setp": 8, "setup": [3, 6, 8, 10, 17, 23, 24], "sever": [1, 2, 5, 7, 8, 9, 10, 11, 13, 14, 15, 17, 18, 20, 23, 24], "sgd": [3, 5], "sgd_clf": 10, "sgdclassifi": 10, "sgdreg": 15, "sgdregressor": 15, "sgn": [7, 24], "shallow": 15, "shape": [0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 18, 23, 24], "share": [0, 3, 5, 23], "shareabl": 0, "she": 9, "shift": [0, 3, 8, 14, 20], "ship": 5, "shire": 23, "short": [6, 7], "shortcom": 15, "shorten": 6, "shorter": 20, "shorthand": 23, "shortli": [18, 23], "should": [0, 2, 4, 5, 7, 8, 10, 11, 13, 14, 18, 20, 23, 24], "show": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 23, 24], "show_shap": 6, "shown": [2, 6, 7, 10, 14, 15, 18, 24], "shrink": [5, 7, 8, 10, 13, 24], "shrinkag": [7, 8, 24], "shrunk": 13, "shuffl": [2, 3, 6, 8, 15, 24], "side": [2, 4, 7, 10, 14, 15, 18, 23], "sigh": [17, 23], "sigma": [2, 3, 7, 8, 9, 12, 13, 14, 15, 18, 20, 23, 24], "sigma0": 20, "sigma1": 20, "sigma2": 20, "sigma_": [7, 18, 23, 24], "sigma_0": [7, 24], "sigma_1": [7, 24], "sigma_2": [7, 24], "sigma_fn": [9, 14], "sigma_i": [2, 7, 23, 24], "sigma_j": [7, 24], "sigma_m": [8, 20], "sigma_n": [13, 20], "sigma_t": 15, "sigma_x": 20, "sigmoid": [3, 4, 6, 9, 10, 12, 14], "sigmundson": 8, "sign": [3, 4, 9, 10, 12, 20, 21], "signal": [3, 5, 12, 14], "signifi": 6, "signific": 3, "significantli": [3, 15, 20], "sim": [6, 7, 8, 15, 20], "similar": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, 17, 18, 23], "similarli": [2, 3, 5, 7, 10, 12, 15, 20, 23, 24], "simpl": [1, 3, 4, 5, 7, 8, 9, 10, 12, 13, 14, 16, 17, 18, 20], "simplepredict": 12, "simpler": [1, 2, 3, 7, 8, 9, 15, 17, 23], "simplernn": 6, "simplest": [2, 3, 5, 6, 11, 12, 14, 16, 23], "simpletre": 12, "simpli": [2, 3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 17, 18, 20, 23, 24], "simplic": [4, 7, 8, 9, 10, 11, 12, 13, 14, 16, 24], "simplicti": [7, 24], "simplifi": [2, 8, 11, 17, 23], "simplist": [5, 8, 20], "simul": 8, "simultan": 8, "sin": [2, 3, 4, 5, 6, 11, 14, 15, 18, 23], "sinc": [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 15, 18, 20, 22, 23, 24], "sine": [5, 14], "singl": [2, 3, 4, 5, 7, 8, 9, 10, 11, 14, 15, 18, 20, 23, 24], "singular": [2, 8, 15, 18, 23], "sinusoid": 5, "site": [2, 19], "situat": [2, 6, 7, 9, 15, 20, 23, 24], "six": [5, 20], "size": [2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 15, 18, 20, 23], "sketch": 12, "ski": 11, "skill": 2, "skip": 13, "skl": [2, 8, 23, 24], "sklearn": [0, 2, 3, 5, 7, 8, 9, 10, 11, 12, 13, 15, 16, 23, 24], "skplt": [9, 12], "sl": 8, "slack": 10, "slice": [4, 18, 23], "slide": [1, 2, 5, 20, 23, 24], "slight": [8, 15], "slightli": [3, 4, 5, 7, 8, 9, 12, 20, 24], "slope": [10, 13, 14], "slow": [2, 4, 10, 15, 24], "slower": [7, 18, 23, 24], "slowest": 18, "slowli": 14, "slp": 3, "small": [2, 3, 4, 5, 7, 8, 10, 11, 12, 13, 14, 15, 17, 18, 20, 23, 24], "smaller": [2, 3, 4, 7, 8, 10, 11, 13, 15, 20, 23], "smallest": [2, 6, 16, 23], "smallest_row_index": 16, "smooth": [2, 5, 8, 15, 23], "sn": [2, 3, 5, 8, 9, 23], "sne": 13, "so": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 23, 24], "soar": 8, "social": 2, "soft": [3, 9, 12, 14], "soften": 10, "softmax": [5, 9], "softwar": [2, 10, 17, 18], "sol": 10, "sole": [2, 8, 23], "solid": [2, 9], "solut": [2, 3, 4, 5, 7, 8, 10, 12, 13, 15, 18, 20, 23, 24], "soluton": 4, "solv": [1, 2, 3, 5, 7, 8, 10, 12, 13, 14, 15, 18, 23, 24], "solve_expdec": 4, "solve_ode_deep_neural_network": 4, "solve_ode_neural_network": 4, "solve_pde_deep_neural_network": 4, "solveod": 4, "solveode_popul": 4, "solver": [4, 9, 10, 11, 12, 18, 23], "some": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 20, 23], "some_model": 8, "somehow": 6, "someon": 1, "someth": [0, 2, 3, 5, 6, 9, 11, 13, 20, 23, 24], "sometim": [2, 3, 13, 14, 15, 16, 24], "soon": [18, 21, 24], "sophist": [2, 23], "sopt": 15, "sort": [7, 8, 11, 13, 20], "sound": [5, 7], "sourc": [2, 3, 5, 8, 17, 18, 20, 23], "space": [2, 3, 6, 7, 10, 11, 13, 14, 15, 16, 20, 24], "span": [2, 5, 7, 11, 13, 18, 23, 24], "spare": 3, "spars": [5, 8, 18, 23], "sparse_mtx": [18, 23], "sparsecategoricalcrossentropi": 5, "sparsiti": 12, "spatial": [3, 4, 5, 14], "speak": 20, "special": [8, 9, 12, 14, 15, 18, 20, 23], "specif": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 17, 18, 20, 22, 23, 24], "specifi": [2, 5, 7, 8, 9, 11, 13, 15, 16, 20, 23], "specifici": [2, 12, 23], "spectacular": 5, "spectral": 3, "speech": [2, 3, 5, 6, 14], "speed": [3, 4, 6, 15], "spend": [1, 20], "sphere": [2, 24], "spin": 8, "spite": 2, "spline": 10, "split": [1, 3, 5, 6, 7, 8, 10, 11, 12, 13, 16, 20, 23], "splite": 2, "splitter": [3, 12], "spontan": 20, "spot": 5, "spread": [2, 13, 20, 23, 24], "springer": [22, 23], "spuriou": 15, "sqrsignal": 5, "sqrt": [5, 6, 7, 8, 10, 12, 13, 15, 20, 24], "squar": [0, 3, 4, 5, 6, 9, 10, 11, 13, 15, 16, 17, 18, 20], "squarederror": 12, "squaredeuclidean": 16, "squash": 14, "srtm": 8, "srtm_data_norway_1": 8, "stabil": 7, "stabl": [1, 2, 6, 7, 8, 11, 17, 23, 24], "stack": [5, 6], "stage": [0, 7, 15], "stai": [2, 4, 6, 7, 13, 23, 24], "stand": [2, 7, 11, 14, 23, 24], "standard": [2, 3, 6, 7, 8, 9, 10, 12, 14, 18, 20, 23], "standardscal": [2, 8, 9, 10, 11, 12, 13, 24], "stanford": 15, "start": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 18, 20, 21, 23, 24], "start_tim": 16, "stat": 8, "state": [3, 4, 6, 7, 8, 9, 10, 12, 13, 14, 15, 17, 20, 23, 24], "statement": [2, 9, 18, 23], "statist": [2, 3, 5, 6, 9, 11, 12, 13, 14, 15, 16, 18, 22, 24], "statu": [0, 2, 9, 23], "stavang": 8, "std": [2, 6, 8, 23, 24], "steep": 15, "step": [0, 2, 3, 4, 6, 8, 9, 11, 12, 13, 14, 15, 16, 18, 23], "step_fn": [9, 14], "step_length": 15, "steps_list": 11, "stereo": 5, "still": [2, 4, 5, 7, 8, 13, 15, 20, 24], "stimuli": 14, "stk": [22, 23], "stk2100": [22, 23], "stk3155": [0, 19, 21], "stk4021": [22, 23], "stk4051": [22, 23], "stk4155": [19, 21], "stk5000": 22, "stochast": [2, 3, 7, 8, 10, 13, 14], "stock": 6, "stoke": 14, "stone": [2, 9], "stop": [3, 6, 11, 15, 16], "storag": [7, 24], "store": [2, 3, 4, 5, 8, 13, 15, 20, 23], "storehaug": [21, 23], "str": [3, 5, 6], "straight": [2, 8, 10, 15, 23], "straightforward": [2, 4, 5, 7, 8, 10, 11, 12, 15, 18, 23, 24], "strategi": [2, 3, 11, 23], "stratifi": 8, "strength": [2, 7, 16, 24], "stretch": 13, "strict": [10, 15], "strictli": [10, 15], "stride": [6, 18], "strike": 8, "string": 3, "stroke": 9, "strong": [5, 8, 11, 12, 14, 18, 20], "strongli": [0, 2, 10, 17, 18], "stronli": [], "structur": [2, 3, 4, 5, 8, 11, 12, 14, 17, 23], "stuck": [3, 15], "student": [0, 2, 19, 21, 22, 23], "studi": [2, 5, 6, 7, 8, 9, 10, 13, 14, 15, 17, 22, 23, 24], "studier": 22, "style": [9, 11, 18, 23], "st\u00f8land": 21, "sub": [11, 14], "subdivid": [2, 18, 23], "subfield": 2, "subject": [8, 10, 20], "submit": 23, "subplot": [2, 3, 5, 6, 8, 9, 10, 11, 12, 16, 23], "subplots_adjust": [10, 20], "subprogram": [18, 23], "subract": [2, 24], "subroutin": [2, 23], "subscript": 3, "subsequ": [3, 6, 7, 8, 14, 18, 20, 24], "subset": [3, 8, 11, 14, 15, 17, 23], "subspac": [2, 10, 13, 24], "substanti": [11, 12], "substep": 13, "substitut": [1, 5, 8, 14, 18], "subsubset": 11, "subtask": 8, "subtl": 3, "subtract": [2, 6, 7, 8, 13, 15, 18, 20, 24], "subtre": 11, "succeed": [2, 6, 23], "success": [5, 9, 11, 15, 20], "successfulli": [6, 11], "sudo": [2, 17, 23], "suffer": [2, 3, 4, 7, 12, 23, 24], "suffici": [3, 8, 10, 13, 15], "suggest": [3, 15, 22], "suit": [10, 14], "suitabl": [0, 2, 20, 24], "sum": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 23, 24], "sum_": [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 23, 24], "sum_i": [2, 4, 7, 8, 10, 15, 24], "sum_j": 8, "sum_ja_": 2, "sum_k": [8, 10, 14, 18], "sum_logist": 15, "sum_m": 5, "sum_n": 5, "sum_nx_": 5, "summar": [7, 8, 11], "summari": [3, 5, 6, 12, 19], "summat": [1, 2, 5, 24], "sunni": 11, "super": [7, 24], "superfici": 5, "superscript": [3, 14], "supervis": [2, 7, 8, 9, 11, 14, 17, 23, 24], "supplement": 9, "support": [2, 3, 11, 12, 13, 15, 17, 23, 24], "suppos": [2, 7, 8, 9, 10, 12, 13, 14, 15, 18, 23, 24], "suppress": [7, 15], "sure": [1, 2, 3, 6, 8], "surf": 8, "surfac": [2, 8, 23], "surpass": 8, "surpris": [2, 23], "surround": [5, 17], "survei": [2, 7, 8, 23], "svc": [10, 11, 12], "svd": [2, 8, 13, 23], "svdinv": 7, "svm": [10, 11, 12, 13], "svm_clf": [10, 12], "swath": [7, 24], "switch": 2, "sy": 15, "symbol": [3, 7, 13, 15, 17, 20, 23, 24], "symmeteri": 3, "symmetr": [2, 7, 10, 13, 14, 15, 18, 23, 24], "symmetri": 8, "sympi": [2, 17, 23], "synonim": 20, "syntax": 15, "system": [0, 2, 3, 5, 6, 8, 9, 11, 12, 14, 15, 17, 18, 23], "systemat": [6, 8], "t": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 23], "t0": [5, 8, 15], "t1": [4, 15], "t2": 4, "t3": 4, "t_": 4, "t_0": [4, 11, 15], "t_1": 15, "t_b": 12, "t_i": [3, 4, 7, 14, 24], "t_j": 14, "t_k": 11, "tabl": [11, 20, 21, 23], "tabul": [2, 23], "tabular": 23, "tackl": 6, "tag": [4, 5, 6, 7, 8, 9, 14, 15, 16, 18, 20, 24], "taht": [2, 23], "tail": 20, "tailor": [4, 10, 13, 23], "taiwan": [2, 23], "take": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 20, 23, 24], "taken": [2, 3, 5, 8, 12, 15, 18], "tan": 5, "tangent": [3, 6, 14, 15], "tanh": [3, 6, 9, 10, 14], "target": [0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 23, 24], "target_nam": 11, "task": [2, 3, 5, 8, 11, 13, 14, 16, 23], "tau": [5, 7, 20], "taught": 23, "tax": [], "taylor": [4, 15], "taylornr": 15, "tc": 10, "teach": [0, 19, 23], "team": 3, "teaser": 2, "technic": [2, 7, 8, 15], "techniqu": [2, 3, 10, 12, 15, 17, 20, 22, 23, 24], "technologi": [2, 3], "tell": [1, 2, 6, 8, 12, 13, 15, 20], "temp": 3, "temp1": 3, "temp2": 3, "temperatur": [2, 11, 23], "temporarili": 3, "ten": [5, 23], "tend": [5, 7, 8, 10, 11, 12, 14, 15, 16], "tendenc": [2, 23], "tension": 8, "tensor": 5, "tensorflow": [2, 4, 6, 10, 16, 17, 18, 22, 23, 24], "term": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 20, 23, 24], "term1": [7, 8, 13], "term2": [7, 8, 13], "term3": [7, 8, 13], "term4": [7, 8, 13], "termin": [0, 2, 6, 7, 11, 12, 15, 24], "terminarl": 0, "terrain": 8, "terrain1": 8, "test": [1, 5, 6, 7, 8, 9, 10, 11, 12, 15, 18, 20, 23], "test_acc": 5, "test_accuraci": [3, 5], "test_error": 8, "test_imag": [5, 6], "test_ind": 8, "test_input": 6, "test_label": [5, 6], "test_loss": 5, "test_pr": 3, "test_predict": 3, "test_rnn": 6, "test_scor": [9, 12], "test_siz": [0, 2, 3, 5, 7, 8, 12, 24], "test_split": 11, "testerror": [2, 8, 24], "testi": 6, "testpredict": 6, "testx": 6, "text": [0, 2, 3, 4, 6, 7, 10, 11, 13, 15, 18, 20, 22, 24], "textbook": [1, 24], "textual": 11, "textur": 3, "tf": [3, 5, 6, 15, 16], "th": [2, 3, 4, 7, 8, 9, 11, 14, 15, 16, 18, 20, 23, 24], "than": [2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 17, 20, 23, 24], "thank": [6, 8], "theano": [3, 17, 23], "thei": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 18, 20, 23, 24], "them": [2, 3, 5, 6, 8, 10, 11, 12, 13, 14, 15, 18, 23, 24], "theme": [0, 2, 23], "themselv": [2, 20, 23], "thenc": 8, "theorem": [4, 8, 9, 24], "theoret": [2, 6, 12], "theori": [2, 3, 5, 10, 11, 14, 15, 17, 22, 23], "thereaft": [2, 7, 8, 13, 14, 18, 23], "therebi": [2, 7, 9, 13, 23, 24], "therefor": [2, 3, 4, 5, 6, 8, 9, 10, 13, 15, 20, 23, 24], "therein": 13, "thereof": [2, 8, 15, 23], "theta": [1, 2, 3, 6, 7, 8, 9, 15, 20, 23, 24], "theta_": [2, 3, 8, 9, 15, 23, 24], "theta_0": [1, 2, 7, 8, 9, 23, 24], "theta_0x_": [2, 23, 24], "theta_1": [2, 7, 8, 9, 23, 24], "theta_1x_": [2, 23, 24], "theta_1x_0": [2, 23], "theta_1x_1": [2, 9, 23], "theta_1x_2": [2, 23], "theta_1x_i": [9, 24], "theta_2": [2, 23, 24], "theta_2x_": [2, 23, 24], "theta_2x_0": [2, 23], "theta_2x_1": [2, 23], "theta_2x_2": [2, 9, 23], "theta_2x_i": 24, "theta_3x_i": 24, "theta_4x_i": 24, "theta_i": [2, 3, 7, 23, 24], "theta_j": [2, 7, 8, 23, 24], "theta_linreg": 15, "theta_p": 9, "theta_px_p": 9, "theta_t": 15, "thetavalu": 7, "thi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 24], "thing": [0, 1, 2, 3, 4, 6, 7, 9, 11, 20, 23], "think": [2, 3, 5, 6, 8, 11, 14, 15, 16, 20, 23, 24], "third": [2, 5, 8, 15, 21, 23], "thirti": 9, "thorughout": 23, "those": [2, 5, 7, 8, 10, 11, 12, 13, 18, 23, 24], "though": [1, 3, 4, 5, 6, 15, 18, 20], "thought": [8, 16, 20], "thousand": [2, 3, 24], "three": [2, 3, 5, 7, 8, 10, 11, 14, 18, 19, 20, 21, 23, 24], "threshold": [3, 5, 11, 12, 13, 14, 15], "through": [0, 2, 3, 4, 5, 6, 7, 8, 10, 13, 14, 15, 16, 17, 18, 20, 23, 24], "throughout": [0, 2, 6, 7, 16, 17, 18, 20, 23], "throw": [5, 8, 20], "thu": [2, 3, 4, 7, 8, 9, 10, 12, 13, 14, 15, 21, 23, 24], "thumb": [2, 8, 24], "thursdai": [], "tibshirani": [8, 22, 23], "tick_param": 8, "ticker": [8, 15, 20], "tif": 8, "tight_layout": [3, 9], "tightli": 13, "tild": [2, 7, 8, 9, 13, 20, 23, 24], "till": [2, 6, 9, 10, 11, 12, 14, 18, 23, 24], "time": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 24], "timeit": 6, "timer": 6, "tini": 3, "tip": 5, "titl": [0, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 15, 20, 23], "tmp": 15, "tn": [4, 5, 9], "to_categor": [3, 5, 6], "to_categorical_numpi": 3, "to_numer": [2, 8, 23], "todai": 5, "togeth": [2, 5, 8, 10, 13, 15, 17, 23], "toi": 16, "told": 15, "toler": [4, 16], "tolist": 6, "tomographi": 14, "too": [2, 4, 6, 7, 8, 11, 13, 15, 20, 22, 24], "took": [10, 23], "tool": [0, 2, 3, 5, 8, 15, 17, 24], "toolbox": 10, "top": [2, 5, 7, 8, 11, 12, 17, 23], "topic": [2, 7, 8, 9, 10, 17, 24], "topolog": [5, 14], "topologi": [3, 14], "torkjellsdatt": [21, 23], "toss": [12, 20], "total": [2, 3, 4, 5, 6, 8, 9, 10, 12, 13, 14, 15, 16, 18, 20, 21, 23, 24], "total_loss": 6, "totalclustervari": 16, "totalscatt": 16, "toward": [0, 3, 4, 9, 14, 15], "town": [], "tp": [6, 9], "tpng": 11, "tpu": [15, 17, 23], "tqdm": 8, "tr": [], "track": [0, 5, 15, 16, 18, 24], "tract": [], "tractabl": [2, 23, 24], "trade": [7, 11], "tradeoff": [2, 7, 23, 24], "tradit": [2, 3, 6, 8, 23], "train": [1, 4, 5, 7, 8, 10, 11, 12, 13, 14, 15], "train_accuraci": [2, 3, 5, 23], "train_dataset": 6, "train_end": [2, 3, 24], "train_error": 8, "train_imag": [5, 6], "train_ind": 8, "train_label": [5, 6], "train_pr": 3, "train_siz": [2, 3, 5, 24], "train_step": 6, "train_test_split": [0, 1, 2, 3, 5, 7, 8, 9, 11, 12, 13, 23, 24], "train_test_split_numpi": [2, 3, 24], "trainable_vari": 6, "trained_model": 8, "trainerror": [2, 24], "traini": 6, "training_checkpoint": 6, "training_dataset": 6, "training_gradi": 15, "trainingerror": 8, "trainpredict": 6, "trainscor": 6, "trainx": 6, "trait": [2, 23], "trajectori": 6, "transfer": [11, 23], "transform": [2, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 23, 24], "transit": [8, 14], "translat": [3, 6, 8, 12, 23], "transpos": [3, 7, 13, 18, 24], "travers": [2, 7], "treat": [2, 3, 5, 8, 14, 15, 20, 23, 24], "tree": [2, 3, 17, 23], "tree_clf": [11, 12], "tree_clf_": 11, "tree_clf_sr": 11, "tree_reg": 11, "tree_reg1": 11, "tree_reg2": 11, "trend": 20, "treue": 9, "trevor": 22, "tri": [1, 4, 5, 6, 11, 15], "triain": 2, "trial": [2, 4, 6, 8, 15, 20, 23], "triangl": 15, "triangular": 18, "trick": [5, 6, 10, 13, 15, 20], "trickier": 20, "tridiagon": 18, "trillion": 17, "trivial": [2, 3, 7, 13, 20, 23], "troubl": [0, 2, 10, 14, 24], "truck": 5, "true": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 18, 20, 23, 24], "true_fun": 8, "true_theta": 8, "truli": 23, "try": [0, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 20, 23], "tucker": 10, "tuesdai": [21, 23], "tumor": [9, 11], "tumour": 9, "tunabl": 3, "tune": [6, 11, 15, 18, 23], "turn": [2, 3, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 20, 23, 24], "tutori": [3, 6], "tv": 4, "tveito": 4, "tweak": [3, 6, 12, 20], "twice": 15, "twist": 13, "two": [0, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14, 15, 18, 19, 20, 22, 23, 24], "tx": 15, "tx_1": 15, "txt": [0, 6], "ty": 15, "type": [2, 3, 5, 8, 10, 12, 15, 18, 20, 24], "typic": [0, 1, 2, 3, 4, 5, 6, 7, 9, 11, 12, 14, 15, 20, 23, 24], "u": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 22, 23, 24], "u_": 18, "u_i": 14, "u_m": 12, "ua": [2, 23], "ubuntu": [2, 17, 23], "uci": [], "uio": [0, 21, 22], "un": 16, "unabl": 0, "unari": [18, 23], "unbalanc": [8, 11], "unbias": [2, 7, 8, 23], "uncent": 8, "uncertainti": [2, 7, 23], "uncertitud": 20, "unchang": [3, 5], "uncorrel": [12, 20], "undefin": [7, 24], "under": [2, 3, 7, 8, 12, 15, 17, 23], "underdetermin": [2, 23], "underfit": [3, 8], "underflowproblem": 7, "undergo": 7, "undergradu": [19, 21], "underli": [2, 3, 11, 15, 20, 23], "underset": [6, 16], "understand": [0, 2, 3, 5, 7, 8, 12, 15, 16, 17, 23, 24], "understood": [10, 15], "undesir": 10, "undetermin": [7, 10], "undo": 6, "unexpect": 8, "unexpected": 20, "unfair": 8, "unfortun": [3, 10, 11, 12], "unicode_liter": [10, 11], "uniform": [2, 3, 7, 8, 13, 15, 20, 23], "uniformli": [15, 20], "unifrompdf": 20, "unimport": 15, "union": [7, 8], "uniqu": [2, 4, 8, 15, 16, 18, 23], "unique_cluster_label": 16, "unit": [2, 3, 5, 6, 7, 12, 14, 20, 23, 24], "unitari": [7, 8, 18, 24], "unitarili": [18, 23], "uniti": 20, "univari": 20, "univers": [2, 3, 4, 15, 17, 19, 21, 23, 24], "unix": 3, "unknow": [2, 18, 23], "unknown": [2, 3, 5, 6, 7, 8, 10, 12, 15, 18, 23, 24], "unknowwn": 14, "unlabel": 3, "unless": [2, 5, 8, 13, 15, 23], "unlik": [3, 5, 10, 15], "unnecessarili": 11, "unord": 5, "unravel": 3, "unrol": [5, 13], "unseen": [0, 2, 9, 11], "unstabl": 3, "unsupervis": [2, 3, 6, 14, 17, 23], "unsymmetr": [18, 23], "until": [3, 4, 6, 11, 14, 15, 16], "untouch": 2, "unusu": 14, "up": [1, 3, 5, 6, 7, 8, 10, 12, 13, 15, 16, 17, 18, 20, 21], "updat": [0, 3, 4, 12, 14, 15, 16], "uploa": 23, "upload": [0, 17, 22], "upon": [2, 3, 8, 9, 13, 18], "upper": [1, 2, 10, 11, 18, 24], "uppercas": [18, 23], "upsampl": 6, "upscal": 6, "url": [23, 24], "us": [0, 6, 7, 8, 10, 11, 12, 13, 14, 16, 18, 20, 22], "usag": [2, 10, 17, 23, 24], "usd": [], "usd10000": [], "use_bia": 6, "usecol": [2, 23], "useless": 3, "user": [0, 2, 3, 4, 6, 8, 9, 17, 18, 23], "usernam": 0, "usetex": 20, "usg": 8, "usr": 20, "usual": [2, 5, 6, 9, 14, 15, 16, 23], "ut": 7, "util": [3, 5, 6, 8, 9, 12, 16, 23], "ux": 18, "v": [0, 4, 6, 7, 8, 13, 15, 17, 24], "v0": 20, "v1": 20, "v2": 20, "v_0": 13, "va": 3, "vahid": 23, "val": 15, "val_accuraci": 5, "val_loss": 6, "vale": 4, "valid": [2, 3, 6, 9, 11, 12, 15, 17, 20, 23, 24], "validation_data": 5, "validation_split": 6, "valu": [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 23], "valuat": 11, "valy": 6, "van": [2, 23, 24], "vandenbergh": [10, 15], "vandermond": [2, 23], "vanilla": [2, 8, 13, 16, 24], "vanish": [3, 6, 15, 20], "var": [7, 8, 12, 13, 20, 24], "var_x": 20, "varabl": 10, "varepsilon": [7, 8], "varepsilon_": [7, 8], "varepsilon_i": [7, 8], "vari": [2, 3, 5, 7, 8, 12, 23], "variabl": [2, 3, 4, 7, 8, 9, 10, 12, 13, 14, 15, 16, 18, 23, 24], "varianc": [2, 3, 7, 9, 11, 12, 13, 15, 16, 17, 18, 20, 23, 24], "variance_i": [7, 13, 24], "variance_x": [7, 13, 24], "variant": [2, 3, 8, 10, 14, 15, 23, 24], "variat": [5, 6, 13, 23], "varieti": [2, 5, 14, 17, 23], "variou": [1, 3, 5, 7, 8, 9, 10, 11, 13, 14, 15, 17, 18, 20, 23, 24], "varydimens": 6, "vastli": 5, "vaue": 3, "vault": 2, "vdot": [4, 15], "vec": 8, "vector": [2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 15, 16, 17], "vector_mean": 16, "ventur": [2, 10, 17, 23], "venv": 0, "verbos": [3, 5, 6], "veri": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 20, 22, 23, 24], "verifi": [5, 13, 18, 23], "versatil": [10, 23], "versicolor": [10, 11], "version": [0, 2, 5, 12, 15, 16, 17, 18, 20, 23], "versu": 3, "vert": [1, 2, 3, 7, 8, 9, 10, 11, 13, 15, 23, 24], "vert_1": [7, 8, 24], "vert_2": [7, 8, 13, 24], "via": [2, 7, 8, 9, 10, 11, 12, 13, 14, 17, 18, 19, 20, 21, 23, 24], "vidal": 13, "video": [2, 3, 14, 17, 19, 21, 23], "view": [3, 5, 7, 8, 14, 15, 20, 22, 23], "violat": 10, "virginica": 11, "viridi": [2, 3, 4, 5, 23], "virtual": 3, "viscos": 15, "viscou": 15, "visibl": 0, "vision": [2, 5], "visual": [2, 5, 13, 14, 17, 23, 24], "visualis": 3, "visualstudio": [0, 1], "viz": [8, 10, 20], "vmap": 15, "vmax": [3, 8], "vmin": [3, 8], "voic": 5, "volum": [2, 5, 23], "vote": [12, 23], "voting_clf": 12, "votingclassifi": 12, "votingsimpl": 12, "vstack": [7, 13, 18, 20, 23, 24], "vt": [7, 24], "w": [2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 18, 20, 23, 24], "w1": 10, "w2": [10, 13], "w3": 10, "w_": [3, 14], "w_1": [10, 18], "w_1x_": 10, "w_1x_1": 10, "w_2": [10, 18], "w_2x_": 10, "w_2x_2": 10, "w_3": 18, "w_4": 18, "w_hidden": 4, "w_i": [3, 4, 12], "w_ix_i": 14, "w_j": 18, "w_m": 18, "w_output": 4, "w_px_": 10, "w_px_p": 10, "wa": [3, 5, 6, 7, 8, 9, 12, 13, 14, 16, 18, 23, 24], "wai": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 18, 20, 23, 24], "walk": 11, "walker": 20, "wang": [2, 23], "want": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 20, 23, 24], "warn": 6, "warrant": 8, "wast": 5, "watch": 17, "wave": 5, "wavelet": 10, "we": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 24], "weak": [11, 12, 16], "weather": [3, 14], "web": [17, 19, 21, 23], "webpag": 23, "websit": [8, 18, 19, 23], "wedg": [10, 20], "wednesdai": [21, 23], "wee": 13, "week": [2, 7, 8, 9, 19, 21], "weekli": [0, 1, 17, 19, 21, 22, 23], "weight": [3, 4, 5, 8, 9, 11, 12, 14, 15, 20], "weigth": 4, "welcom": [0, 10, 17], "well": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 17, 18, 20, 22, 23, 24], "went": 10, "were": [2, 3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 16, 20, 23], "wessel": [2, 23, 24], "what": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20], "whatev": 5, "when": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 23, 24], "whenev": [0, 15, 20], "where": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 23, 24], "wherea": [8, 20], "wherein": [3, 14], "whether": [2, 5, 7, 9, 11, 20, 23], "which": [0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 24], "whichev": [3, 5], "while": [0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 20, 23, 24], "white": 11, "who": [0, 2], "whole": [3, 5, 6, 7, 11, 13, 15], "whose": [2, 8, 12, 20, 24], "whow": [13, 24], "why": [0, 1, 2, 3, 5, 8, 15], "wide": [2, 3, 5, 8, 9, 14, 17, 18, 23], "widehat": 8, "width": [2, 5, 10, 11, 23], "wieringen": [2, 23, 24], "win": 12, "wind": 11, "wing": [21, 23], "winther": 4, "wiothout": 8, "wiscons": 9, "wisconsin": 12, "wisdom": 8, "wise": [3, 7, 14, 15, 24], "wish": [2, 4, 7, 9, 10, 13, 15, 16, 18, 23, 24], "with_std": [2, 24], "wither": 8, "within": [2, 4, 5, 6, 9, 11, 14, 15, 16, 20, 22, 23], "withinclust": 16, "without": [0, 2, 3, 7, 8, 10, 11, 13, 14, 15, 23, 24], "won": [0, 2, 23], "wonder": 10, "word": [2, 3, 5, 6, 7, 8, 9, 16, 20, 23, 24], "work": [0, 1, 2, 3, 6, 8, 9, 10, 11, 15, 17, 19, 20, 21, 23, 24], "workshop": 23, "world": [1, 2, 10, 24], "worldwid": [2, 23], "worri": 0, "wors": [2, 3, 5, 6, 8, 23], "worth": 11, "would": [1, 2, 3, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 20, 23, 24], "wrap": [8, 18, 23], "write": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 14, 15, 18, 23, 24], "written": [1, 2, 4, 5, 7, 13, 14, 15, 17, 18, 20, 23, 24], "wrong": [0, 3, 10], "wrongli": 12, "wrote": [7, 13, 24], "wrt": [12, 15], "wth": [12, 15], "www": [17, 18, 22, 23], "wx_1": 10, "x": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 23], "x0": 10, "x1": [6, 10, 11, 12, 15], "x1_exampl": 10, "x1d": 10, "x2": [10, 11, 12, 15], "x2d": [10, 13], "x2d_train": 13, "x2dsl": 13, "x3": 10, "x_": [2, 4, 5, 7, 8, 10, 12, 13, 15, 16, 18, 20, 23, 24], "x_0": [2, 7, 13, 18, 23, 24], "x_1": [2, 4, 7, 8, 9, 10, 11, 12, 13, 15, 18, 20, 23, 24], "x_2": [2, 4, 7, 8, 9, 10, 11, 12, 13, 15, 18, 20, 23, 24], "x_3": [10, 18, 20], "x_4": 18, "x_center": 13, "x_data": 3, "x_data_ful": 3, "x_hidden": 4, "x_i": [2, 3, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 23, 24], "x_input": 4, "x_ix_": [2, 23], "x_iy_i": 10, "x_j": [1, 2, 4, 10, 11, 14, 20, 24], "x_jy_j": 10, "x_k": [14, 16, 18, 20, 24], "x_l": 20, "x_m": [8, 14, 18, 20], "x_n": [2, 4, 5, 8, 10, 13, 14, 15, 18, 20, 23], "x_new": [11, 12], "x_offset": 8, "x_output": 4, "x_p": [5, 9, 11], "x_poli": 11, "x_poly10": 11, "x_pred": 6, "x_prev": 4, "x_reduc": 13, "x_scale": 10, "x_small": 15, "x_test": [0, 1, 2, 3, 5, 7, 8, 9, 11, 12, 13, 24], "x_test_own": 8, "x_test_scal": [2, 8, 9, 11, 12, 13, 24], "x_tot": 6, "x_train": [0, 1, 2, 3, 5, 6, 7, 8, 9, 11, 12, 13, 23, 24], "x_train_mean": 8, "x_train_own": 8, "x_train_scal": [2, 8, 9, 11, 12, 13, 24], "x_val": 3, "xarrai": [17, 23], "xavier": 3, "xbnew": 15, "xcode": [2, 17, 23], "xdclassiffierconfus": 12, "xdclassiffierroc": 12, "xg_clf": 12, "xgb": 12, "xgbclassifi": 12, "xgboost": 11, "xgboot": 12, "xgbregressor": 12, "xgparam": 12, "xgtree": 12, "xi": [10, 15], "xi_": 10, "xi_1": 10, "xi_i": 10, "xk": 10, "xla": [15, 17, 23], "xlabel": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 15, 20, 23, 24], "xlim": [8, 12], "xm": 11, "xmesh": 15, "xnew": [2, 15, 23], "xp": 20, "xpanda": [2, 24], "xpd": [7, 13, 24], "xplot": 2, "xscale": [2, 24], "xsr": 11, "xt_x": 15, "xtest": 8, "xtick": [5, 8, 10, 11], "xtrain": 8, "xu": [2, 23], "xx": [2, 18, 23], "xy": [2, 8, 10, 18, 23], "xytext": 10, "xz": [18, 23], "y": [0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 23, 24], "y1": 6, "y2": 6, "y3": 6, "y_": [2, 3, 7, 8, 12, 13, 18, 23, 24], "y_0": [2, 7, 13, 18, 23, 24], "y_1": [2, 7, 10, 11, 13, 15, 18, 23, 24], "y_1y_1": 10, "y_1y_1k": 10, "y_1y_2": 10, "y_1y_2k": 10, "y_1y_n": 10, "y_1y_nk": 10, "y_2": [2, 7, 10, 11, 13, 18, 23, 24], "y_2y_1": 10, "y_2y_1k": 10, "y_2y_2": 10, "y_2y_2k": 10, "y_3": [2, 11, 18], "y_4": 18, "y_data": [2, 3, 7, 8, 23, 24], "y_data_ful": 3, "y_decis": 10, "y_fit": [2, 24], "y_i": [2, 3, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 23, 24], "y_if_": 12, "y_ix_": [2, 23], "y_ix_i": [9, 10, 15, 24], "y_iy_jk": 10, "y_j": [8, 10, 14], "y_k": 14, "y_m": 18, "y_model": [2, 6, 7, 8, 23, 24], "y_n": [10, 15], "y_ny_1": 10, "y_ny_1k": 10, "y_ny_2": 10, "y_ny_2k": 10, "y_ny_n": 10, "y_ny_nk": 10, "y_offset": 8, "y_plot": 11, "y_pred": [2, 3, 6, 8, 9, 10, 11, 12, 24], "y_pred1": 11, "y_pred2": 11, "y_pred_rf": 12, "y_pred_tre": 12, "y_proba": [9, 12], "y_scaler": 8, "y_test": [0, 1, 2, 3, 5, 6, 7, 8, 9, 11, 12, 13, 24], "y_test_onehot": 3, "y_test_predict": [], "y_tot": 6, "y_train": [0, 1, 2, 3, 5, 6, 7, 8, 9, 11, 12, 13, 23, 24], "y_train_mean": 8, "y_train_onehot": 3, "y_train_predict": [], "y_train_scal": 8, "y_val": 3, "ye": [5, 8, 9], "year": [2, 17, 23], "yet": [2, 3, 8, 10, 13, 15, 23], "yi": 15, "yield": [2, 4, 7, 8, 10, 12, 14, 15, 16, 18, 20, 23], "yk": 10, "ylabel": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 15, 20, 23, 24], "ylim": [5, 8], "ym": 11, "ymesh": 15, "yn": 2, "yo": [10, 11, 12], "yoshua": [3, 22], "you": [0, 1, 2, 3, 5, 6, 7, 8, 10, 11, 12, 13, 15, 17, 18, 20, 21, 22, 23, 24], "young": 2, "your": [0, 3, 4, 6, 7, 8, 10, 13, 15, 17, 18, 23], "your_model_object": 1, "yourself": [13, 15, 23], "youtub": 17, "ypred": 8, "ypredict": [2, 15, 23, 24], "ypredict2": 15, "ypredictlasso": 7, "ypredictol": [2, 7], "ypredictown": 8, "ypredictownridg": [8, 24], "ypredictridg": [2, 7, 8, 24], "ypredictskl": 8, "ytest": 8, "ytick": [5, 8, 10, 11], "ytild": [2, 8, 23, 24], "ytildelasso": 7, "ytildenp": [2, 23, 24], "ytildeol": [2, 7], "ytildeownridg": [8, 24], "ytilderidg": [7, 8, 24], "ytrain": 8, "yuxi": 23, "yx": [18, 23], "yy": [18, 23], "yz": [18, 23], "z": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 18, 20, 23, 24], "z_": [3, 4, 14, 18, 23], "z_0": [18, 23], "z_1": [18, 23], "z_2": [18, 23], "z_c": 3, "z_h": 3, "z_hidden": 4, "z_i": [3, 14], "z_j": [3, 14], "z_k": [14, 24], "z_m": 3, "z_mod": 11, "z_o": 3, "z_output": 4, "zaman": 20, "zaxi": 8, "zero": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 23, 24], "zeros_lik": 6, "zeroth": 24, "zfill": 6, "zip": [6, 8], "zm_h": [2, 23], "zn": [], "zone": [], "zoom": 23, "zx": [18, 23], "zy": [18, 23], "zz": [18, 23], "\u00f8yvind": 8}, "titles": ["Exercises week 34", "Exercises week 35", "3. Linear Regression", "14. Building a Feed Forward Neural Network", "15. Solving Differential Equations with Deep Learning", "16. Convolutional Neural Networks", "17. Recurrent neural networks: Overarching view", "4. Ridge and Lasso Regression", "5. Resampling Methods", "6. Logistic Regression", "8. Support Vector Machines, overarching aims", "9. Decision trees, overarching aims", "10. Ensemble Methods: From a Single Tree to Many Trees and Extreme Boosting, Meet the Jungle of Methods", "11. Basic ideas of the Principal Component Analysis (PCA)", "13. Neural networks", "7. Optimization, the central part of any Machine Learning algortithm", "12. Clustering and Unsupervised Learning", "Applied Data Analysis and Machine Learning", "2. Linear Algebra, Handling of Arrays and more Python Features", "Course setting", "1. Elements of Probability Theory and Statistical Data Analysis", "Teachers and Grading", "Textbooks", "Week 34: Introduction to the course, Logistics and Practicalities", "Week 35: From Ordinary Linear Regression to Ridge and Lasso Regression"], "titleterms": {"": [10, 12], "1": [0, 1, 2, 24], "2": [0, 1, 2, 23, 24], "2023": 21, "3": [0, 1, 2, 24], "34": [0, 23], "35": [1, 24], "4": [0, 1, 2, 24], "5": [1, 2], "A": [2, 3, 6, 10, 11, 23], "And": [23, 24], "In": 21, "Ising": 8, "The": [0, 2, 3, 4, 5, 7, 8, 9, 10, 11, 13, 14, 17, 23, 24], "To": 23, "With": 6, "about": [23, 24], "activ": [3, 14], "ad": [2, 8, 23, 24], "adaboost": 12, "adagrad": 15, "adam": 15, "adapt": 12, "adjust": 3, "adversari": 6, "again": [5, 11], "ai": 23, "aim": [10, 11, 23], "aka": 23, "algebra": [18, 23], "algorithm": [11, 12, 13, 14, 23, 24], "algortithm": 15, "all": 10, "an": [0, 2, 6, 12, 23], "analys": [7, 24], "analysi": [2, 7, 8, 13, 17, 20, 23, 24], "analyt": [1, 2], "ani": 15, "anoth": 11, "appli": 17, "approach": [2, 10, 16, 23], "approxim": 14, "architectur": 3, "arrai": [18, 23], "assist": 21, "autocorrel": 20, "autograd": [4, 15], "automat": 15, "back": [3, 13, 14, 24], "background": 17, "bag": 12, "base": 15, "basic": [2, 7, 9, 11, 12, 13, 18, 24], "batch": 3, "bay": 7, "befor": 13, "better": 10, "bia": 8, "binari": 3, "bind": 23, "bird": 12, "boldsymbol": 24, "boost": 12, "bootstrap": [8, 12], "boston": [], "breast": 3, "brief": 23, "bring": 14, "build": [3, 5, 11], "c": 23, "calcul": 24, "can": 23, "cancer": [3, 9, 11, 13], "cart": 11, "case": [10, 12, 20, 24], "central": [15, 17, 20], "chain": 14, "chang": 12, "channel": 23, "chi": [2, 23], "choos": 3, "cifar01": 5, "classic": 13, "classif": [3, 11, 12], "classifi": 10, "clip": 3, "cluster": 16, "cnn": 5, "code": [0, 1, 3, 4, 7, 11, 13, 14, 15, 16, 23, 24], "collect": [3, 5], "commun": 23, "compar": [1, 4, 12], "complet": 24, "complex": [2, 8, 24], "complic": 8, "compon": 13, "comput": 11, "computerlab": 23, "con": 11, "concept": 20, "conjug": 15, "contn": 23, "convex": [10, 15], "convolut": [5, 14], "correl": [13, 24], "cost": [3, 12, 24], "cours": [17, 19, 22, 23], "covari": [7, 13, 20, 24], "cover": 23, "creat": 1, "cross": 8, "cython": 23, "data": [0, 2, 3, 5, 8, 9, 11, 13, 17, 20, 23, 24], "dataset": [3, 5], "david": 23, "deadlin": 23, "deadllin": 21, "decai": 4, "decis": [11, 12], "decomposit": [7, 13, 18, 24], "deeep": [], "deep": [3, 4, 23], "defin": [3, 23], "degre": [2, 24], "deliver": [0, 1], "dens": 2, "deriv": [1, 7, 14, 24], "descent": [4, 12, 15], "design": 24, "detail": [5, 23], "develop": 3, "diagon": 13, "differ": 10, "differenti": [4, 15], "diffus": 4, "dimension": [4, 5, 10], "disadvantag": 11, "discret": 20, "discrimin": 23, "distribut": [7, 20], "do": 3, "doe": 24, "domain": 20, "down": 3, "dropout": 3, "economi": 24, "element": [2, 20, 23], "elimin": 18, "energi": 23, "ensembl": 12, "entropi": 11, "environ": [0, 2], "equat": [2, 4, 14, 24], "error": [2, 12, 23, 24], "essenti": 23, "etc": 23, "euler": 4, "evalu": 3, "exampl": [3, 4, 5, 6, 8, 9, 10, 11, 12, 23, 24], "exercis": [0, 1, 2, 8, 24], "expect": 20, "experi": 20, "explor": 2, "exponenti": 4, "express": [1, 24], "extrapol": 6, "extrem": [12, 23], "ey": 12, "fall": 21, "famili": [3, 23], "famou": 18, "fantast": 24, "featur": [1, 11, 18, 24], "feed": [3, 14], "final": [14, 24], "find": 1, "fine": 3, "first": [6, 14, 23], "fit": [0, 1, 2, 12, 23], "fix": 24, "forc": 5, "forest": 12, "format": 23, "forward": [3, 4, 14], "foster": 23, "fourier": 5, "frank": 8, "freedom": [2, 24], "frequent": 24, "frequentist": [2, 23], "from": [7, 12, 14, 23, 24], "full": 4, "function": [2, 3, 8, 9, 10, 12, 13, 14, 15, 20, 23, 24], "further": [5, 7, 24], "gan": 6, "gaussian": 18, "gd": 15, "gener": [6, 11, 23], "geometr": 13, "gini": 11, "github": 0, "goal": [0, 1], "good": [2, 23], "grade": [21, 23], "gradient": [3, 4, 12, 15], "growth": 4, "ha": 17, "handl": [18, 23], "hessian": 24, "hidden": 4, "hous": [], "how": 1, "hyperparamet": 3, "hyperplan": 10, "i": [2, 3, 23], "id3": 11, "idea": 13, "ii": 23, "implement": [1, 3], "implic": [7, 24], "import": [7, 18, 23, 24], "improv": 3, "includ": 15, "increment": 13, "index": 11, "inform": 21, "input": 4, "instal": [17, 23], "instructor": 21, "interpret": [7, 13, 23, 24], "introduc": [13, 15, 24], "introduct": [2, 8, 17, 18, 23], "invers": [7, 18], "invert": 24, "iter": 12, "its": 24, "jacobian": 24, "jax": 15, "julia": 23, "jungl": 12, "kera": [3, 5], "kernel": [10, 13], "lagrangian": 10, "lasso": [7, 8, 24], "last": 24, "later": [7, 24], "layer": [3, 4, 5, 14], "learn": [0, 1, 2, 3, 4, 13, 15, 16, 17, 23, 24], "least": [1, 7, 8, 23, 24], "lectur": 23, "level": 12, "librari": [17, 23], "likelihood": 9, "limit": [3, 15, 20], "linear": [0, 2, 10, 15, 18, 23, 24], "link": [7, 13, 22, 24], "logist": [9, 23], "loss": 24, "lu": 18, "machin": [2, 10, 15, 17, 23], "main": [20, 23], "make": [2, 11, 12, 24], "mani": [12, 14], "mass": 23, "materi": 23, "math": [7, 24], "mathemat": [5, 7, 10, 24], "matric": [7, 18, 23], "matrix": [1, 3, 7, 13, 14, 18, 23, 24], "matter": 2, "max": 24, "mean": [2, 24], "meet": [7, 12, 20, 23, 24], "mercer": 10, "method": [8, 11, 12, 15, 23], "min": 24, "minim": 23, "ml": 23, "mlp": 14, "mnist": [5, 6], "model": [0, 2, 3, 6, 8, 14, 23], "momentum": 15, "moon": [10, 11], "more": [5, 8, 18, 23, 24], "multilay": 14, "multipl": [3, 5], "multipli": 10, "need": 23, "network": [3, 4, 5, 6, 9, 14, 23], "neural": [3, 4, 5, 6, 9, 14, 23], "new": 6, "non": 10, "normal": [2, 3], "notat": 14, "note": 24, "now": [3, 11, 15], "nuclear": [2, 23], "numba": 23, "number": [2, 4, 20, 24], "numer": [4, 20], "numpi": [18, 23], "object": 5, "obtain": 13, "od": 4, "off": 8, "ol": [0, 1, 7, 8], "one": [4, 14], "oper": 18, "optim": [3, 10, 15, 17, 23, 24], "order": 15, "ordinari": [1, 7, 8, 23, 24], "organ": [2, 23], "oslo": 22, "other": [6, 11, 13, 14, 18, 23], "our": [2, 6, 7, 13, 15, 23, 24], "outcom": [17, 23], "output": 4, "overarch": [2, 6, 10, 11, 23, 24], "overview": [12, 23], "own": [2, 12, 13, 23, 24], "packag": [18, 23], "panda": [23, 24], "paramet": [23, 24], "part": [15, 17], "partial": 4, "pass": 3, "pca": 13, "pdf": 20, "perceptron": 14, "perform": [3, 11], "period": 5, "perspect": 3, "plan": 24, "plethora": 23, "point": 6, "poisson": 4, "polynomi": [1, 5], "popul": 4, "popular": 23, "practic": [15, 21, 23], "pre": [3, 5], "predict": 6, "preprocess": 24, "prerequisit": [5, 17, 23], "princip": 13, "principl": 5, "pro": 11, "probabl": [7, 20], "problem": [3, 4, 15, 23, 24], "procedur": [11, 23], "process": [3, 5], "program": [4, 15], "project": [8, 21, 23], "prop": 15, "propag": [3, 14], "properti": [7, 20, 24], "python": [0, 2, 11, 17, 18, 23], "quick": 10, "r": 23, "random": [12, 13, 20], "read": [11, 23, 24], "real": [8, 23], "recommend": [23, 24], "recurr": [6, 14], "reduc": [2, 24], "reduct": 5, "reformul": 4, "regress": [0, 2, 7, 8, 9, 11, 12, 15, 23, 24], "regular": 3, "relat": [], "relev": [22, 24], "relu": 3, "remark": 5, "remind": [8, 10, 23, 24], "replac": 15, "repositori": 0, "requir": [4, 17], "resampl": 8, "rescal": 8, "residu": 24, "resourc": 4, "result": 24, "revisit": 15, "rewrit": [23, 24], "ridg": [2, 7, 8, 24], "rm": 15, "rule": 14, "same": 15, "sampl": 13, "scale": 24, "schedul": 23, "schemat": 11, "scheme": 4, "scienc": 23, "scikit": [2, 3, 13, 23, 24], "second": 15, "semest": 21, "set": [0, 2, 4, 5, 11, 14, 19, 23, 24], "setup": 0, "sgd": 15, "should": 3, "similar": 15, "simpl": [2, 6, 11, 15, 23, 24], "singl": 12, "singular": [7, 13, 24], "size": 24, "sklearn": 1, "soft": 10, "softmax": 3, "softwar": 23, "solv": 4, "solver": 15, "some": [15, 18, 24], "specifi": 4, "split": [0, 2, 24], "squar": [1, 2, 7, 8, 12, 23, 24], "standard": [15, 24], "state": 2, "statist": [7, 8, 17, 20, 23], "steepest": [12, 15], "stochast": [15, 20], "strongli": 23, "suggest": 23, "summari": [21, 23], "superposit": 5, "supervis": 3, "support": 10, "svd": [7, 24], "systemat": 5, "t": 24, "take": 1, "taken": 23, "teach": 21, "teacher": [21, 23], "techniqu": [8, 13], "technologi": 17, "tensorflow": [3, 5], "tent": [21, 23], "test": [0, 2, 3, 24], "text": 23, "textbook": [22, 23], "theorem": [7, 10, 13, 14, 20], "theori": 20, "thi": 23, "tip": 15, "togeth": 14, "tool": 23, "top": 3, "topic": 23, "toward": 13, "trade": 8, "tradeoff": 8, "train": [0, 2, 3, 6, 23, 24], "transform": 5, "tree": [11, 12], "tune": 3, "two": [5, 10, 17], "type": [4, 6, 14, 23], "uio": 23, "univers": [14, 22], "unsupervis": 16, "up": [0, 2, 4, 11, 14, 23, 24], "us": [1, 2, 3, 4, 5, 9, 15, 17, 23, 24], "v": 5, "valid": 8, "valu": [7, 13, 20, 24], "variabl": 20, "varianc": 8, "variou": 2, "vector": [1, 10, 14, 18, 23, 24], "versu": 23, "view": [2, 6, 12, 24], "virtual": 0, "visual": [3, 11], "wai": 11, "wave": 4, "we": 23, "week": [0, 1, 23, 24], "what": [2, 23, 24], "which": 3, "why": 23, "wisconsin": 9, "write": [6, 13], "x": 24, "xgboost": 12, "your": [1, 2, 12, 24]}}) \ No newline at end of file +Search.setIndex({"alltitles": {"A Classification Tree": [[9, "a-classification-tree"]], "A Frequentist approach to data analysis": [[0, "a-frequentist-approach-to-data-analysis"], [24, "a-frequentist-approach-to-data-analysis"]], "A better approach": [[8, "a-better-approach"]], "A first summary": [[24, "a-first-summary"]], "A quick Reminder on Lagrangian Multipliers": [[8, "a-quick-reminder-on-lagrangian-multipliers"]], "A simple example": [[4, "a-simple-example"]], "A soft classifier": [[8, "a-soft-classifier"]], "A top-down perspective on Neural networks": [[1, "a-top-down-perspective-on-neural-networks"]], "ADAM optimizer": [[13, "adam-optimizer"]], "Activation functions": [[12, "activation-functions"]], "Adaptive boosting: AdaBoost, Basic Algorithm": [[10, "adaptive-boosting-adaboost-basic-algorithm"]], "Adding error analysis and training set up": [[24, "adding-error-analysis-and-training-set-up"], [25, "adding-error-analysis-and-training-set-up"]], "Adjust hyperparameters": [[1, "adjust-hyperparameters"]], "Algorithms for Setting up Decision Trees": [[9, "algorithms-for-setting-up-decision-trees"]], "An Overview of Ensemble Methods": [[10, "an-overview-of-ensemble-methods"]], "An extrapolation example": [[4, "an-extrapolation-example"]], "An optimization/minimization problem": [[24, "an-optimization-minimization-problem"]], "And finally \\boldsymbol{X}\\boldsymbol{X}^T": [[25, "and-finally-boldsymbol-x-boldsymbol-x-t"]], "And what about using neural networks?": [[24, "and-what-about-using-neural-networks"]], "Another example, the moons again": [[9, "another-example-the-moons-again"]], "Applied Data Analysis and Machine Learning": [[18, null]], "Autocorrelation function": [[21, "autocorrelation-function"]], "Automatic differentiation": [[13, "automatic-differentiation"]], "Back to Ridge and LASSO Regression": [[25, "back-to-ridge-and-lasso-regression"]], "Back to the Cancer Data": [[11, "back-to-the-cancer-data"]], "Bagging": [[10, "bagging"]], "Bagging Examples": [[10, "bagging-examples"]], "Basic Matrix Features": [[19, "basic-matrix-features"]], "Basic ideas of the Principal Component Analysis (PCA)": [[11, null]], "Basic math of the SVD": [[5, "basic-math-of-the-svd"], [25, "basic-math-of-the-svd"]], "Basics": [[7, "basics"]], "Basics of a tree": [[9, "basics-of-a-tree"]], "Batch Normalization": [[1, "batch-normalization"]], "Bayes\u2019 Theorem and Ridge and Lasso Regression": [[5, "bayes-theorem-and-ridge-and-lasso-regression"]], "Boosting, a Bird\u2019s Eye View": [[10, "boosting-a-bird-s-eye-view"]], "Bootstrap": [[6, "bootstrap"]], "Bringing it together, first back propagation equation": [[12, "bringing-it-together-first-back-propagation-equation"]], "Building a Feed Forward Neural Network": [[1, null]], "Building a tree, regression": [[9, "building-a-tree-regression"]], "Building neural networks in Tensorflow and Keras": [[1, "building-neural-networks-in-tensorflow-and-keras"]], "CNNs in more detail, building convolutional neural networks in Tensorflow and Keras": [[3, "cnns-in-more-detail-building-convolutional-neural-networks-in-tensorflow-and-keras"]], "Cancer Data again now with Decision Trees and other Methods": [[9, "cancer-data-again-now-with-decision-trees-and-other-methods"]], "Choose cost function and optimizer": [[1, "choose-cost-function-and-optimizer"]], "Classical PCA Theorem": [[11, "classical-pca-theorem"]], "Clustering and Unsupervised Learning": [[14, null]], "Code for SVD and Inversion of Matrices": [[5, "code-for-svd-and-inversion-of-matrices"]], "Codes and Approaches": [[14, "codes-and-approaches"]], "Codes for the SVD": [[5, "codes-for-the-svd"], [25, "codes-for-the-svd"]], "Coding Setup and Linear Regression": [[15, "coding-setup-and-linear-regression"]], "Collect and pre-process data": [[1, "collect-and-pre-process-data"]], "Communication channels": [[24, "communication-channels"]], "Compare Bagging on Trees with Random Forests": [[10, "compare-bagging-on-trees-with-random-forests"]], "Comparing with a numerical scheme": [[2, "comparing-with-a-numerical-scheme"]], "Computing the Gini index": [[9, "computing-the-gini-index"]], "Conjugate gradient method": [[13, "conjugate-gradient-method"]], "Convex functions": [[13, "convex-functions"]], "Convolution Examples: Polynomial multiplication": [[3, "convolution-examples-polynomial-multiplication"]], "Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)": [[3, "convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms"]], "Convolutional Neural Network": [[12, "convolutional-neural-network"]], "Convolutional Neural Networks": [[3, null]], "Correlation Function and Design/Feature Matrix": [[25, "correlation-function-and-design-feature-matrix"]], "Correlation Matrix": [[11, "correlation-matrix"], [25, "correlation-matrix"]], "Correlation Matrix with Pandas": [[25, "correlation-matrix-with-pandas"]], "Course Format": [[24, "course-format"]], "Course setting": [[20, null]], "Covariance Matrix Examples": [[25, "covariance-matrix-examples"]], "Covariance and Correlation Matrix": [[25, "covariance-and-correlation-matrix"]], "Cross-validation": [[6, "cross-validation"]], "Deadlines for projects (tentative)": [[24, "deadlines-for-projects-tentative"]], "Decision trees, overarching aims": [[9, null]], "Deep learning methods": [[24, "deep-learning-methods"]], "Define model and architecture": [[1, "define-model-and-architecture"]], "Defining the cost function": [[1, "defining-the-cost-function"]], "Deliverables": [[15, "deliverables"], [16, "deliverables"]], "Derivatives and the chain rule": [[12, "derivatives-and-the-chain-rule"]], "Derivatives, example 1": [[25, "derivatives-example-1"]], "Deriving OLS from a probability distribution": [[5, "deriving-ols-from-a-probability-distribution"]], "Deriving and Implementing Ordinary Least Squares": [[16, "deriving-and-implementing-ordinary-least-squares"]], "Deriving and Implementing Ridge Regression": [[17, "deriving-and-implementing-ridge-regression"]], "Deriving the Lasso Regression Equations": [[25, "deriving-the-lasso-regression-equations"]], "Deriving the Ridge Regression Equations": [[25, "deriving-the-ridge-regression-equations"]], "Deriving the back propagation code for a multilayer perceptron model": [[12, "deriving-the-back-propagation-code-for-a-multilayer-perceptron-model"]], "Developing a code for doing neural networks with back propagation": [[1, "developing-a-code-for-doing-neural-networks-with-back-propagation"]], "Diagonalize the sample covariance matrix to obtain the principal components": [[11, "diagonalize-the-sample-covariance-matrix-to-obtain-the-principal-components"]], "Different kernels and Mercer\u2019s theorem": [[8, "different-kernels-and-mercer-s-theorem"]], "Disadvantages": [[9, "disadvantages"]], "Discriminative Modeling": [[24, "discriminative-modeling"]], "Domains and probabilities": [[21, "domains-and-probabilities"]], "Dropout": [[1, "dropout"]], "Economy-size SVD": [[25, "economy-size-svd"]], "Elements of Probability Theory and Statistical Data Analysis": [[21, null]], "Ensemble Methods: From a Single Tree to Many Trees and Extreme Boosting, Meet the Jungle of Methods": [[10, null]], "Entropy and the ID3 algorithm": [[9, "entropy-and-the-id3-algorithm"]], "Essential elements of ML": [[24, "essential-elements-of-ml"]], "Evaluate model performance on test data": [[1, "evaluate-model-performance-on-test-data"]], "Example 2": [[25, "example-2"]], "Example 3": [[25, "example-3"]], "Example 4": [[25, "example-4"]], "Example Matrix": [[25, "example-matrix"]], "Example of discriminative modeling, taken from Generative Deep Learning by David Foster": [[24, "example-of-discriminative-modeling-taken-from-generative-deep-learning-by-david-foster"]], "Example of generative modeling, taken from Generative Deep Learning by David Foster": [[24, "example-of-generative-modeling-taken-from-generative-deep-learning-by-david-foster"]], "Example of own Standard scaling": [[25, "example-of-own-standard-scaling"]], "Example relevant for the exercises": [[25, "example-relevant-for-the-exercises"]], "Example: Exponential decay": [[2, "example-exponential-decay"]], "Example: Population growth": [[2, "example-population-growth"]], "Example: The diffusion equation": [[2, "example-the-diffusion-equation"]], "Example: binary classification problem": [[1, "example-binary-classification-problem"]], "Examples": [[24, "examples"]], "Examples of likelihood functions used in logistic regression and neural networks": [[7, "examples-of-likelihood-functions-used-in-logistic-regression-and-neural-networks"]], "Exercise 1 - Choice of model and degrees of freedom": [[17, "exercise-1-choice-of-model-and-degrees-of-freedom"]], "Exercise 1 - Finding the derivative of Matrix-Vector expressions": [[16, "exercise-1-finding-the-derivative-of-matrix-vector-expressions"]], "Exercise 1 - Github Setup": [[15, "exercise-1-github-setup"]], "Exercise 1: Setting up various Python environments": [[0, "exercise-1-setting-up-various-python-environments"]], "Exercise 2 - Deriving the expression for OLS": [[16, "exercise-2-deriving-the-expression-for-ols"]], "Exercise 2 - Deriving the expression for Ridge Regression": [[17, "exercise-2-deriving-the-expression-for-ridge-regression"]], "Exercise 2 - Setting up a Github repository": [[15, "exercise-2-setting-up-a-github-repository"]], "Exercise 2: making your own data and exploring scikit-learn": [[0, "exercise-2-making-your-own-data-and-exploring-scikit-learn"]], "Exercise 3 - Creating feature matrix and implementing OLS using the analytical expression": [[16, "exercise-3-creating-feature-matrix-and-implementing-ols-using-the-analytical-expression"]], "Exercise 3 - Fitting an OLS model to data": [[15, "exercise-3-fitting-an-ols-model-to-data"]], "Exercise 3 - Scaling data": [[17, "exercise-3-scaling-data"]], "Exercise 3 - Setting up a Python virtual environment": [[15, "exercise-3-setting-up-a-python-virtual-environment"]], "Exercise 3: Normalizing our data": [[0, "exercise-3-normalizing-our-data"]], "Exercise 4 - Fitting a polynomial": [[16, "exercise-4-fitting-a-polynomial"]], "Exercise 4 - Implementing Ridge Regression": [[17, "exercise-4-implementing-ridge-regression"]], "Exercise 4 - Testing multiple hyperparameters": [[17, "exercise-4-testing-multiple-hyperparameters"]], "Exercise 4 - The train-test split": [[15, "exercise-4-the-train-test-split"]], "Exercise 4: Adding Ridge Regression": [[0, "exercise-4-adding-ridge-regression"]], "Exercise 5 - Comparing your code with sklearn": [[16, "exercise-5-comparing-your-code-with-sklearn"]], "Exercise 5: Analytical exercises": [[0, "exercise-5-analytical-exercises"]], "Exercise: Cross-validation as resampling techniques, adding more complexity": [[6, "exercise-cross-validation-as-resampling-techniques-adding-more-complexity"]], "Exercise: Analysis of real data": [[6, "exercise-analysis-of-real-data"]], "Exercise: Bias-variance trade-off and resampling techniques": [[6, "exercise-bias-variance-trade-off-and-resampling-techniques"]], "Exercise: Lasso Regression on the Franke function with resampling": [[6, "exercise-lasso-regression-on-the-franke-function-with-resampling"]], "Exercise: Ordinary Least Square (OLS) on the Franke function": [[6, "exercise-ordinary-least-square-ols-on-the-franke-function"]], "Exercise: Ridge Regression on the Franke function with resampling": [[6, "exercise-ridge-regression-on-the-franke-function-with-resampling"]], "Exercises": [[0, "exercises"]], "Exercises and Projects": [[6, "exercises-and-projects"]], "Exercises week 34": [[15, null]], "Exercises week 35": [[16, null]], "Expectation values": [[21, "expectation-values"]], "Extremely useful tools, strongly recommended": [[24, "extremely-useful-tools-strongly-recommended"]], "Feed-forward neural networks": [[12, "feed-forward-neural-networks"]], "Feed-forward pass": [[1, "feed-forward-pass"]], "Final back propagating equation": [[12, "final-back-propagating-equation"]], "Fine-tuning neural network hyperparameters": [[1, "fine-tuning-neural-network-hyperparameters"]], "Fitting an Equation of State for Dense Nuclear Matter": [[0, "fitting-an-equation-of-state-for-dense-nuclear-matter"]], "Fixing the singularity": [[25, "fixing-the-singularity"]], "Frequently used scaling functions": [[25, "frequently-used-scaling-functions"]], "From one to many layers, the universal approximation theorem": [[12, "from-one-to-many-layers-the-universal-approximation-theorem"]], "Functionality in Scikit-Learn": [[25, "functionality-in-scikit-learn"]], "Further Dimensionality Remarks": [[3, "further-dimensionality-remarks"]], "Further properties (important for our analyses later)": [[5, "further-properties-important-for-our-analyses-later"], [25, "further-properties-important-for-our-analyses-later"]], "Gaussian Elimination": [[19, "gaussian-elimination"]], "General Features": [[9, "general-features"]], "General linear models and linear algebra": [[24, "general-linear-models-and-linear-algebra"]], "Generalizing the fitting procedure as a linear algebra problem": [[24, "generalizing-the-fitting-procedure-as-a-linear-algebra-problem"], [24, "id1"]], "Generative Adversarial Networks": [[4, "generative-adversarial-networks"]], "Generative Models": [[4, "generative-models"]], "Generative Versus Discriminative Modeling": [[24, "generative-versus-discriminative-modeling"]], "Geometric Interpretation and link with Singular Value Decomposition": [[11, "geometric-interpretation-and-link-with-singular-value-decomposition"]], "Gradient Boosting, Classification Example": [[10, "gradient-boosting-classification-example"]], "Gradient Boosting, Examples of Regression": [[10, "gradient-boosting-examples-of-regression"]], "Gradient Clipping": [[1, "gradient-clipping"]], "Gradient boosting: Basics with Steepest Descent/Functional Gradient Descent": [[10, "gradient-boosting-basics-with-steepest-descent-functional-gradient-descent"]], "Gradient descent": [[2, "gradient-descent"]], "Grading": [[22, "grading"], [22, "id2"], [24, "grading"]], "How to take derivatives of Matrix-Vector expressions": [[16, "how-to-take-derivatives-of-matrix-vector-expressions"]], "Hyperplanes and all that": [[8, "hyperplanes-and-all-that"]], "Important Matrix and vector handling packages": [[19, "important-matrix-and-vector-handling-packages"]], "Improving performance": [[1, "improving-performance"]], "In summary": [[22, "in-summary"]], "Including Stochastic Gradient Descent with Autograd": [[13, "including-stochastic-gradient-descent-with-autograd"]], "Incremental PCA": [[11, "incremental-pca"]], "Installing R, C++, cython or Julia": [[24, "installing-r-c-cython-or-julia"]], "Installing R, C++, cython, Numba etc": [[24, "installing-r-c-cython-numba-etc"]], "Instructor information": [[22, "instructor-information"]], "Interpretations and optimizing our parameters": [[24, "interpretations-and-optimizing-our-parameters"], [24, "id2"], [24, "id3"], [25, "interpretations-and-optimizing-our-parameters"], [25, "id1"], [25, "id2"]], "Interpreting the Ridge results": [[25, "interpreting-the-ridge-results"]], "Introducing JAX": [[13, "introducing-jax"]], "Introducing the Covariance and Correlation functions": [[11, "introducing-the-covariance-and-correlation-functions"], [25, "introducing-the-covariance-and-correlation-functions"]], "Introduction": [[0, "introduction"], [6, "introduction"], [18, "introduction"], [19, "introduction"]], "Iterative Fitting, Classification and AdaBoost": [[10, "iterative-fitting-classification-and-adaboost"]], "Iterative Fitting, Regression and Squared-error Cost Function": [[10, "iterative-fitting-regression-and-squared-error-cost-function"]], "Kernel PCA": [[11, "kernel-pca"]], "Kernels and non-linearity": [[8, "kernels-and-non-linearity"]], "LU Decomposition, the inverse of a matrix": [[19, "lu-decomposition-the-inverse-of-a-matrix"]], "Layers": [[1, "layers"]], "Layers used to build CNNs": [[3, "layers-used-to-build-cnns"]], "Learning goals": [[15, "learning-goals"], [16, "learning-goals"], [17, "learning-goals"]], "Learning outcomes": [[18, "learning-outcomes"], [24, "learning-outcomes"]], "Lectures and ComputerLab": [[24, "lectures-and-computerlab"]], "Limitations of supervised learning with deep networks": [[1, "limitations-of-supervised-learning-with-deep-networks"]], "Linear Algebra, Handling of Arrays and more Python Features": [[19, null]], "Linear Regression": [[0, null]], "Linear Regression Problems": [[25, "linear-regression-problems"]], "Linear Regression, basic elements": [[0, "linear-regression-basic-elements"]], "Linking Bayes\u2019 Theorem with Ridge and Lasso Regression": [[5, "linking-bayes-theorem-with-ridge-and-lasso-regression"]], "Linking the regression analysis with a statistical interpretation": [[5, "linking-the-regression-analysis-with-a-statistical-interpretation"]], "Linking with the SVD": [[5, "linking-with-the-svd"], [25, "linking-with-the-svd"]], "Links to relevant courses at the University of Oslo": [[23, "links-to-relevant-courses-at-the-university-of-oslo"]], "Logistic Regression": [[7, null], [7, "id1"]], "MNIST and GANs": [[4, "mnist-and-gans"]], "Machine Learning": [[24, "machine-learning"]], "Machine learning": [[18, "machine-learning"]], "Main textbooks": [[24, "main-textbooks"]], "Making a tree": [[9, "making-a-tree"]], "Making your own Bootstrap: Changing the Level of the Decision Tree": [[10, "making-your-own-bootstrap-changing-the-level-of-the-decision-tree"]], "Making your own test-train splitting": [[25, "making-your-own-test-train-splitting"]], "Mathematical Interpretation of Ordinary Least Squares": [[5, "mathematical-interpretation-of-ordinary-least-squares"], [25, "mathematical-interpretation-of-ordinary-least-squares"]], "Mathematical optimization of convex functions": [[8, "mathematical-optimization-of-convex-functions"]], "Mathematics of CNNs": [[3, "mathematics-of-cnns"]], "Mathematics of the SVD and implications": [[5, "mathematics-of-the-svd-and-implications"], [25, "mathematics-of-the-svd-and-implications"]], "Matrices in Python": [[24, "matrices-in-python"]], "Matrix multiplication": [[1, "matrix-multiplication"]], "Matrix-vector notation and activation": [[12, "matrix-vector-notation-and-activation"]], "Meet the covariance!": [[21, "meet-the-covariance"]], "Meet the Covariance Matrix": [[5, "meet-the-covariance-matrix"], [25, "meet-the-covariance-matrix"]], "Meet the Hessian Matrix": [[25, "meet-the-hessian-matrix"]], "Meet the Pandas": [[24, "meet-the-pandas"]], "Min-Max Scaling": [[25, "min-max-scaling"]], "Momentum based GD": [[13, "momentum-based-gd"]], "More complicated Example: The Ising model": [[6, "more-complicated-example-the-ising-model"]], "More interpretations": [[25, "more-interpretations"]], "More on Dimensionalities": [[3, "more-on-dimensionalities"]], "More on Rescaling data": [[6, "more-on-rescaling-data"]], "More preprocessing": [[25, "more-preprocessing"]], "Multilayer perceptrons": [[12, "multilayer-perceptrons"]], "Network requirements": [[2, "network-requirements"]], "Neural Networks vs CNNs": [[3, "neural-networks-vs-cnns"]], "Neural networks": [[12, null]], "Note about SVD Calculations": [[25, "note-about-svd-calculations"]], "Numerical experiments and the covariance, central limit theorem": [[21, "numerical-experiments-and-the-covariance-central-limit-theorem"]], "Numpy and arrays": [[19, "numpy-and-arrays"], [24, "numpy-and-arrays"]], "Numpy examples and Important Matrix and vector handling packages": [[24, "numpy-examples-and-important-matrix-and-vector-handling-packages"]], "Optimization, the central part of any Machine Learning algortithm": [[13, null]], "Optimizing our parameters": [[24, "optimizing-our-parameters"]], "Optimizing our parameters, more details": [[24, "optimizing-our-parameters-more-details"]], "Optimizing the cost function": [[1, "optimizing-the-cost-function"]], "Organizing our data": [[0, "organizing-our-data"], [24, "organizing-our-data"]], "Other Matrix and Vector Operations": [[19, "other-matrix-and-vector-operations"]], "Other Types of Recurrent Neural Networks": [[4, "other-types-of-recurrent-neural-networks"]], "Other courses on Data science and Machine Learning at UiO": [[24, "other-courses-on-data-science-and-machine-learning-at-uio"]], "Other courses on Data science and Machine Learning at UiO, contn": [[24, "other-courses-on-data-science-and-machine-learning-at-uio-contn"]], "Other popular texts": [[24, "other-popular-texts"]], "Other techniques": [[11, "other-techniques"]], "Other types of networks": [[12, "other-types-of-networks"]], "Other ways of visualizing the trees": [[9, "other-ways-of-visualizing-the-trees"]], "Our model for the nuclear binding energies": [[24, "our-model-for-the-nuclear-binding-energies"]], "Overview of first week": [[24, "overview-of-first-week"]], "Own code for Ordinary Least Squares": [[24, "own-code-for-ordinary-least-squares"], [25, "own-code-for-ordinary-least-squares"]], "PCA and scikit-learn": [[11, "pca-and-scikit-learn"]], "Pandas AI": [[24, "pandas-ai"]], "Partial Differential Equations": [[2, "partial-differential-equations"]], "Plans for week 35": [[25, "plans-for-week-35"]], "Practical tips": [[13, "practical-tips"]], "Practicalities": [[22, "practicalities"], [22, "id1"]], "Predicting New Points With A Trained Recurrent Neural Network": [[4, "predicting-new-points-with-a-trained-recurrent-neural-network"]], "Preprocessing our data": [[25, "preprocessing-our-data"]], "Prerequisites": [[24, "prerequisites"]], "Prerequisites and background": [[18, "prerequisites-and-background"]], "Prerequisites: Collect and pre-process data": [[3, "prerequisites-collect-and-pre-process-data"]], "Probability Distribution Functions": [[21, "probability-distribution-functions"]], "Program for stochastic gradient": [[13, "program-for-stochastic-gradient"]], "Properties of PDFs": [[21, "properties-of-pdfs"]], "Pros and cons of trees, pros": [[9, "pros-and-cons-of-trees-pros"]], "Python installers": [[18, "python-installers"], [24, "python-installers"]], "RMS prop": [[13, "rms-prop"]], "Random Numbers": [[21, "random-numbers"]], "Random forests": [[10, "random-forests"]], "Randomized PCA": [[11, "randomized-pca"]], "Reading material": [[24, "reading-material"]], "Reading recommendations:": [[25, "reading-recommendations"]], "Reading suggestions week 34": [[24, "reading-suggestions-week-34"]], "Recurrent neural networks": [[12, "recurrent-neural-networks"]], "Recurrent neural networks: Overarching view": [[4, null]], "Reducing the number of degrees of freedom, overarching view": [[0, "reducing-the-number-of-degrees-of-freedom-overarching-view"], [25, "reducing-the-number-of-degrees-of-freedom-overarching-view"]], "Reformulating the problem": [[2, "reformulating-the-problem"]], "Regression Case": [[10, "regression-case"]], "Regression analysis, overarching aims": [[24, "regression-analysis-overarching-aims"]], "Regression analysis, overarching aims II": [[24, "regression-analysis-overarching-aims-ii"]], "Regularization": [[1, "regularization"]], "Reminder from last week": [[25, "reminder-from-last-week"]], "Reminder on Statistics": [[6, "reminder-on-statistics"]], "Replace or not": [[13, "replace-or-not"]], "Required Technologies": [[18, "required-technologies"]], "Resampling Methods": [[6, null]], "Resampling methods": [[6, "id1"]], "Residual Error": [[25, "residual-error"]], "Resources on differential equations and deep learning": [[2, "resources-on-differential-equations-and-deep-learning"]], "Revisiting our Linear Regression Solvers": [[13, "revisiting-our-linear-regression-solvers"]], "Rewriting the Covariance and/or Correlation Matrix": [[25, "rewriting-the-covariance-and-or-correlation-matrix"]], "Rewriting the fitting procedure as a linear algebra problem": [[24, "rewriting-the-fitting-procedure-as-a-linear-algebra-problem"]], "Rewriting the fitting procedure as a linear algebra problem, more details": [[24, "rewriting-the-fitting-procedure-as-a-linear-algebra-problem-more-details"]], "Ridge and LASSO Regression": [[25, "ridge-and-lasso-regression"]], "Ridge and Lasso Regression": [[5, null], [5, "id1"]], "Same code but now with momentum gradient descent": [[13, "same-code-but-now-with-momentum-gradient-descent"]], "Schedule first week": [[24, "schedule-first-week"]], "Schematic Regression Procedure": [[9, "schematic-regression-procedure"]], "Setting up the Back propagation algorithm": [[12, "setting-up-the-back-propagation-algorithm"]], "Setting up the Matrix to be inverted": [[25, "setting-up-the-matrix-to-be-inverted"]], "Setting up the network using Autograd; The full program": [[2, "setting-up-the-network-using-autograd-the-full-program"]], "Similar (second order function now) problem but now with AdaGrad": [[13, "similar-second-order-function-now-problem-but-now-with-adagrad"]], "Simple Python Code to read in Data and perform Classification": [[9, "simple-python-code-to-read-in-data-and-perform-classification"]], "Simple case": [[25, "simple-case"]], "Simple linear regression model using scikit-learn": [[0, "simple-linear-regression-model-using-scikit-learn"], [24, "simple-linear-regression-model-using-scikit-learn"]], "Software and needed installations": [[24, "software-and-needed-installations"]], "Solving Differential Equations with Deep Learning": [[2, null]], "Solving the one dimensional Poisson equation": [[2, "solving-the-one-dimensional-poisson-equation"]], "Solving the wave equation with Neural Networks": [[2, "solving-the-wave-equation-with-neural-networks"]], "Some famous Matrices": [[19, "some-famous-matrices"]], "Some simple problems": [[13, "some-simple-problems"]], "Some useful matrix and vector expressions": [[25, "some-useful-matrix-and-vector-expressions"]], "Splitting our Data in Training and Test data": [[0, "splitting-our-data-in-training-and-test-data"], [25, "splitting-our-data-in-training-and-test-data"]], "Standard steepest descent": [[13, "standard-steepest-descent"]], "Statistical analysis and optimization of data": [[18, "statistical-analysis-and-optimization-of-data"], [24, "statistical-analysis-and-optimization-of-data"]], "Steepest descent": [[13, "steepest-descent"]], "Stochastic Gradient Descent (SGD)": [[13, "stochastic-gradient-descent-sgd"]], "Stochastic variables and the main concepts, the discrete case": [[21, "stochastic-variables-and-the-main-concepts-the-discrete-case"]], "Support Vector Machines, overarching aims": [[8, null]], "Systematic reduction": [[3, "systematic-reduction"]], "Teachers": [[24, "teachers"]], "Teachers and Grading": [[22, null]], "Teaching Assistants Fall semester 2023": [[22, "teaching-assistants-fall-semester-2023"]], "Tentative deadllines for projects": [[22, "tentative-deadllines-for-projects"]], "Testing the Means Squared Error as function of Complexity": [[0, "testing-the-means-squared-error-as-function-of-complexity"], [25, "testing-the-means-squared-error-as-function-of-complexity"]], "Textbooks": [[23, null]], "The Algorithm before theorem": [[11, "the-algorithm-before-theorem"]], "The Breast Cancer Data, now with Keras": [[1, "the-breast-cancer-data-now-with-keras"]], "The CART algorithm for Classification": [[9, "the-cart-algorithm-for-classification"]], "The CART algorithm for Regression": [[9, "the-cart-algorithm-for-regression"]], "The CIFAR01 data set": [[3, "the-cifar01-data-set"]], "The Jacobian": [[25, "the-jacobian"]], "The MNIST dataset again": [[3, "the-mnist-dataset-again"]], "The RELU function family": [[1, "the-relu-function-family"]], "The SVD, a Fantastic Algorithm": [[25, "the-svd-a-fantastic-algorithm"]], "The Softmax function": [[1, "the-softmax-function"]], "The \\chi^2 function": [[0, "the-chi-2-function"], [24, "the-chi-2-function"], [24, "id4"], [24, "id5"], [24, "id6"], [24, "id7"], [24, "id8"]], "The bias-variance tradeoff": [[6, "the-bias-variance-tradeoff"]], "The code for solving the ODE": [[2, "the-code-for-solving-the-ode"]], "The complete code with a simple data set": [[25, "the-complete-code-with-a-simple-data-set"]], "The cost/loss function": [[25, "the-cost-loss-function"]], "The course has two central parts": [[18, "the-course-has-two-central-parts"]], "The equations for ordinary least squares": [[25, "the-equations-for-ordinary-least-squares"]], "The logistic function": [[7, "the-logistic-function"]], "The mean squared error and its derivative": [[25, "the-mean-squared-error-and-its-derivative"]], "The moons example": [[8, "the-moons-example"]], "The multilayer perceptron (MLP)": [[12, "the-multilayer-perceptron-mlp"]], "The network with one input layer, specified number of hidden layers, and one output layer": [[2, "the-network-with-one-input-layer-specified-number-of-hidden-layers-and-one-output-layer"]], "The plethora of machine learning algorithms/methods": [[24, "the-plethora-of-machine-learning-algorithms-methods"]], "The singular value decomposition": [[5, "the-singular-value-decomposition"], [25, "the-singular-value-decomposition"]], "The two-dimensional case": [[8, "the-two-dimensional-case"]], "To our real data: nuclear binding energies. Brief reminder on masses and binding energies": [[24, "to-our-real-data-nuclear-binding-energies-brief-reminder-on-masses-and-binding-energies"]], "Topics covered in this course: Statistical analysis and optimization of data": [[24, "topics-covered-in-this-course-statistical-analysis-and-optimization-of-data"]], "Towards the PCA theorem": [[11, "towards-the-pca-theorem"]], "Train and test datasets": [[1, "train-and-test-datasets"]], "Two-dimensional Objects": [[3, "two-dimensional-objects"]], "Type of problem": [[2, "type-of-problem"]], "Types of Machine Learning": [[24, "types-of-machine-learning"]], "Useful Python libraries": [[18, "useful-python-libraries"], [24, "useful-python-libraries"]], "Using Autograd": [[13, "using-autograd"]], "Using forward Euler to solve the ODE": [[2, "using-forward-euler-to-solve-the-ode"]], "Using gradient descent methods, limitations": [[13, "using-gradient-descent-methods-limitations"]], "Visualization": [[1, "visualization"], [1, "id1"]], "Visualizing the Tree, Classification": [[9, "visualizing-the-tree-classification"]], "Week 34: Introduction to the course, Logistics and Practicalities": [[24, null]], "Week 35: From Ordinary Linear Regression to Ridge and Lasso Regression": [[25, null]], "Weekly Exercises 3": [[17, null]], "What Is Generative Modeling?": [[24, "what-is-generative-modeling"]], "What does it mean?": [[25, "what-does-it-mean"]], "What is Machine Learning?": [[0, "what-is-machine-learning"]], "What is a good model?": [[0, "what-is-a-good-model"], [24, "what-is-a-good-model"]], "What is a good model? Can we define it?": [[24, "what-is-a-good-model-can-we-define-it"]], "Which activation function should I use?": [[1, "which-activation-function-should-i-use"]], "Why Linear Regression (aka Ordinary Least Squares and family)": [[24, "why-linear-regression-aka-ordinary-least-squares-and-family"]], "Wisconsin Cancer Data": [[7, "wisconsin-cancer-data"]], "Writing Our First Generative Adversarial Network": [[4, "writing-our-first-generative-adversarial-network"]], "Writing our own PCA code": [[11, "writing-our-own-pca-code"]], "XGBoost: Extreme Gradient Boosting": [[10, "xgboost-extreme-gradient-boosting"]], "a) Expression for Ridge regression": [[17, "a-expression-for-ridge-regression"]], "scikit-learn implementation": [[1, "scikit-learn-implementation"]]}, "docnames": ["chapter1", "chapter10", "chapter11", "chapter12", "chapter13", "chapter2", "chapter3", "chapter4", "chapter5", "chapter6", "chapter7", "chapter8", "chapter9", "chapteroptimization", "clustering", "exercisesweek34", "exercisesweek35", "exercisesweek36", "intro", "linalg", "schedule", "statistics", "teachers", "textbooks", "week34", "week35"], "envversion": {"sphinx": 62, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1}, "filenames": ["chapter1.ipynb", "chapter10.ipynb", "chapter11.ipynb", "chapter12.ipynb", "chapter13.ipynb", "chapter2.ipynb", "chapter3.ipynb", "chapter4.ipynb", "chapter5.ipynb", "chapter6.ipynb", "chapter7.ipynb", "chapter8.ipynb", "chapter9.ipynb", "chapteroptimization.ipynb", "clustering.ipynb", "exercisesweek34.ipynb", "exercisesweek35.ipynb", "exercisesweek36.ipynb", "intro.md", "linalg.ipynb", "schedule.md", "statistics.ipynb", "teachers.md", "textbooks.md", "week34.ipynb", "week35.ipynb"], "indexentries": {}, "objects": {}, "objnames": {}, "objtypes": {}, "terms": {"": [0, 1, 2, 3, 4, 5, 6, 7, 9, 11, 12, 13, 15, 16, 17, 18, 19, 21, 22, 24, 25], "0": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 21, 22, 24, 25], "00": [0, 1, 5, 11, 24, 25], "000": [1, 3], "00000000e": [], "001": [2, 8, 13], "004": 5, "00727646693": [0, 24], "0086649156": [0, 24], "01": [0, 1, 2, 5, 9, 11, 13, 17, 23, 24, 25], "0110": 21, "01719003e": [], "02": [0, 4, 7, 12, 24], "02334824": [], "02857": 4, "02f": 6, "03077640549": 4, "03097597e": [], "031": 5, "04": 11, "0458": 9, "05": [4, 6], "062292565": 4, "062435": [], "06730814": [], "07": [], "0713": [0, 24], "07285": 3, "08": 21, "08078025e": [], "08336233266": 4, "0917": 9, "0n": [0, 24], "0x113e21950": 17, "1": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 19, 20, 21, 22, 23, 24], "10": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, 17, 19, 20, 21, 22, 24, 25], "100": [0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 13, 14, 15, 16, 17, 19, 21, 22, 24, 25], "1000": [0, 1, 2, 4, 5, 8, 11, 13, 14, 18, 21, 24], "10000": [2, 5, 6, 10, 11, 13, 21], "100000": 8, "10001": 10, "1001": 21, "1002": 21, "1003": 21, "1005": 21, "1009": 21, "101": 16, "1011": 21, "1013": 21, "1013904243": 21, "1015": 21, "102": 16, "1023": 21, "1024": 3, "1026": 21, "1027": 21, "103": 1, "1030": 21, "1037": 21, "1038": 21, "1040": 21, "1047": 21, "107": 16, "108": [], "10th": 9, "10x": [0, 24], "11": [0, 2, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, 19, 21, 23, 24, 25], "110": [], "1100": 21, "1101": 21, "111": [1, 7, 12], "112": 16, "11340253": [], "11590451": [], "116": 16, "117": 16, "118": 16, "12": [0, 1, 2, 3, 4, 5, 6, 8, 9, 11, 12, 19, 21, 23, 24, 25], "120": 3, "121": [8, 9, 10, 16], "1215pm": [22, 24], "122": [8, 9, 10], "124": [0, 24], "125": 16, "127": [4, 16], "128": [3, 4, 13], "129": 16, "1298": 9, "12pm": [22, 24], "13": [0, 2, 9, 12, 19, 21, 24], "131": 16, "133": 7, "135": 16, "136": 16, "14": [0, 2, 4, 6, 8, 9, 10, 12, 19, 21, 23, 25], "141": 16, "143": 16, "1446729567": 4, "149": 16, "14g": 6, "15": [0, 2, 4, 6, 7, 8, 9, 12, 13, 21, 24], "150": [4, 8], "152": 16, "153760": [], "156": 16, "157": [], "158": [], "159": 16, "15g": 6, "15pm": 24, "16": [1, 2, 3, 4, 5, 8, 9, 10, 21, 24], "160": 16, "1603": 3, "161": 16, "162": 16, "16231451": 4, "163": 16, "16384": 3, "164": 16, "167": 16, "17": [1, 2, 8, 21], "172": 16, "173": 16, "176": 16, "178": 16, "179": 16, "1797": 1, "18": [2, 6, 7, 8, 9, 10, 21, 24], "1807": 4, "18392847": [], "19": [2, 21, 24], "1940": [], "1943": 12, "1970": [19, 24], "1973": 9, "1979": 6, "1_1": 12, "1_2": 12, "1_3": 12, "1cm": [0, 8, 10, 21, 24], "1d": [1, 2, 3], "1e": [2, 4, 13, 14], "1e10": 14, "1e4": 6, "1f": 1, "1k": 19, "1n": [0, 24], "1x": [0, 24], "2": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 18, 19, 21, 23], "20": [0, 1, 2, 6, 7, 8, 16, 17, 21, 22, 24, 25], "200": [0, 2, 3, 4, 8, 9, 10], "2000": [0, 25], "2004": 13, "2006": 23, "20072279": [], "2008": 24, "2010": 1, "2011": 1, "2014": 4, "2015": 1, "2016": [0, 24], "2018": [0, 6, 25], "2021": [6, 14], "2022": 24, "2025": [24, 25], "21": [0, 1, 5, 7, 9, 12, 19, 24, 25], "2116753732": 4, "215pm": [22, 24], "2167072": [], "22": [0, 1, 5, 12, 13, 19, 24, 25], "221": 8, "225": 4, "22948497": [], "23": [1, 12, 19], "24": [0, 1, 19, 24], "25": [2, 3, 4, 5, 6, 8, 9, 11, 25], "250": [2, 4, 7, 9], "25000": [], "250154": [], "253775": [], "255": 3, "256": 4, "26": [], "26303845": [], "264": [], "265": [], "265109911": 4, "266": [], "269": [], "27": 1, "270": [], "27n_": 21, "28": [1, 3, 4], "2830637392": 4, "2861": 21, "2873": 9, "2882": 21, "2886": 21, "2890": [0, 24], "2892": 21, "29": 25, "2915": 21, "2931": 24, "29364655": [], "294399745619595": [], "296247": [], "2968": 24, "2980": 24, "298273": [], "298375": [], "2990": 24, "2_": 12, "2_1": 12, "2_2": 12, "2_3": 12, "2_i": 12, "2_m": [6, 21], "2_t": 13, "2_x": 21, "2a": 17, "2b": 21, "2cm": 8, "2d": [1, 3, 11, 12, 18, 24], "2e": 6, "2f": [0, 7, 9, 10, 11, 12, 24], "2g": 2, "2g_i": 2, "2k": 3, "2m": 6, "2n": [0, 2, 3, 24, 25], "2nd": 9, "2p": 21, "2pt": 4, "2x": [0, 3, 8, 13, 24], "2x_ix_jy_iy_j": 8, "2x_j": 8, "2y_i": 10, "2y_j": 8, "3": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 18, 19, 20, 21, 22, 24], "30": [0, 1, 4, 6, 7, 10, 13, 22], "30000": [0, 24], "3072": 3, "31": [12, 19, 21], "315": 6, "3155": [0, 5, 6, 25], "32": [3, 4, 6, 12, 13, 19, 21], "3200": 1, "3250": 1, "3297": [], "33": [12, 19, 22], "3303": [], "3310": [], "332331": [], "333": 7, "3331": [], "3337": [], "34": 19, "3436": [0, 24], "3437": [0, 24], "35": [0, 6, 24], "3581341341": 4, "359": 5, "36": [0, 5, 6, 21], "370782966": 4, "38": 21, "39": [0, 22, 24], "3d": [2, 3, 4, 6, 13, 16], "3f": [1, 3, 9], "3n": 19, "3x": [2, 8], "3x_i": 2, "3y": 8, "4": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 19, 21, 24], "40": [1, 6, 22, 24], "400": 4, "4000": 24, "4050": [23, 24], "41": 19, "4155": [2, 15], "41589548": [], "42": [1, 4, 8, 9, 10, 19], "43": [0, 7, 19], "4310": 24, "436462435": 4, "44": [0, 19], "45": [22, 24], "46": [22, 24], "462": 7, "47": [22, 24], "479465113": 4, "47958494": [], "48": [], "48257387": [22, 24], "49": [5, 6, 11], "49152": 3, "4940954": [0, 24], "4990": 21, "4992": 21, "4997": 21, "4c4c7f": [9, 10], "4d": 3, "4f": 6, "4pm": [22, 24], "4y": 8, "4y_i": 10, "5": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 19, 21, 24, 25], "50": [1, 2, 3, 4, 6, 7, 8, 10, 13, 24, 25], "500": [1, 3, 4, 6, 9, 10, 13], "5018": 21, "506": [], "507d50": [9, 10], "50j": 13, "50x10": 1, "51": 10, "510": 1, "512132": [], "5177783846": 4, "53": 9, "54": [6, 21], "5411205": [], "54894451": [], "55": 1, "56": 1, "56536": [0, 24], "569": 1, "57": [0, 8, 22, 24], "571": 5, "58": [10, 22, 24], "591317992": 4, "5cm": 21, "5f": 8, "5x": 8, "5y": 8, "6": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 19, 21, 22, 24, 25], "60": [1, 3], "60000": 4, "6019067271": 4, "606439": [], "625": 7, "63": 1, "64": [1, 3, 4, 13, 19, 24], "64x50": 1, "65": [1, 8, 9], "6887363571": 4, "69": [16, 21], "69069n_": 21, "691": [], "6n_": 21, "7": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 19, 21, 23, 24], "70": [1, 7], "70653767": 4, "71": 1, "724": 3, "73": [], "7304881": [], "75": [5, 6, 8, 11], "76": [22, 24], "765": 7, "77": [22, 24], "7718": 9, "7782028952": 4, "77893972": [], "78": [], "7d7d58": [9, 10], "8": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 19, 21, 22, 24], "80": [0, 1, 5, 8, 17, 25], "800": [4, 7], "81": 1, "815am": [22, 24], "85": 1, "8702784034": 4, "88": 24, "8f": 6, "8g": 6, "8n": 19, "8x8": 1, "9": [0, 1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 19, 21, 24], "90": 1, "9040": 9, "91": [22, 24], "92": [22, 24], "93": 16, "931": [0, 24], "933": 5, "937": 21, "938": 21, "939": [0, 21, 24], "94": 21, "95": [1, 11], "954": 21, "955820c21e8b": 4, "96": 6, "960": 21, "961": 21, "962": 21, "9649652536": 4, "96611194e": [], "9780387310732": 23, "9780387848570": 23, "9781098134174": 24, "9781492032632": 23, "9781801819312": 24, "98": [0, 1, 16], "985": 21, "986": 21, "989": 21, "9898ff": [9, 10], "99": [13, 16], "991": 21, "992": 21, "993": 21, "996": 5, "999": [9, 21], "9x": 6, "9y": 6, "A": [2, 3, 5, 6, 7, 10, 11, 12, 13, 15, 16, 18, 19, 20, 21, 22, 23, 25], "AND": 2, "And": [0, 3, 4, 5, 6, 9, 13, 18, 21], "As": [0, 1, 2, 3, 4, 5, 6, 8, 10, 12, 13, 15, 16, 19, 21, 24, 25], "At": [0, 4, 6, 13, 24], "BE": [0, 24], "Be": [2, 18, 24], "Being": 13, "But": [0, 1, 2, 3, 5, 6, 9, 10, 16, 21, 25], "By": [0, 3, 5, 6, 12, 13, 17, 19, 24, 25], "For": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 18, 19, 21, 23, 24, 25], "IF": 6, "IN": 23, "If": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 18, 19, 21, 24, 25], "In": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 21, 23, 24, 25], "Ising": [5, 12, 25], "It": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 18, 19, 21, 24, 25], "Its": [1, 2, 4, 11], "No": [6, 9, 24], "Not": [0, 1, 5, 6, 25], "OR": 21, "Of": 21, "On": [0, 3, 21, 22, 23, 24], "One": [0, 1, 3, 4, 5, 6, 7, 8, 11, 12, 13, 17, 21, 25], "Or": [0, 1, 6, 24], "Such": [0, 6, 12, 16, 21], "That": [0, 5, 7, 10, 11, 12, 14, 21, 24], "The": [4, 10, 13, 14, 16, 17, 19, 20, 21, 22, 23], "Then": [0, 1, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 19, 24], "There": [0, 3, 4, 5, 6, 8, 9, 11, 12, 14, 15, 19, 21, 22, 24, 25], "These": [0, 3, 4, 5, 8, 9, 10, 11, 12, 13, 14, 17, 19, 21, 22, 24, 25], "To": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 19, 21, 25], "With": [0, 5, 6, 8, 9, 10, 11, 12, 14, 16, 19, 21, 24, 25], "_": [0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, 17, 19, 24, 25], "_0": [5, 8, 10, 11, 13, 25], "_1": [2, 5, 6, 8, 10, 11, 12, 13, 14, 19, 25], "_2": [2, 5, 8, 11, 12, 13, 19, 25], "_3": 19, "_4": 19, "_9": 13, "__class__": 10, "__doc__": 6, "__future__": [8, 9], "__init__": 1, "__main__": 2, "__name__": [2, 10], "_auto1": [2, 3, 4, 5, 6, 7, 12, 13, 19, 21, 25], "_auto10": [6, 12], "_auto11": 6, "_auto12": 6, "_auto2": [2, 3, 4, 5, 6, 12, 13, 19, 21], "_auto3": [3, 4, 5, 6, 12, 13, 19], "_auto4": [4, 6, 12, 13, 19], "_auto5": [4, 6, 12, 13, 19], "_auto6": [4, 6, 12, 19], "_auto7": [4, 6, 12, 19], "_auto8": [6, 12], "_auto9": [6, 12], "_build": [0, 18, 23, 24], "_c": 1, "_compon": 11, "_depth": 9, "_export": [15, 16], "_fraction": 9, "_i": [0, 1, 2, 5, 6, 7, 8, 11, 12, 13, 24, 25], "_j": [0, 1, 2, 3, 5, 6, 8, 13, 25], "_k": 13, "_l": 12, "_lambda": 6, "_leaf": 9, "_m": 10, "_multilayer_perceptron": [], "_n": [2, 5, 8, 11, 13, 25], "_node": 9, "_p": [5, 8, 25], "_ratio": 11, "_sampl": 9, "_split": [6, 9], "_t": 13, "_test": 6, "_varianc": 11, "_weight": 9, "a0": 3, "a0faa0": [9, 10], "a1": [0, 24], "a2": [0, 24], "a3": [0, 24], "a4": [0, 24], "a_": [0, 1, 16, 19, 24, 25], "a_0": [0, 24], "a_1a": [0, 24], "a_2a": [0, 24], "a_3": [0, 24], "a_3a": [0, 24], "a_4": [0, 24], "a_4a": [0, 24], "a_h": 1, "a_i": [0, 1, 2, 12, 24], "a_j": [1, 12], "a_k": [0, 1, 12], "aaron": 23, "ab": [0, 2, 5, 13, 14, 24, 25], "ab_channel": 18, "abandon": 1, "abid": 21, "abil": [0, 10], "abl": [0, 1, 4, 5, 6, 7, 10, 12, 13, 16, 25], "about": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 18, 19, 22], "abov": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 21, 23, 24, 25], "abovement": [6, 24], "abscissa": 13, "absolut": [0, 2, 5, 6, 13, 24, 25], "absorb": 25, "abstract": 1, "acceler": 13, "accept": [0, 3, 6, 9, 25], "access": [3, 11, 21, 24], "accid": [4, 6], "accompani": [0, 24, 25], "accomplish": [8, 9, 13], "accord": [0, 1, 2, 5, 6, 9, 12, 13, 14, 21, 24], "accordingli": 11, "account": [0, 3, 5, 13, 15, 16, 21, 24], "accumul": [12, 13, 21], "accur": [0, 3, 4, 6, 10, 13], "accuraci": [0, 1, 3, 4, 5, 6, 7, 9, 10, 11, 12, 24, 25], "accuracy_scor": [0, 1, 10, 24], "accuracy_score_numpi": 1, "achiev": [0, 1, 5, 6, 8, 12, 19, 24], "aco": 21, "acquaint": 18, "acquir": [1, 18, 24], "acr": [], "across": [1, 3, 6, 9, 17, 18, 24], "act": [1, 3, 19], "action": 21, "activ": [0, 2, 3, 4, 9, 15, 20, 22, 24], "actual": [0, 1, 4, 5, 6, 8, 11, 15, 16, 19, 21, 24, 25], "ad": [1, 3, 4, 5, 8, 13, 15, 16, 19], "ada_clf": 10, "adaboostclassifi": 10, "adadelta": 13, "adam": [1, 3, 4, 24], "adapt": [4, 6, 13, 17, 23], "add": [0, 1, 2, 3, 4, 5, 6, 8, 10, 11, 12, 15, 16, 17, 21, 22, 24, 25], "add_subplot": [1, 7, 12, 14], "addendum": 5, "addit": [0, 2, 3, 5, 6, 7, 8, 9, 10, 12, 13, 15, 18, 19, 21, 22, 23, 24, 25], "addition": [12, 13], "address": [1, 9, 11, 13, 24], "adjac": [3, 12], "adjoint": [5, 25], "adjust": [0, 5, 12, 13], "admir": [0, 24], "advanc": [4, 6, 12, 23, 24], "advantag": [1, 3, 5, 6, 10, 13, 19], "adversari": 24, "afecionado": 24, "affect": [3, 15], "affin": [0, 3, 8, 11, 25], "afford": 3, "aficionado": 24, "aforement": 14, "african": [], "after": [0, 1, 2, 4, 5, 6, 9, 11, 12, 13, 15, 16, 17, 18, 19, 21, 24, 25], "afterward": [0, 24], "ag": [0, 7, 24, 25], "ag_0": 2, "again": [0, 1, 4, 5, 6, 7, 8, 10, 11, 12, 13, 21, 24, 25], "against": [1, 4, 7, 10], "agegroup": 7, "agegroupmean": 7, "aggreg": [9, 10], "agorithm": 10, "agre": [5, 6, 21, 25], "agreement": 13, "ahead": 9, "ai": [0, 23], "aid": 11, "aim": [0, 1, 4, 6, 7, 11, 14, 16, 17, 18, 19, 25], "ainv": 5, "airplan": 3, "aka": 5, "al": [0, 2, 4, 16, 17, 23, 24, 25], "alarm": [5, 7], "aldo": 25, "algebra": [0, 3, 5, 13, 18, 25], "algorithm": [0, 1, 2, 4, 5, 6, 7, 8, 13, 14, 16, 18, 19, 21, 23], "align": [0, 2, 5, 6, 7, 8, 13, 21, 24, 25], "all": [0, 1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 18, 19, 20, 21, 22, 23, 24, 25], "allevi": [1, 13], "alloc": [3, 19], "allow": [0, 1, 2, 3, 5, 6, 8, 10, 13, 15, 18, 19, 24, 25], "almost": [0, 1, 6, 8, 11, 13, 21], "alon": [2, 9], "along": [2, 3, 4, 5, 6, 9, 10, 11, 15, 18, 19, 24, 25], "alpha": [0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 13, 14, 21, 24, 25], "alpha_": 10, "alpha_0": 3, "alpha_1": 3, "alpha_2": 3, "alpha_i": [3, 13], "alpha_k": 13, "alpha_m": 10, "alpha_n": 3, "alpha_opt": 13, "alreadi": [2, 3, 4, 5, 6, 10, 12, 15, 18, 19, 21, 24, 25], "also": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 21, 24, 25], "alter": 1, "altern": [0, 1, 4, 5, 6, 8, 9, 11, 13, 15, 19, 24, 25], "although": [0, 1, 5, 6, 8, 10, 13, 16, 24], "alwai": [0, 3, 5, 6, 12, 13, 16, 21, 24, 25], "am": 4, "ame2016": [0, 24], "american": [], "among": [0, 3, 5, 9, 10, 12, 19, 24, 25], "amongst": 5, "amount": [0, 1, 3, 4, 6, 8, 10, 14, 18], "an": [1, 2, 3, 5, 6, 7, 8, 9, 11, 12, 13, 14, 16, 17, 18, 19, 21, 22, 23, 25], "an_": 21, "anaconda": [0, 1, 18, 24], "analogi": 13, "analys": 6, "analysi": [1, 3, 4, 7, 14, 19, 23], "analyt": [2, 3, 5, 6, 7, 12, 13, 17, 18, 24, 25], "analyz": [0, 1, 3, 4, 5, 6, 16, 21, 25], "andrew": 1, "angl": [0, 3, 9, 25], "anharmon": 3, "ani": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 21, 24, 25], "anim": [4, 12], "ann": 12, "annot": [0, 1, 3, 7, 8, 24], "announc": 24, "anoth": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 15, 19, 21, 24, 25], "ansatz": [0, 24], "answer": [0, 1, 3, 5, 6, 19, 22, 24], "antialias": [2, 6], "anticip": 4, "anymor": [1, 8], "anyon": [4, 8, 15], "anyth": [1, 15, 16, 21], "anytim": [22, 24], "apach": 1, "apart": [11, 13], "api": [1, 18, 24], "appar": 2, "appear": [0, 1, 3, 13, 19, 21], "append": [1, 3, 4, 8, 9, 13, 24], "appli": [0, 1, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 21, 23, 24, 25], "applic": [0, 1, 3, 4, 5, 6, 7, 9, 12, 13, 16, 19, 21, 23, 24, 25], "apply_gradi": 4, "approach": [1, 2, 4, 5, 6, 9, 10, 11, 12, 13, 15, 16, 18, 21, 23, 25], "appropri": [2, 6, 9, 12, 13, 17, 18, 21], "approv": 24, "approx": [0, 2, 3, 6, 10, 11, 13, 21, 24], "approxim": [0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 13, 21, 24, 25], "apt": [0, 18, 24], "aq": 21, "ar": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25], "aragorn": 24, "arang": [1, 3, 4, 6, 7, 9, 10, 12, 13, 24], "arbitrari": [1, 4, 6, 8, 12, 13, 21], "arbitrarili": [0, 1, 11, 24], "arc": 6, "architectur": [3, 4, 12], "area": [0, 3, 6, 23, 24], "argmax": [1, 11], "argmin": [4, 10, 14], "argsort": 11, "argu": [1, 13], "argument": [0, 2, 3, 5, 11, 12, 13, 17, 24, 25], "aris": [0, 6, 12, 13, 21, 24], "arithmet": [0, 13, 19, 24], "arm": 6, "armadillo": 19, "around": [0, 1, 4, 5, 6, 11, 21, 24], "arrai": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14, 16, 18, 21, 25], "arrang": [3, 24], "arraybox": 13, "arriv": [0, 6, 9, 11, 19, 21, 24], "arrow": 12, "arrowprop": 8, "art": [0, 1, 18], "articl": [0, 3, 4, 6, 10, 24, 25], "artifici": [0, 2, 7, 12, 23, 24], "artificialneuron": 12, "arug": 13, "arxiv": [3, 4], "asarrai": [0, 6, 9], "asid": 25, "ask": [5, 6, 11, 12, 15], "aspect": [0, 6, 18, 24], "assembl": 3, "assembli": [0, 24], "assert": 4, "assess": [0, 6, 24], "assici": 4, "assign": [0, 7, 8, 9, 12, 13, 14, 15, 20, 22, 23, 24], "associ": [0, 6, 9, 12, 14, 21, 24], "assum": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 17, 19, 21, 24, 25], "assumpt": [0, 3, 5, 6, 9, 11, 21, 24], "ast": [0, 5, 6, 24], "astyp": [4, 9, 10], "asymmetri": [0, 24], "asymptot": [4, 6], "atom": [0, 24], "attempt": [0, 4, 6, 7, 8, 10, 24], "attend": 24, "attent": [0, 19, 24], "attract": [0, 10, 24], "attribut": [0, 9, 24], "audi": [0, 24], "audio": [3, 4], "august": [24, 25], "aurelien": [0, 23, 24], "austfjel": 6, "auth": 15, "authent": 15, "author": [0, 1, 10, 21], "authour": 24, "auto": [9, 10, 21], "autocor": 21, "autocorrelation_tim": 21, "autocorrelform": 21, "autocovari": 21, "autoencod": [4, 18, 24], "autoencond": 18, "autograd": [18, 24], "autom": [0, 18, 23, 24], "automac": 19, "automag": 24, "automat": [0, 1, 2, 3, 4, 11, 16, 18, 19, 24], "automobil": 3, "autonom": 4, "avail": [0, 1, 4, 6, 10, 11, 18, 19, 20, 22, 23, 24], "averag": [0, 1, 3, 6, 9, 10, 13, 14, 21, 22, 24], "avoid": [0, 4, 5, 6, 9, 11, 13, 19, 25], "awai": [2, 3, 6, 25], "awar": [2, 10], "award": [22, 24], "ax": [0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 19, 24], "axes3d": [2, 6, 13], "axes_grid1": 6, "axhlin": 8, "axi": [0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 19, 21, 24], "axiom": 5, "axvlin": [4, 8], "axvspan": 4, "b": [0, 1, 3, 4, 5, 6, 8, 9, 10, 12, 13, 14, 15, 16, 17, 21, 22, 24, 25], "b1": 8, "b2": 8, "b3": 8, "b_": [0, 1, 19], "b_0": 0, "b_1": [0, 2, 12, 13], "b_2": [0, 13], "b_5": 13, "b_group": 9, "b_i": [0, 1, 2, 12, 24], "b_ia_": [0, 24], "b_ia_i": 0, "b_index": 9, "b_j": [1, 12], "b_k": [0, 1, 12, 13], "b_m": 12, "b_score": 9, "b_valu": 9, "babcock": 24, "bachelor": [20, 22], "back": [0, 3, 4, 5, 6, 8, 9, 10, 15, 16, 19, 21, 24], "backbon": 19, "backend": [1, 4], "background": [23, 24], "backpropag": 1, "backtrack": 9, "backup": 19, "backward": [1, 2, 4, 12, 19], "bad": [6, 17], "badli": 21, "bag": [9, 18, 24], "bag_clf": 10, "baggin": 24, "baggingboot": 10, "baggingclassifi": 10, "baggingtre": 10, "balanc": 6, "band": 19, "bandwidth": 19, "bar": [0, 6, 11, 24], "barber": 23, "bare": [4, 10], "base": [0, 1, 3, 4, 5, 7, 8, 9, 10, 14, 15, 16, 17, 18, 21, 22, 23, 24, 25], "basi": [5, 7, 8, 10, 11, 12, 13, 19, 25], "basic": [6, 8, 12, 13, 14, 15, 18, 21, 24], "batch": [3, 4, 11, 12, 13], "batch_shap": 4, "batch_siz": [1, 3, 4], "batchnorm": 4, "bay": 7, "bayesian": [5, 18, 23, 24], "becaus": [0, 1, 2, 3, 4, 5, 6, 8, 9, 12, 13, 14, 24], "becom": [0, 1, 2, 5, 6, 7, 9, 12, 13, 21, 24, 25], "been": [0, 1, 2, 3, 4, 5, 6, 11, 12, 13, 18, 19, 24], "befor": [0, 1, 2, 3, 4, 5, 6, 7, 8, 12, 13, 14, 16, 17, 19, 21, 24, 25], "beforehand": [0, 21, 24], "begin": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 19, 21, 22, 24, 25], "behav": [1, 6, 13], "behavior": [0, 1, 13, 24], "behaviour": 12, "behind": [0, 1, 6, 8, 13, 24], "being": [0, 1, 2, 3, 4, 5, 7, 8, 10, 11, 12, 13, 17, 21, 24, 25], "believ": [9, 19], "belong": [7, 8, 9, 13, 14], "below": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 19, 21, 24, 25], "benchmark": 10, "benefici": [1, 13], "benefit": [0, 1, 4, 11, 13, 18, 24], "bengio": [1, 23, 24, 25], "benign": [1, 7], "besid": [4, 5], "bessel": [5, 25], "best": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 15, 16, 22, 24, 25], "beta": [1, 3, 10, 11, 13, 16, 17, 24], "beta_": [3, 13, 17], "beta_0": [1, 3, 13], "beta_1": [1, 3, 10, 13], "beta_1x_i": 13, "beta_2": [3, 13], "beta_3": 3, "beta_i": 3, "beta_j": 13, "beta_k": 13, "beta_linreg": 13, "beta_m": 10, "beta_mg_m": 10, "beta_n": 3, "better": [0, 1, 2, 3, 4, 6, 9, 10, 11, 12, 13, 24, 25], "between": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 21, 24, 25], "beyond": [0, 1, 5, 6, 8, 13, 24, 25], "bf": [13, 14, 19, 21], "bg": 24, "bgd": 13, "bia": [0, 1, 2, 3, 5, 8, 9, 10, 12, 13, 24, 25], "bias": [1, 2, 3, 5, 6, 9, 12], "big": [0, 1, 2, 5, 6, 14], "bigger": [1, 6], "bigr": 12, "bike": 9, "bilbo": 24, "billion": [3, 12, 18], "bin": [7, 21], "binari": [0, 3, 5, 7, 9, 10, 12, 24], "binarycrossentropi": 4, "bind": 0, "binomi": [18, 21, 24], "binsboot": 6, "bioinformat": 0, "biolog": [1, 12], "bios1100": [18, 24], "bird": [0, 3], "birth": 24, "bishop": [23, 24], "bit": [1, 4, 19, 21, 24], "bitwis": 21, "bivari": 2, "bk": 13, "bla": [19, 24], "black": [8, 9, 14], "block": [6, 10, 18, 19, 21, 24], "blog": 24, "blogpost": 4, "blue": [0, 3], "bmatrix": [0, 1, 3, 5, 7, 8, 11, 13, 19, 24, 25], "bmi": 1, "bodi": [0, 1, 4, 12], "bold": 1, "boldfac": [0, 5, 16, 25], "boldsymbol": [0, 1, 2, 3, 5, 6, 7, 8, 10, 11, 13, 14, 16, 17, 24], "boltzmann": [12, 18, 24], "book": [17, 23, 24, 25], "book1": 23, "boolean": [4, 17], "boost": [1, 9, 18, 24], "boostrap": 10, "bootstrap": [1, 13, 18, 24], "borrow": 24, "boston_dataset": [], "bot": 8, "both": [0, 1, 4, 5, 6, 8, 9, 10, 13, 14, 15, 16, 17, 18, 19, 21, 22, 24, 25], "bottl": 7, "bound": [8, 12], "boundari": [2, 4, 8, 11, 12], "box": [4, 9], "boyd": [8, 13], "bracket": [4, 21], "brain": [1, 7, 12], "branch": [9, 24], "break": [0, 4, 6, 11, 14, 24], "breast": [5, 7, 11], "breviti": 13, "brew": [0, 18, 24], "brg": 8, "brief": 25, "briefli": [0, 16, 24], "bring": [0, 5, 6, 10], "britt": [22, 24], "broad": 0, "broadli": 24, "brought": [13, 18, 24], "brownle": 4, "browser": [15, 24], "brute": [3, 5, 11, 25], "buffer_s": 4, "bui": 4, "build": [0, 4, 5, 6, 10, 16, 19, 21, 24], "built": [1, 3, 4, 6], "bunch": 11, "busi": [], "byte": [19, 24], "c": [0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 25], "c1": [8, 11], "c2": [8, 11], "c_": [8, 9, 10, 13, 21], "c_0": 21, "c_1": 12, "c_2": 12, "c_3": 12, "c_4": 12, "c_i": [12, 13], "c_k": 21, "ca": [1, 24], "cach": 10, "cal": [0, 8, 10, 12, 13], "calcul": [0, 1, 2, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 16, 19, 21, 24], "call": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 19, 21, 22, 24, 25], "calor": [0, 25], "cambridg": [13, 23], "can": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 23, 25], "cancel": [0, 13, 24, 25], "cancer": [5, 10], "cancerpd": 7, "candid": [8, 9, 10], "cannot": [0, 1, 4, 5, 6, 7, 8, 9, 21, 25], "canopi": [0, 18, 24], "canva": [15, 16, 24], "cap": 5, "capabl": [0, 1, 8, 13, 18, 24], "capac": [2, 22], "capita": [], "captur": [4, 11, 12, 24], "car": [3, 4], "card": [0, 7, 24], "cardin": 1, "care": [11, 15], "carefulli": 13, "carlo": [0, 6, 18, 21, 23, 24], "carri": [2, 6, 7], "cart": 10, "case": [0, 1, 2, 3, 4, 5, 6, 7, 11, 12, 13, 14, 15, 16, 18, 19, 24], "casella": 23, "cast": 1, "cat": [3, 4], "catch": 0, "categor": [0, 1, 3, 9, 11, 24], "categori": [0, 1, 3, 7, 10, 12, 14, 24], "categorical_crossentropi": [1, 3], "caus": [0, 5, 6, 21, 24, 25], "causal": 0, "causat": [0, 24], "cax": 1, "cb": [6, 24], "cbar": 1, "cc": [0, 1, 5, 13, 24, 25], "ccc": [5, 12], "cdf": 21, "cdot": [0, 2, 6, 12, 13, 14, 19, 21, 24], "celebr": 13, "cell": 4, "center": [0, 1, 6, 7, 8, 9, 11, 14, 21, 24], "central": [0, 3, 5, 6, 8, 16, 19, 24, 25], "centroid": [14, 21], "centroid_differ": 14, "centuri": 3, "certain": [0, 3, 6, 7, 9, 21, 24, 25], "cg": 13, "cha": [], "chain": [0, 1, 13, 18, 21, 24], "challeng": 15, "chanc": [1, 5, 13, 21], "chang": [0, 1, 2, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15, 16, 19, 21, 24, 25], "channel": 3, "chapter": [0, 6, 10, 11, 16, 17, 19, 23, 24, 25], "chapter3": 0, "charact": [0, 3, 5, 24, 25], "character": [8, 9, 10, 12, 21], "characterist": [0, 1, 3, 10, 13, 24], "charg": [0, 24], "charl": [], "chase": 4, "chatgpt": 15, "chd": 7, "chddata": 7, "cheap": [5, 25], "cheaper": [1, 13], "check": [1, 3, 4, 5, 11, 13, 15, 16, 19, 24], "checkmark": 3, "checkpoint": 4, "checkpoint_dir": 4, "checkpoint_prefix": 4, "chen": 10, "cheng": 25, "chiaramont": 2, "childcar": 16, "children": 16, "choic": [0, 1, 2, 3, 4, 6, 9, 12, 13, 14, 19, 24, 25], "choleski": [5, 19, 25], "choos": [2, 3, 6, 9, 10, 11, 13, 14, 15], "chosen": [0, 1, 2, 6, 8, 9, 10, 13, 16, 21, 24], "chosen_datapoint": 1, "christian": 23, "christoph": [23, 24], "cifar": 3, "cifar10": 3, "circ": [1, 12], "circl": [0, 8, 12, 25], "circuit": 3, "circumfer": 9, "circumv": [1, 5, 13, 25], "ckpt": 4, "clariti": 21, "class": [0, 1, 3, 4, 6, 7, 8, 9, 11, 12, 13, 21, 24], "class_nam": [3, 9], "class_val": 9, "class_valu": 9, "classic": [7, 9, 13], "classif": [0, 3, 5, 6, 7, 8, 11, 12, 18, 23, 24, 25], "classifi": [0, 1, 4, 7, 9, 10, 11, 24], "classificaton": 1, "classifii": 10, "clean": 1, "clear": [1, 5, 10, 12, 13], "clearli": [0, 3, 5, 6, 7, 8, 21], "clever": [1, 10], "clf": [0, 6, 8, 9, 10, 24, 25], "clf3": 0, "clf_lasso": 6, "clf_ridg": 6, "cli": 15, "clip": [3, 21], "clone": [15, 22], "close": [0, 1, 2, 4, 6, 8, 9, 11, 12, 13, 14, 21, 23, 24], "closer": [3, 5, 13, 25], "closest": [8, 11, 13, 14], "closur": [18, 24], "cloud": [18, 24], "cluster": [0, 1, 4, 6, 11, 18, 24], "cluster_label": 14, "cm": [1, 2, 3, 6, 8, 13], "cmap": [0, 1, 2, 3, 4, 6, 8, 9, 10, 24], "cmap_arg": 6, "cmd": [9, 15], "cn_": 21, "cnn": 12, "cnn_kera": 3, "cntk": [18, 24], "co": [0, 2, 3, 6, 9, 13, 24], "code": [0, 3, 4, 6, 7, 8, 18, 19, 21, 23], "coef": [0, 24], "coef0": 8, "coef_": [0, 5, 6, 8, 9, 13, 16, 24, 25], "coeff": 5, "coeffici": [0, 3, 5, 6, 7, 8, 9, 13, 19, 24], "coerc": [0, 6, 24], "coin": [10, 21], "coin_toss": 10, "col": [0, 11, 24, 25], "colab": [18, 24], "cold": 9, "colinear": [], "collaps": 8, "collect": [2, 6, 10, 11, 17, 18, 21, 23, 24], "collinear": [5, 25], "color": [0, 3, 4, 6, 8, 9, 10, 21], "color_channel": 3, "color_cod": 6, "colorbar": [1, 6], "colsample_bytre": 10, "colsaobject": 10, "column": [0, 1, 2, 5, 6, 7, 8, 9, 11, 12, 16, 17, 19, 24, 25], "columntransform": 9, "com": [4, 6, 15, 16, 18, 23, 24], "combin": [1, 2, 5, 6, 7, 10, 15, 21], "come": [0, 1, 3, 4, 5, 12, 13, 14, 15, 24, 25], "command": [0, 1, 15], "comment": [0, 4, 5, 6], "commerci": [0, 18, 24], "commit": 15, "commod": [0, 24], "common": [0, 1, 3, 5, 6, 7, 9, 11, 13, 14, 16, 21, 24, 25], "commonli": [0, 1, 4, 6, 7, 9, 13, 14, 25], "commun": [0, 12, 15], "commut": 3, "commutatitav": 3, "compact": [0, 1, 3, 5, 6, 7, 9, 11, 12, 13, 14, 24, 25], "compair": 0, "compar": [0, 3, 4, 5, 6, 11, 13, 19, 24, 25], "comparison": [2, 4, 13], "compat": 7, "compet": 0, "competit": 10, "compil": [0, 1, 3, 4, 13, 18, 19, 24], "complet": [0, 2, 3, 4, 9, 12, 15, 16, 17, 24], "completenn": 12, "complex": [1, 5, 8, 9, 11, 12, 13, 16, 24], "complic": [0, 1, 9, 13, 24], "compoment": 25, "compon": [0, 1, 3, 4, 5, 6, 7, 9, 14, 16, 18, 24, 25], "components_": 11, "compos": [9, 12, 13, 14, 18, 24], "compphys": [0, 6, 16, 18, 20, 22, 23, 24], "compress": [0, 24, 25], "compris": 6, "compromis": [5, 25], "compulsori": [18, 24], "comput": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 23, 24, 25], "computation": [0, 3, 6, 9, 13, 21, 24], "computationalscienceuio": 24, "concaten": [2, 4, 6, 14], "concav": [1, 13, 25], "concentr": 10, "concept": [0, 2, 18, 24, 25], "conceptu": [12, 13], "concern": [0, 1, 4, 7, 24], "concic": 24, "conclud": [0, 5, 13], "conclus": 1, "cond": 2, "conda": [0, 1, 18, 24], "condis": 25, "condit": [0, 2, 4, 5, 6, 8, 9, 11, 13, 21, 24, 25], "conduct": 18, "condwav": 2, "confid": [0, 5, 6, 7, 8, 24, 25], "configur": 3, "confirm": [5, 12], "confus": [5, 6, 7, 10, 19], "confusion_matrix": 9, "congruenti": 21, "conjug": [4, 8], "conjugaci": 13, "conjunct": 3, "connect": [0, 1, 3, 4, 9, 11, 12, 13, 19, 24, 25], "consequ": [5, 6, 8, 10, 12, 13, 25], "conserv": [5, 14, 25], "consid": [0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 12, 13, 16, 19, 21, 24, 25], "consider": [0, 1, 5, 13, 24, 25], "consist": [1, 2, 3, 4, 6, 12, 13, 21, 25], "constant": [0, 2, 4, 5, 6, 8, 12, 13, 16, 21, 24, 25], "constitu": [0, 24], "constitut": [2, 6], "constrain": [1, 3, 5, 7, 11], "constraint": [5, 6, 8, 13, 25], "construct": [0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 19, 21, 24, 25], "contact": [0, 24], "contain": [0, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 15, 19, 21, 23, 24, 25], "contemporari": 24, "content": [1, 15, 18, 19, 24], "context": [6, 10, 13], "contigu": 19, "continu": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 19, 21, 24, 25], "contour": [9, 10, 13], "contourf": [8, 9, 10], "contrast": [1, 4, 9, 10, 12, 24], "contribut": [0, 3, 5, 13, 21, 24, 25], "contributor": 0, "control": [0, 1, 3, 9, 13, 15, 18, 24], "conv": [3, 4], "conv2d": [3, 4], "conv2dtranspos": 4, "convei": 24, "conveni": [5, 6, 12, 13, 19, 24], "convent": [12, 25], "converg": [1, 2, 4, 5, 8, 13, 14, 25], "convergencewarn": [], "convert": [0, 1, 4, 5, 9, 11, 13, 19, 24, 25], "converttomatrix": 4, "convex": [4, 5, 7, 25], "convinc": 13, "convolut": [1, 4, 18, 24], "cool": [4, 9], "coolwarm": 6, "coordin": [5, 12, 14, 25], "coorel": [], "copi": [0, 1, 14, 15, 25], "core": 10, "corel": 24, "coronari": 7, "corr": [5, 7, 11, 25], "correalt": [11, 18], "correct": [0, 1, 2, 3, 4, 5, 7, 13, 15, 19, 21, 24, 25], "correctli": [1, 2, 6, 7, 10], "correl": [0, 1, 3, 5, 6, 7, 10, 12, 13, 18, 21, 24], "correlation_matrix": [5, 7, 11, 25], "correspond": [0, 3, 5, 6, 8, 9, 11, 12, 18, 19, 21, 24, 25], "cortex": 12, "cosin": [3, 6], "cost": [0, 2, 3, 5, 6, 7, 8, 9, 12, 13, 16, 17, 24], "cost_deep_grad": 2, "cost_funct": 2, "cost_function_deep": 2, "cost_function_deep_grad": 2, "cost_function_grad": 2, "cost_grad": 2, "cost_sum": 2, "costol": 13, "could": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 19, 21, 24, 25], "coulomb": [0, 24], "count": [0, 9, 15, 20, 21, 22, 24], "counterpart": 24, "countor": 13, "coupl": [4, 5, 6], "cours": [0, 1, 3, 5, 11, 15, 16, 17, 22, 25], "coursework": 15, "courvil": [23, 24, 25], "cov": [5, 6, 11, 19, 21, 24, 25], "cov_xi": [5, 11, 25], "cov_xx": [5, 11, 25], "cov_yi": [5, 11, 25], "covari": [0, 7, 18, 19, 24], "covariance_matrix": [5, 11, 14], "cover": [0, 5, 18, 22, 23, 25], "covert": [0, 24], "covxi": 21, "covxx": 21, "covxz": 21, "covyi": 21, "covyz": 21, "covzz": 21, "cpu": 1, "craft": 3, "creat": [1, 3, 4, 5, 9, 10, 11, 12, 15, 18, 24], "create_biases_and_weight": 1, "create_convolutional_neural_network_kera": 3, "create_neural_network_kera": 1, "create_x": [5, 11], "credit": [0, 7, 22, 24], "crim": [], "crime": [], "criteria": [0, 4, 9, 10, 14, 21, 24], "criterion": [9, 10, 13], "critic": 6, "cross": [0, 1, 3, 7, 9, 10, 13, 15, 18, 21, 24, 25], "cross_entropi": 4, "cross_val_scor": 6, "cross_valid": [7, 10], "crossvalid": 6, "crucial": [1, 21], "cs231": 3, "csr_matrix": [19, 24], "csv": [0, 4, 6, 7, 9], "ctnk": 1, "cubic": 0, "cumbersom": 5, "cumsum": [10, 11, 24], "cumul": [7, 10, 21], "cumulative_heads_ratio": 10, "cup": 5, "current": [1, 2, 3, 4, 13, 14, 15, 16, 23], "curs": [0, 25], "curv": [6, 7, 10, 12], "curvatur": 13, "custom": [6, 14], "custom_cmap": [9, 10], "custom_cmap2": [9, 10], "cutpoint": 9, "cv": [6, 7, 10], "cvxbook": 13, "cvxopt": [5, 8, 25], "cycl": [1, 12], "d": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 19, 21, 22, 24, 25], "d2_g_t": 2, "d_f": 13, "d_g_t": 2, "d_net_out": 2, "da": 3, "dagger": [5, 19, 25], "dai": [1, 9, 18], "damp": 3, "darget": 9, "darkr": 21, "dat": [0, 24], "dat_id": [0, 6, 7, 9, 24], "data": [2, 4, 5, 8, 10, 12, 13, 14, 16, 19, 23], "data1": 14, "data2": 14, "data3": 14, "data4": 14, "data_id": [0, 6, 7, 9, 24], "data_indic": 1, "data_panda": 24, "data_path": [0, 6, 7, 9, 24], "databas": 1, "datafil": [0, 6, 7, 9, 24], "datafram": [0, 4, 5, 7, 9, 11, 24, 25], "datapoint": [1, 5, 6, 7, 11, 13, 16], "datasci": [15, 16], "dataset": [0, 4, 6, 7, 8, 9, 10, 11, 13, 14, 16, 24], "datatyp": 4, "date": [15, 24, 25], "daughter": 10, "david": 23, "dbh": 1, "dbo": 1, "dcomposit": 19, "ddot": 2, "dead": 1, "deadlin": 15, "deal": [0, 1, 3, 5, 6, 8, 11, 13, 14, 19, 21, 24, 25], "dealt": 0, "debt": 7, "debug": [0, 5, 6, 25], "decad": [0, 3], "decai": [0, 13, 21, 24], "decemb": [22, 24], "decent": 10, "decid": [0, 2, 3, 5, 6, 9, 25], "decim": [0, 24], "decis": [0, 1, 8, 11, 18, 23, 24], "decision_funct": 8, "decision_tre": 9, "decisiontreeclassifi": [9, 10], "decisiontreeregressor": [0, 9, 10], "declar": [0, 4, 19, 24], "decompos": [5, 6, 19, 25], "decomposit": [0, 6, 12, 24], "decompost": [5, 25], "deconvolut": 3, "decorrel": [10, 13], "decreas": [1, 2, 4, 5, 6, 10, 11, 13], "deduc": [0, 24], "deep": [3, 7, 12, 13, 18, 23, 25], "deep_neural_network": 2, "deep_param": 2, "deep_tree_clf": [9, 10], "deep_tree_clf1": 9, "deep_tree_clf2": 9, "deepen": [5, 18, 24], "deeper": [0, 3, 4, 24], "deeplearningbook": [23, 24], "deer": 3, "def": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 16, 17, 21, 24, 25], "def_covari": 21, "default": [0, 1, 2, 4, 6, 7, 19, 24], "default_tim": 4, "defect": [5, 25], "defici": [5, 25], "defin": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 19, 21, 25], "definit": [1, 2, 5, 6, 7, 8, 10, 11, 12, 13, 19, 21, 25], "defint": 21, "degre": [3, 5, 6, 8, 9, 10, 11, 15, 16, 21, 24], "deisenroth": 25, "del": 1, "delet": [6, 15], "delimit": 4, "deliv": [15, 20, 24], "delta": [0, 2, 3, 6, 8, 12, 13, 14, 24], "delta_": [1, 19], "delta_0": 3, "delta_1": 3, "delta_2": 3, "delta_3": 3, "delta_4": 3, "delta_5": 3, "delta_h": [0, 1, 24], "delta_j": [3, 12], "delta_k": 12, "delta_l": [1, 3], "delta_momentum": 13, "delta_n": [0, 3, 24], "delug": 18, "delv": 0, "demand": 13, "demonstr": [0, 3, 5, 6, 7, 11, 12, 18, 24, 25], "den": 4, "denomin": [1, 5], "denot": [1, 2, 6, 7, 13, 21], "dens": [1, 3, 4], "densiti": [0, 2, 6, 21], "depart": [22, 24, 25], "depend": [0, 1, 2, 4, 5, 6, 7, 8, 11, 12, 13, 15, 16, 18, 19, 21, 24, 25], "depict": 21, "deploy": [0, 18, 24], "depth": [0, 3, 9, 10, 19], "deriv": [0, 1, 2, 6, 7, 8, 10, 11, 13, 18, 24], "derivati": 13, "derivative_fn": 13, "descend": [5, 9, 11, 25], "descent": [0, 1, 3, 7, 8, 12, 24, 25], "describ": [0, 2, 4, 5, 6, 8, 10, 11, 12, 13, 19, 24], "descript": [0, 8, 9, 24], "design": [0, 1, 3, 4, 5, 6, 7, 10, 11, 12, 13, 17, 24], "designmatrix": [0, 24], "desir": [0, 2, 4, 5, 13, 14, 24, 25], "desktop": 15, "despit": [1, 12], "destroi": 19, "det": [5, 19, 25], "detail": [0, 6, 11, 13, 14, 19, 25], "detect": [3, 8, 12], "determin": [0, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 19, 21, 24, 25], "determinist": [7, 13, 21], "dev": 1, "develop": [0, 3, 5, 8, 10, 11, 12, 18, 19, 24, 25], "deviat": [0, 1, 2, 4, 5, 6, 17, 21, 24, 25], "devis": 12, "df": [4, 8, 11, 13, 24], "df1": 24, "di": [], "diag": [5, 8, 25], "diagnost": [1, 10], "diagon": [0, 5, 7, 13, 19, 21, 24, 25], "diagonaliz": [5, 25], "diagram": 10, "diagsvd": 6, "dice": [6, 21], "dict": [6, 8], "dictionari": [], "did": [0, 1, 5, 6, 7, 10, 11, 14, 16, 24], "die": 1, "diff": 2, "diff1": 2, "diff2": 2, "diff_ag": 2, "diffeent": 8, "differ": [0, 1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 23, 24, 25], "differenti": [0, 3, 16, 18, 19, 24, 25], "difficult": [0, 1, 6, 10, 13, 21, 24], "difficulti": [0, 1, 13, 24], "diffonedim": 2, "digit": [0, 1, 3, 4, 6, 22, 24], "dilemma": 13, "dilut": 1, "dim": [4, 11, 14, 19], "dimens": [0, 1, 2, 3, 4, 5, 8, 11, 14, 16, 19, 24, 25], "dimension": [0, 4, 5, 6, 9, 11, 13, 14, 18, 19, 24, 25], "dimensionless": [0, 3, 24], "diment": 19, "dimnsion": 4, "diod": 3, "direct": [0, 1, 2, 4, 11, 12, 13, 14, 24, 25], "directli": [1, 4, 5, 6, 21, 25], "disadvantag": [0, 24], "disappear": [3, 6], "disc_loss": 4, "disc_tap": 4, "discard": [6, 11], "disciplin": [0, 3, 12], "disclaim": 21, "discord": 24, "discourag": [13, 15], "discov": [0, 24], "discover": 5, "discret": [1, 3, 5, 7, 13], "discrimin": [4, 7, 10, 11], "discriminator_loss": 4, "discriminator_loss_list": 4, "discriminator_model": 4, "discriminator_optim": 4, "discuss": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 18, 19, 21, 23, 24, 25], "diseas": 7, "disguis": 6, "disord": [1, 7], "displai": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 21, 24, 25], "displaystyl": [0, 5, 17, 24, 25], "disregard": [0, 24], "dissimilar": [11, 14], "dist": 14, "distanc": [8, 9, 11, 14, 21], "distance_list": 9, "distinct": [3, 7, 8, 9, 10, 14], "distinctli": 8, "distinguish": [0, 4, 7, 8, 21, 24], "distplot": [], "distribut": [0, 1, 4, 6, 7, 10, 11, 13, 14, 18, 19, 24, 25], "distrubut": [0, 18, 24], "dive": [0, 8, 19, 24], "diverg": [1, 13], "divid": [0, 1, 3, 5, 6, 7, 8, 9, 11, 12, 21, 24, 25], "divis": [6, 8, 9, 13, 19, 21], "dna": 7, "dnn": [0, 1, 2, 4, 12, 24], "dnn1": 4, "dnn2_gru2": 4, "dnn_kera": 1, "dnn_model": 1, "dnn_numpi": 1, "dnn_scikit": [0, 1, 24], "do": [0, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 19, 24, 25], "doc": [0, 15, 16, 18, 20, 22, 23, 24], "document": [4, 13, 15], "doe": [0, 1, 2, 3, 4, 5, 6, 8, 10, 11, 12, 13, 15, 16, 17, 19, 21, 24], "doesn": [3, 9, 12, 24], "dog": [1, 3, 4], "domain": [5, 8, 13], "domin": [0, 24], "don": [0, 1, 3, 5, 6, 8, 11, 13, 15, 16, 18, 24, 25], "done": [0, 2, 3, 4, 5, 6, 9, 10, 11, 13, 16, 19, 24, 25], "dot": [0, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 19, 21, 24, 25], "doubl": [3, 4, 16, 19, 24], "doubli": 1, "down": [0, 3, 6, 9, 11, 12, 13], "download": [0, 1, 3, 5, 6, 15, 19, 23, 24], "downsampl": 3, "dozen": 1, "dq": 6, "drag": 13, "dramat": 11, "drastic": 4, "draw": [4, 6, 10, 13], "drawback": [0, 1, 3, 13, 25], "drawn": [1, 4, 6, 7, 11, 21, 24], "drive": [3, 4], "driven": 3, "drop": [0, 1, 5, 6, 11, 13, 21, 24, 25], "dropna": [0, 6, 24], "dropout": 4, "dt": [2, 3, 13, 21], "dtype": [0, 1, 3, 4, 14, 19, 24], "dub": [0, 24], "due": [1, 2, 5, 6, 8, 10, 12, 13, 22, 24, 25], "dummi": [], "dure": [0, 1, 3, 4, 8, 9, 11, 18, 24], "dwell": [], "dwh": 1, "dwo": 1, "dx": [2, 3, 8, 21], "dx_1": 21, "dx_1p": 6, "dx_2p": 6, "dx_mp": 6, "dx_n": 21, "dxp": 6, "dy": [1, 8, 21], "dynam": 4, "dz": 8, "e": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 21, 22, 24, 25], "e_": [0, 2, 24], "each": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22, 24, 25], "eapprox": [0, 24], "earli": [1, 13], "earlier": [0, 5, 7, 8, 9, 11, 12, 13, 24, 25], "earthexplor": 6, "eas": [6, 9, 14], "easi": [0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 18, 19, 24, 25], "easier": [5, 6, 8, 9, 13, 15, 21, 24, 25], "easiest": 13, "easili": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 19, 24, 25], "eastern": [22, 24], "ebind": [0, 24], "eblock": 9, "econometr": 24, "economi": 5, "ecosystem": [18, 24], "ect": 20, "edg": 3, "edgecolor": 6, "editor": 15, "edu": 13, "educ": [0, 24], "eff": 21, "effect": [1, 4, 10, 13, 16, 17, 21], "effic": 1, "effici": [0, 3, 10, 13, 18, 19, 21, 24], "efron": 6, "egrad": 13, "eig": [5, 11, 13, 19, 21, 24, 25], "eigen": 21, "eigenpair": [5, 11, 25], "eigenvalu": [0, 5, 8, 11, 13, 19, 24, 25], "eigenvector": [5, 11, 13, 25], "eight": [19, 24], "eigval": [19, 21, 24], "eigvalu": [11, 13], "eigvec": [19, 21, 24], "eigvector": [11, 13], "eir": [22, 24], "eispack": [19, 24], "either": [1, 5, 6, 7, 8, 9, 10, 11, 13, 21, 24, 25], "eivind": 22, "eivinsto": 22, "ekstr\u00f8m": 4, "elabor": 21, "elarn": 3, "electr": [0, 3, 12, 24], "electron": 24, "eleg": 11, "element": [1, 2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 18, 19, 23, 25], "elementari": [10, 13, 19], "elementwis": [3, 13], "elementwise_grad": [2, 13], "elessar": 24, "elif": 14, "elim": 19, "elimin": [3, 8], "elin": [22, 24], "ellipsi": 16, "els": [1, 3, 4, 7, 9, 12, 13, 16, 19], "elu": 1, "elus": [0, 24], "email": [20, 22, 24], "embed": [0, 11, 25], "embodi": 6, "emit": 21, "emner": 23, "emphas": [0, 10, 18, 24], "emphasi": [0, 18, 23, 24], "empir": [1, 11, 21], "emploi": [0, 1, 5, 6, 11, 13, 21, 24, 25], "employ": 0, "empti": [6, 10, 15], "emul": 12, "en": [18, 23], "enabl": 11, "enbodi": 6, "encod": [0, 3, 5, 9, 11, 14, 24, 25], "encompass": [0, 21], "encount": [0, 1, 5, 7, 13, 15, 21, 24, 25], "encourag": 15, "end": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 19, 21, 22, 24, 25], "endpoint": [3, 6], "energi": [0, 4, 6], "enforc": 12, "eng": 23, "engin": [0, 1, 3, 4, 18, 24], "enorm": 3, "enough": [0, 6, 13, 24], "ensembl": [1, 9, 24], "ensur": [0, 1, 2, 3, 5, 6, 11, 13, 21, 25], "entail": 24, "enter": [5, 6, 25], "enthought": [0, 18, 24], "entir": [1, 3, 7, 9, 18, 21, 24], "entiti": [9, 12, 19, 24], "entri": [0, 5, 8, 11, 12, 19, 24, 25], "entropi": [1, 3, 7, 10, 13, 24], "enumer": [0, 1, 2, 3, 4, 6, 8, 24], "env": 21, "environ": [2, 18, 24], "environemnt": 15, "eo": [0, 6], "eol": 0, "eosfit": 0, "epoch": [0, 1, 3, 4, 12, 13, 24], "epsilon": [0, 5, 6, 7, 13, 24, 25], "epsilon_": [0, 24], "epsilon_0": [0, 24], "epsilon_1": [0, 24], "epsilon_2": [0, 24], "epsilon_i": [0, 24, 25], "eq": [3, 13, 14, 19, 21], "eqnarrai": [3, 5, 6], "equal": [0, 1, 2, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 16, 19, 21, 24, 25], "equat": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 17, 19, 21, 24], "equilibrium": [2, 12], "equiv": [3, 13, 19, 21], "equival": [0, 1, 5, 7, 8, 11, 13, 18, 19, 24, 25], "erf": 21, "eriador": 24, "err": [0, 10], "err_": 6, "err_sqr": 2, "errat": 13, "erron": 2, "error": [1, 2, 4, 5, 6, 7, 9, 11, 12, 13, 15, 16, 17, 18, 19, 21], "error_estimate_corr_tim": 21, "error_hidden": 1, "error_output": 1, "escap": 13, "especi": [1, 3, 9, 12, 13, 15], "essenti": [0, 5, 6, 9, 10, 12, 14, 15, 21, 25], "establish": [0, 6, 10, 11, 16], "estim": [0, 1, 5, 6, 7, 10, 11, 13, 18, 21, 24, 25], "estimated_mse_fold": 6, "estimated_mse_kfold": 6, "estimated_mse_sklearn": 6, "et": [0, 2, 4, 16, 17, 23, 24, 25], "eta": [0, 1, 3, 8, 12, 13, 24], "eta0": [8, 13], "eta_": 13, "eta_t": 13, "eta_v": [0, 1, 3, 24], "etc": [0, 1, 3, 5, 7, 8, 9, 11, 12, 13, 14, 18, 19, 21, 25], "ethic": 18, "euclidean": [0, 14, 25], "evalu": [0, 2, 3, 4, 5, 6, 9, 13, 15, 16, 17, 21, 24, 25], "evalut": 13, "even": [0, 1, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 18, 19, 21, 24, 25], "evenli": 4, "event": [5, 7, 10, 21], "eventu": [0, 5, 6, 11, 12, 13, 22, 25], "everi": [0, 1, 2, 3, 4, 5, 6, 9, 10, 11, 12, 13, 14, 15, 18, 21, 22, 24, 25], "everyth": [4, 12, 16], "everywher": [4, 13], "evolv": 0, "exact": [0, 5, 11, 12, 13, 19, 21, 24, 25], "exactli": [0, 3, 4, 6, 12, 18, 25], "exam": 24, "examin": 6, "exampl": [0, 5, 11, 12, 13, 15, 16, 18, 19, 21, 23], "exce": [1, 12, 13], "excel": [0, 1, 4, 5, 10, 24, 25], "except": [3, 4, 6, 8, 9, 19], "excess": [0, 24], "excit": 0, "exclud": [1, 6, 12], "exclus": [0, 1, 3, 6, 21, 24], "execut": [2, 5, 13, 15, 25], "exemplifi": 13, "exercic": [22, 24], "exercis": [5, 18, 20, 22, 24], "exhaust": 6, "exhibit": [0, 5, 6, 8, 24, 25], "exist": [0, 1, 2, 3, 5, 6, 7, 8, 9, 13, 19, 24], "exit": [5, 19, 25], "exp": [0, 1, 2, 5, 6, 7, 8, 10, 11, 12, 13, 16, 17, 21, 25], "exp_term": 1, "expand": [5, 7, 11, 13], "expans": [0, 3, 5, 8, 10, 12, 13, 24, 25], "expect": [0, 1, 5, 6, 7, 11, 12, 13, 15, 18, 24, 25], "expectation_value_of_h_wrt_p": 21, "expens": [6, 10, 13, 16], "experi": [0, 1, 6, 8, 13, 15, 18, 24, 25], "experiment": [0, 4, 6, 9, 21, 24], "expert": [1, 9], "explain": [0, 6, 9, 10, 11, 13, 16, 24], "explained_variance_ratio_": 11, "explanatori": [0, 24], "explicit": [0, 3, 6, 13, 19, 24, 25], "explicitli": [0, 4], "explod": 1, "exploit": [0, 3, 12, 13, 24], "explor": [1, 4, 6, 8, 13, 18, 24], "expon": 1, "exponenti": [0, 1, 5, 6, 10, 13, 21, 24], "export": [9, 15, 16], "export_graphviz": 9, "export_text": 9, "exporttext": 9, "expos": 18, "express": [0, 2, 3, 5, 6, 7, 10, 12, 13, 19, 21, 24], "exptmean": 21, "exptvari": 21, "extend": [0, 2, 7, 11, 13, 18, 24], "extens": [0, 12, 15, 18, 24], "extent": [0, 1, 6, 23], "extern": [3, 6, 9], "extra": [1, 3, 5, 15, 22, 24, 25], "extract": [0, 3, 5, 6, 7, 8, 11, 13, 16, 17, 19, 24, 25], "extrapol": [0, 24], "extrem": [0, 1, 4, 5, 6, 7, 8, 9, 13, 15, 16, 19, 25], "extremum": 13, "extrins": 11, "ey": [0, 5, 6, 13, 14, 19, 24, 25], "f": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 13, 14, 15, 16, 17, 19, 21, 22, 24, 25], "f1": 13, "f11": [0, 24], "f12": [0, 24], "f13": [0, 24], "f1_grad": 13, "f1d": 13, "f2": 13, "f2_grad_x1": 13, "f2_grad_x1_analyt": 13, "f2_grad_x2": 13, "f2_grad_x2_analyt": 13, "f3": 13, "f3_grad": 13, "f3_grad_analyt": 13, "f4": 13, "f4_grad": 13, "f4_grad_analyt": 13, "f5": 13, "f5_grad": 13, "f6": 13, "f6_for": 13, "f6_for_grad": 13, "f6_grad_analyt": 13, "f6_while": 13, "f6_while_grad": 13, "f7": 13, "f7_grad": 13, "f7_grad_analyt": 13, "f8": 13, "f8_grad": 13, "f9": [0, 13, 24], "f9_altern": 13, "f9_alternative_grad": 13, "f9_grad": 13, "f_": 10, "f_0": [3, 10], "f_1": [10, 13], "f_2": [12, 13], "f_3": 12, "f_d": 21, "f_grad": 13, "f_grad_analyt": 13, "f_i": [0, 6, 12, 16], "f_m": [3, 10], "f_n": 3, "f_vec": 2, "face": [13, 24], "facecolor": [6, 8, 21], "facil": [0, 18], "facilit": 12, "fact": [0, 1, 3, 5, 9, 11, 12, 13, 24, 25], "factor": [0, 1, 3, 5, 6, 9, 10, 11, 13, 19, 21, 24, 25], "factori": 13, "fade": 6, "fafab0": [9, 10], "fail": [0, 6, 13, 22, 24], "failur": 7, "fairli": [1, 2, 21], "faisal": [16, 25], "fake": 4, "fake_loss": 4, "fake_output": 4, "fall": [8, 9, 20], "fals": [0, 1, 2, 3, 4, 5, 6, 7, 9, 10, 14, 16, 17, 19, 24, 25], "famili": [0, 7, 8, 21, 25], "familiar": [0, 3, 5, 6, 8, 15, 18, 19, 21, 24], "famou": [6, 12], "far": [0, 3, 4, 5, 6, 8, 11, 12, 13, 14, 16, 24, 25], "fashion": [0, 9, 10, 24], "fast": [1, 3, 6, 10, 12, 13, 18, 21, 24], "faster": [1, 11, 13], "fastest": [13, 19], "favor": 7, "favorit": 21, "fc": 3, "featur": [0, 1, 3, 5, 6, 7, 8, 10, 11, 12, 13, 15, 17, 18, 21, 24], "feature_nam": [1, 7, 9], "feautur": 9, "fed": 1, "feed": [0, 2, 3, 11, 18, 24], "feed_forward": 1, "feed_forward_out": 1, "feed_forward_train": 1, "feedback": [4, 24], "feeddorward": 4, "feedforward": [1, 4, 12], "feel": [0, 5, 6, 11, 13, 15, 16, 18, 22, 24], "feet": [], "fetch": [6, 15], "few": [1, 3, 4, 5, 9, 17, 21, 24], "fewer": [0, 9, 11, 24], "ffnn": [1, 12], "field": [0, 3, 6, 12, 18], "fifth": [0, 6, 24], "fig": [0, 1, 2, 3, 4, 6, 7, 12, 13, 14, 24], "fig_id": [0, 6, 7, 9, 24], "figaxi": 21, "figsiz": [0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 24], "figur": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 16, 18, 24, 25], "figure_id": [0, 6, 7, 9, 24], "figurefil": [0, 6, 7, 9, 24], "file": [0, 4, 5, 6, 7, 9, 15, 24], "file_prefix": 4, "filenam": 24, "fill": [5, 9, 25], "filter": [3, 4], "final": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 20, 21, 22, 24], "financ": 0, "find": [0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 21, 24, 25], "fine": [0, 14], "finish": 2, "finit": [3, 5, 6, 12, 13, 17, 21, 25], "finnicki": 15, "first": [0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 19, 21, 22, 23, 25], "firsteigvector": 11, "fit": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 17, 21, 25], "fit_intercept": [0, 5, 6, 16, 25], "fit_mod": 9, "fit_theta": 6, "fit_transform": [0, 6, 8, 9, 11, 15], "fiti": [0, 24], "five": [0, 9, 24, 25], "fix": [0, 3, 4, 6, 10, 11, 12, 13, 24], "flag": 4, "flat": [12, 13], "flatten": [1, 3, 4, 5, 19], "flexibl": [1, 6, 8, 10, 12, 24], "flip": [22, 24], "float": [0, 3, 4, 5, 9, 11, 13, 14, 19, 24, 25], "float32": [4, 9], "float64": [4, 19, 24], "flop": [5, 19, 25], "flow": [1, 4, 12], "fluctuat": 5, "fly": 11, "fm": 0, "fmax": 3, "fmesh": 13, "fn": 7, "focu": [0, 3, 4, 5, 6, 15, 18, 23, 24], "focus": [1, 6, 7, 19], "fold": [6, 9], "folder": [0, 4, 6, 15, 24], "follow": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 21, 22, 23, 24, 25], "font": [7, 21, 24], "fontdict": 21, "fontsiz": [1, 6, 8, 9, 10, 21], "fontweight": 1, "footprint": 3, "foral": [8, 25], "forc": [0, 5, 6, 10, 11, 25], "forcast": 4, "forecast": [4, 12], "forest": [0, 1, 9, 18, 24], "forget": 11, "form": [0, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 15, 16, 18, 19, 21, 24, 25], "formal": [3, 4, 14, 21], "format": [0, 1, 3, 4, 6, 7, 8, 9, 10, 11, 18, 21, 23], "format_data": 4, "formatstrformatt": [6, 13], "formul": [4, 6, 11, 14], "formula": [3, 13, 21], "forth": [4, 12], "fortran": [0, 18, 19, 24], "fortran2003": [18, 24], "fortran90": 21, "fortun": [0, 11, 25], "forward": [0, 3, 6, 18, 19, 24], "found": [1, 2, 4, 5, 6, 12, 13, 24, 25], "foundat": [18, 24], "four": [4, 5, 6, 8, 12, 19, 20, 22, 24], "fourier": [0, 24], "fourierdef1": 3, "fourierdef2": 3, "fourierseriessign": 3, "fourth": [12, 24, 25], "fp": 7, "frac": [0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 19, 21, 24, 25], "fraction": 9, "frame": 7, "framework": [1, 8, 10, 21], "frank": [5, 11], "frankefunct": [5, 6, 11], "fredli": [22, 24], "free": [0, 6, 11, 13, 15, 16, 18, 19, 21, 22, 23, 24], "freecodecamp": 18, "freedom": 5, "freeli": 0, "freez": 15, "frequenc": [3, 6, 7, 21], "frequent": [0, 8, 9, 13], "frequentist": 18, "fresh": 10, "fridai": [15, 22, 24], "friedman": [6, 23, 24], "friendli": 4, "frodo": 24, "frog": 3, "from": [0, 1, 2, 3, 4, 6, 7, 8, 9, 11, 13, 14, 15, 16, 17, 18, 19, 21, 22, 23], "from_cod": 9, "from_logit": [3, 4], "from_tensor_slic": 4, "front": [0, 4, 5, 24, 25], "frustrat": 15, "fulfil": [2, 5, 12, 25], "full": [1, 3, 5, 7, 9, 10, 13, 21, 24, 25], "full_matric": [5, 25], "fulli": [3, 6, 12, 21], "fun": [18, 24], "func": 2, "function": [2, 3, 4, 5, 9, 14, 15, 16, 17, 18, 19], "functionali": 11, "fundament": [0, 6, 18, 24], "funtion": 2, "further": [2, 7, 9, 24], "furthermor": [0, 3, 5, 6, 7, 11, 12, 13, 18, 24, 25], "futur": [0, 4, 8, 9, 24], "fy": [15, 20, 22, 23, 24], "fys5419": [23, 24], "fys5429": [23, 24], "f\u00f8470": [22, 24], "g": [0, 1, 2, 3, 4, 6, 8, 9, 10, 11, 13, 15, 21, 24, 25], "g0": 2, "g_": [2, 9, 10], "g_0": 2, "g_1": [2, 10], "g_2": [2, 10], "g_analyt": 2, "g_dnn_ag": 2, "g_euler": 2, "g_i": 2, "g_m": [3, 10], "g_n": 3, "g_re": 2, "g_t": 2, "g_t_d2t": 2, "g_t_d2x": 2, "g_t_dt": 2, "g_t_hessian": 2, "g_t_hessian_func": 2, "g_t_jacobian": 2, "g_t_jacobian_func": 2, "g_trial": 2, "g_trial_deep": 2, "g_vec": 2, "gain": [1, 5, 7, 9, 10, 13, 25], "galleri": [0, 24], "game": 4, "gamge": 24, "gamma": [0, 2, 8, 9, 10, 11, 13, 24], "gamma1": 8, "gamma2": 8, "gamma_": [0, 24], "gamma_0": 10, "gamma_1": 10, "gamma_1x": 10, "gamma_i": [0, 8, 21, 24], "gamma_j": 13, "gamma_k": 13, "gamma_m": 10, "gamma_x": [0, 24], "gap": 8, "gate": [4, 12], "gather": [0, 1, 12, 25], "gaug": 12, "gaussbacksub": 19, "gaussian": [4, 5, 6, 8, 14, 21, 24], "gaussian_point": 14, "gaussian_rbf": 8, "gave": 13, "gavra": 24, "gbc": 24, "gca": [2, 6, 8, 13], "gd": 1, "gd_clf": 10, "gdclassiffiercgain": 10, "gdclassiffierconfus": 10, "gdclassiffierroc": 10, "gdm": 13, "gdregress": 10, "ge": [1, 5, 7, 21, 25], "gen_loss": 4, "gen_tap": 4, "gender": [0, 24], "genener": 4, "gener": [0, 1, 2, 3, 5, 6, 8, 10, 11, 12, 13, 14, 15, 16, 19, 21, 23, 25], "generaliz": 16, "generallay": 12, "generate_and_save_imag": 4, "generate_imag": 4, "generate_latent_point": 4, "generate_simple_clustering_dataset": 14, "generated_imag": 4, "generator_loss": 4, "generator_loss_list": 4, "generator_model": 4, "generator_optim": 4, "genom": 18, "geodes": 11, "geometr": [0, 13, 24], "geometri": 5, "georg": 23, "geotif": 6, "geq": [2, 5, 8, 9, 13, 25], "geron": [0, 23, 24], "get": [0, 1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 13, 15, 18, 19, 21, 22, 24, 25], "get_dummi": 9, "get_paramet": 2, "get_split": 9, "get_yaxi": 8, "get_yticklabel": 6, "gh": 15, "gibb": [18, 24], "gif": 4, "gini": 10, "gini_index": 9, "ginvers": 13, "git": [0, 15, 18, 24], "giter": 13, "github": [0, 18, 20, 22, 23, 24, 25], "gitignor": 15, "gitlab": [0, 15, 18, 24], "give": [0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 18, 21, 24, 25], "given": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 17, 19, 21, 24, 25], "global": [6, 7, 13], "glorot": 1, "gnew": 13, "go": [0, 1, 3, 5, 6, 8, 9, 11, 12, 13, 15, 16, 24, 25], "goal": [0, 7, 9, 24], "goe": [0, 1, 2, 5, 6, 13, 14, 15, 19, 24, 25], "golden": 13, "gone": [5, 25], "gong": 1, "good": [1, 3, 4, 5, 6, 9, 10, 11, 13, 15, 18, 21, 23, 25], "goodfellow": [4, 23, 24, 25], "googl": [1, 4, 18, 24], "got": [1, 6], "gotten": 24, "gov": 6, "govern": 24, "gp": 23, "gpu": [1, 13, 18, 24], "grad": [2, 13], "grad_analyt": 13, "grade": 20, "gradient": [0, 3, 4, 7, 8, 9, 12, 18, 24, 25], "gradientboostingclassifi": 10, "gradientboostingregressor": 10, "gradients_of_discrimin": 4, "gradients_of_gener": 4, "gradienttap": 4, "gradual": [1, 14], "grai": [4, 6], "graph": [1, 9, 11, 12, 13, 16], "graph_from_dot_data": 9, "graphic": [0, 1, 9, 15, 24], "grasp": 0, "gray_r": [1, 3], "grayscal": 3, "great": [5, 13, 15], "greater": [1, 7, 21, 25], "greatli": 13, "greedi": 9, "green": [0, 3, 9, 21], "grei": 4, "grid": [1, 3, 6, 7, 8, 12, 21], "grossli": 13, "ground": [0, 24], "group": [0, 6, 7, 9, 14, 15, 18, 20, 22, 24], "groupbi": [0, 24], "grow": [1, 3, 9, 10], "growth": [0, 24], "gru": 4, "guarante": [0, 4, 13, 21, 24, 25], "guess": [1, 4, 10, 13, 14], "guestrin": 10, "gui": 15, "guid": 1, "h": [0, 1, 5, 6, 8, 13, 15, 21, 22, 23, 24, 25], "h1": 2, "h_": [0, 13, 24], "h_1": [2, 13], "h_2": [2, 13], "h_m": 10, "ha": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 19, 21, 24, 25], "haanen": [22, 24], "habit": [0, 25], "had": [0, 1, 6, 7, 13, 24], "hadamard": [1, 12, 13], "half": [1, 8, 9], "halv": 10, "hand": [0, 1, 2, 3, 5, 11, 12, 13, 18, 19, 21, 22, 23, 24, 25], "handi": 3, "handl": [0, 1, 2, 5, 9, 11, 15, 18, 25], "handle_unknown": 9, "handsid": 12, "handwrit": 12, "handwritten": [1, 5], "happen": [1, 2, 3, 4, 5, 6, 10, 13, 21, 25], "hard": [1, 7, 8, 10, 13], "hardcopi": [18, 24], "harder": [0, 1, 25], "harmon": 3, "hasn": [], "hassl": [0, 18, 24], "hast": [18, 24], "hasti": [0, 6, 16, 17, 23, 24, 25], "hat": [0, 1, 5, 6, 7, 9, 10, 11, 12, 13, 16, 17, 19, 25], "have": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 24, 25], "haven": 1, "he": 7, "head": [4, 10, 21], "header": [0, 24], "heads_proba": 10, "health": [0, 25], "hear": [0, 13, 24], "heart": [0, 7, 24], "heatmap": [0, 1, 3, 7, 17, 24], "heavili": 0, "heavisid": 1, "height": [1, 3, 6], "held": 13, "help": [0, 1, 4, 12, 13, 15, 16, 24], "helper": [4, 14], "henc": [0, 5, 6, 8, 9, 10, 12, 13, 24, 25], "henrik": [22, 24], "her": 7, "here": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 17, 18, 19, 21, 24, 25], "hereaft": [0, 8, 12, 24], "hermitian": 19, "hessenberg": 19, "hessian": [0, 2, 5, 13], "heterogen": [9, 10], "hi": 7, "hidden": [1, 3, 4, 12], "hidden_bia": 1, "hidden_bias_gradi": 1, "hidden_layer_s": [0, 1, 24], "hidden_neuron": 4, "hidden_weight": 1, "hidden_weights_gradi": 1, "hierarch": [5, 25], "high": [0, 1, 2, 3, 4, 5, 6, 9, 10, 11, 13, 14, 18, 19, 24, 25], "higher": [0, 1, 3, 5, 6, 8, 13, 24, 25], "highest": [1, 2], "highli": [0, 3, 4, 10, 18, 19, 23, 24, 25], "highwai": [], "hing": 8, "hint": [13, 15, 16, 25], "hip": 18, "hire": 0, "hist": [4, 6, 7, 21], "histogram": [6, 7, 21], "histor": [7, 11], "histori": [3, 4, 12, 15], "hitherto": 5, "hjorth": [22, 24, 25], "hobbi": 21, "hoc": [5, 25], "hoff": 23, "hold": [1, 3, 6, 13, 14], "holder": [0, 24], "home": [], "homepag": 24, "homework": [6, 13], "homogen": [1, 3, 9, 10, 13], "honchar": 2, "hopefulli": [0, 11, 15, 21, 24], "horizont": 11, "horlyk": [22, 24], "hors": [3, 7, 24], "hot": [1, 9], "hour": [1, 18, 20, 21, 22, 24], "how": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 21, 24, 25], "howev": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 18, 19, 21, 24, 25], "hspace": [0, 4, 8, 10, 21, 24], "hstack": 1, "htf": 24, "html": [0, 16, 18, 20, 22, 23, 24], "http": [0, 3, 4, 6, 13, 15, 16, 18, 19, 20, 22, 23, 24, 25], "huang": [0, 24], "huber": [0, 24], "huge": [1, 3, 4, 18], "human": [0, 1, 3, 6, 9, 12], "humid": 9, "hundr": 1, "hungri": 1, "hybrid": 20, "hydrogen": [0, 24], "hyperbol": [1, 4, 12], "hyperparam": 8, "hyperparamet": [3, 4, 5, 6, 9, 13, 25], "hyperplan": 11, "h\u00f8rlyk": [22, 24], "i": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 25], "i0": [0, 24], "i1": [0, 6, 8, 12, 24], "i2": [0, 8, 12, 24], "i3": [0, 12, 24], "i5": [0, 24], "i_": 13, "i_1": [5, 6], "i_2": [5, 6], "ian": 23, "ic": 1, "id": [7, 13], "ida": [22, 24], "idea": [0, 1, 2, 3, 4, 6, 9, 10, 12, 13, 19], "ideal": [0, 2, 6, 8, 13, 21, 24], "idem": 6, "ident": [5, 6, 12, 13, 17, 19, 25], "identifi": [0, 1, 7, 9, 11, 12, 13, 14, 24, 25], "ieor": 21, "ifi": 23, "ifs": [18, 24], "ignor": [0, 1, 3, 9, 15, 25], "ii": [19, 21], "iii": [19, 24], "ij": [0, 1, 3, 6, 8, 12, 14, 16, 19, 21, 24, 25], "ik": [0, 19, 24, 25], "illustr": [5, 7, 10, 12, 13, 14, 18, 24], "im": 6, "imag": [1, 3, 4, 6, 9, 11, 12, 14, 23, 24], "image_at_epoch_": 4, "image_batch": 4, "image_height": 3, "image_path": [0, 6, 7, 9, 24], "image_width": 3, "imageio": 6, "images_from_seed_imag": 4, "imagin": 1, "immedi": [0, 3, 4, 6, 18, 24], "implement": [0, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 21, 24, 25], "impli": [3, 5, 6, 7, 13, 19, 25], "implicit": 3, "implicitli": [11, 21], "import": [0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 21], "importantli": 3, "impos": [0, 6, 11, 12, 24], "imposs": [0, 5, 24, 25], "impress": [0, 12, 24], "improv": [0, 4, 5, 9, 10, 11, 13, 15, 25], "impur": 9, "imread": 6, "imshow": [1, 3, 4, 6], "in3050": [23, 24], "in3310": 24, "in4080": [23, 24], "in4300": [23, 24], "in4310": 23, "in5400": 3, "in5550": 23, "in_out_neuron": 4, "inaccur": 13, "inact": 12, "inadequ": [0, 24], "inch": 6, "includ": [0, 1, 2, 3, 4, 5, 6, 7, 11, 12, 15, 16, 17, 18, 21, 22, 23, 24, 25], "include_bia": [6, 9], "incom": [12, 16], "incorrect": 1, "incoveni": 8, "increas": [0, 1, 3, 4, 5, 6, 9, 12, 13, 21, 24], "increasingli": 21, "ind": 6, "inde": [0, 2, 4, 5, 6, 13, 24, 25], "indefinit": 4, "independ": [0, 5, 6, 7, 8, 12, 13, 21, 24, 25], "index": [0, 1, 3, 4, 10, 14, 18, 19, 21, 23, 24], "index_col": [0, 24], "indic": [0, 1, 3, 4, 5, 6, 9, 10, 11, 13, 16, 24, 25], "indispens": 6, "individu": [1, 6, 7, 10, 12, 21, 24, 25], "indu": [], "indx": 19, "indx1": 2, "indx2": 2, "indx3": 2, "ineffici": [3, 13], "inequ": [8, 13], "inertia": 13, "inf1000": [18, 24], "inf1100": [18, 24], "inf1100l": [18, 24], "inf1110": [18, 24], "inf3000": 24, "infeas": 9, "infer": [0, 1, 4, 6, 23, 24], "inferenc": 1, "infil": [0, 6, 7, 9, 24], "infin": [5, 6, 7, 11, 25], "infinit": 3, "infinitesim": 21, "influenc": [6, 10], "influenti": 1, "info": 24, "inform": [0, 1, 3, 4, 6, 9, 11, 12, 13, 14, 19, 23, 24], "inforom": 15, "infti": [3, 6, 13, 21], "ingeni": 13, "ingredi": [0, 9, 24], "inher": 6, "inherit": [19, 24], "initi": [0, 1, 2, 6, 10, 13, 14, 19, 21, 24], "inject": 14, "inlin": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 19, 21, 24, 25], "inner": [0, 13, 25], "inp": 4, "inplac": 13, "input": [0, 1, 3, 4, 5, 6, 7, 8, 12, 13, 14, 16, 21, 24, 25], "input_dim": 1, "input_shap": [3, 4], "inputs": 1, "inputs_shuffl": [0, 1, 25], "insert": [3, 5, 6, 8, 10, 21, 25], "insid": [4, 7], "insight": [0, 1, 5, 18, 24, 25], "insist": [6, 13], "inspir": [0, 1, 12, 24], "instabl": 2, "instal": [0, 1, 5, 6, 9, 15], "instanc": [0, 1, 2, 4, 6, 9, 11, 13, 16, 24, 25], "instanti": 10, "instead": [0, 1, 2, 3, 4, 5, 6, 8, 9, 11, 13, 14, 17, 19, 21, 24, 25], "institut": 1, "instruct": [0, 1, 15], "int": [0, 1, 2, 3, 4, 5, 6, 11, 13, 14, 19, 21, 25], "int32": 10, "int_": [3, 6, 21], "int_0": 21, "int_a": 21, "intak": [0, 25], "integ": [1, 2, 13, 14, 19, 21, 24], "integer_vector": 1, "integr": [3, 6, 21, 24], "intellig": [0, 14, 23, 24], "intend": 10, "intens": 1, "intention": 14, "interact": [0, 6, 9, 12, 18, 24], "intercept": [0, 6, 8, 11, 13, 16, 17, 24, 25], "intercept_": [0, 6, 8, 9, 13, 24], "interchang": [5, 12, 19], "interconnect": 1, "interest": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 18, 21, 24, 25], "interfac": [0, 1, 15, 19, 25], "interior": [0, 9, 24], "intermedi": [19, 25], "intern": [1, 10, 12], "interpol": [1, 3, 4, 6, 12], "interpr": [5, 25], "interpret": [0, 1, 6, 9, 10, 12, 13, 15, 16, 19, 21], "interv": [0, 3, 5, 6, 7, 13, 21, 24, 25], "intial": 13, "intract": [0, 4, 25], "intrins": [3, 11, 19, 21, 24], "intro": [18, 23, 24], "introduc": [0, 1, 5, 6, 8, 10, 12, 19, 21, 24], "introduct": [1, 2, 4, 13, 23, 25], "introductori": [0, 4, 19, 23, 24, 25], "intuit": [0, 5, 6, 8, 12, 13, 24], "inv": [0, 5, 13, 17, 24, 25], "invalu": [0, 13, 18, 24], "invari": 1, "invd": 5, "inver": 8, "invers": [0, 3, 6, 13, 24, 25], "inverse_transform": 8, "invert": [0, 5, 7, 10, 13, 16, 24], "invh": 13, "invok": 8, "involv": [0, 2, 6, 7, 11, 12, 24, 25], "io": [0, 18, 20, 22, 23, 24, 25], "ip": [0, 8, 21, 24], "ipca": 11, "ipynb": [18, 24], "ipython": [0, 5, 7, 9, 11, 14, 18, 24, 25], "iq": 6, "iri": [8, 9], "irreduc": 6, "irrelev": [5, 25], "irrespect": [0, 24], "isn": 5, "isnul": [], "isomap": 11, "issu": [1, 9, 15, 19], "it_arrai": 13, "item": [0, 13, 24], "items": [19, 24], "iter": [1, 2, 4, 6, 8, 13, 14, 21], "its": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 21, 24], "itself": [5, 6, 12, 21, 24, 25], "j": [0, 1, 2, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15, 16, 19, 21, 23, 24, 25], "j1": 19, "j_": 6, "j_lasso_sk": 6, "j_ridge_sk": 6, "j_sk": 6, "jackknif": [6, 18, 24], "jacobian": [2, 13], "jason": 4, "jax": [18, 24], "jensen": [22, 24, 25], "jerom": 23, "ji": [12, 19], "jit": 13, "jj": [0, 5, 6, 24], "jk": [0, 1, 6, 12, 19, 24], "jl": [0, 24], "jm": 19, "jnp": 13, "job": [2, 8, 10, 15], "join": [0, 4, 6, 7, 9, 24], "joint": [4, 5], "judg": 13, "judgement": 6, "julia": [18, 19], "jump": 21, "junk": 4, "jupit": 24, "jupyt": [0, 15, 16, 18, 23, 24], "just": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 21, 24, 25], "justif": 0, "justifi": [3, 10], "k": [0, 1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 18, 19, 21, 22, 24, 25], "k0": 7, "k1": 7, "kaggl": 6, "kappa_d": 21, "karl": [22, 24], "karush": 8, "katrin": [22, 24], "keep": [0, 1, 4, 5, 6, 11, 13, 14, 15, 19, 24, 25], "keepdim": [1, 6, 10, 19], "kei": [1, 3, 6, 12], "kept": [4, 6, 14], "kera": [0, 4, 18, 24], "kernel": [0, 1, 3, 18, 24, 25], "kernel_regular": [1, 3], "kernel_s": 4, "kernelpca": 11, "kev": [0, 24], "kevin": [23, 24], "keyword": [19, 24], "kfold": 6, "kg": 1, "ki": 19, "kick": [1, 13], "kiener": 2, "kilomet": 6, "kind": [0, 2, 3, 4, 8, 12, 13, 14, 24, 25], "kj": [6, 12, 19, 25], "kjm": [18, 24], "kkt": 8, "kl": 21, "km": [12, 24], "kmean": 14, "kmeanspoint": 14, "kn_k": 14, "know": [0, 1, 2, 5, 6, 8, 13, 15, 16, 17, 18, 24, 25], "knowledg": [0, 18, 24], "known": [1, 3, 4, 5, 6, 7, 8, 9, 12, 19, 21, 23], "kondev": [0, 24], "kp": 21, "kpca": 11, "kroneck": 14, "kuhn": 8, "kvalsund": [22, 24], "kwown": [0, 24], "l": [0, 1, 2, 3, 5, 6, 7, 8, 10, 11, 12, 13, 19, 21, 24], "l0": 7, "l1": [0, 1, 3, 7, 24], "l1_l2": [1, 3], "l1regl": 5, "l2": [1, 3], "l_": 19, "l_1": 7, "l_2": [7, 13], "l_j": 12, "la": 13, "la_i": 12, "la_k": 12, "lab": [18, 24], "label": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 18, 19, 21, 24, 25], "labelencod": [7, 10], "labels": [6, 8, 9], "labels_shuffl": [0, 1, 25], "laboratori": 20, "lack": [0, 24], "lagari": 2, "lagrang": [8, 11], "lambda": [0, 1, 2, 3, 5, 6, 7, 8, 10, 12, 13, 17, 21, 24, 25], "lambda_": 11, "lambda_0": 11, "lambda_1": [5, 8, 11, 25], "lambda_2": [8, 11], "lambda_i": [8, 11], "lambda_iy_i": 8, "lambda_jy_iy_j": 8, "lambda_k": 8, "lambda_n": [5, 8, 25], "lamda": 1, "land": 8, "landmark": 8, "landscap": 13, "langl": [0, 6, 11, 21, 24, 25], "languag": [0, 1, 4, 8, 18, 19, 23, 24], "lapack": [19, 24], "laplac": 5, "laptop": [15, 18], "larg": [0, 1, 2, 4, 5, 6, 8, 9, 10, 11, 13, 18, 19, 21, 23, 24, 25], "larger": [0, 3, 5, 6, 8, 10, 11, 13, 17, 21, 24, 25], "largest": [4, 8, 11], "lasso": [0, 7, 18, 24], "lasso_sk": 6, "last": [0, 1, 3, 4, 5, 6, 7, 8, 12, 16, 17, 19, 21, 22, 24], "latent": 4, "latent_dim": 4, "latent_point": 4, "latent_space_value_rang": 4, "later": [0, 1, 4, 7, 8, 12, 13, 14, 15, 18, 24], "latest": [4, 15, 18], "latest_checkpoint": 4, "latex": 24, "latter": [0, 3, 6, 7, 8, 11, 13, 19, 21, 24, 25], "lattic": 12, "law": 0, "layer": [0, 4, 13, 24], "lbfg": [7, 9, 10], "lcc": [5, 6], "lda": 11, "ldot": [0, 6, 11, 24], "le": [5, 7, 10, 13, 17, 21, 25], "lead": [0, 1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, 17, 19, 21, 24, 25], "leaf": 9, "leaki": 1, "leakyrelu": 4, "lear": 13, "learn": [3, 4, 5, 6, 7, 8, 9, 10, 12, 19, 22, 23], "learnabl": 3, "learner": 10, "learnig": 24, "learning_r": [8, 10], "learning_rate_init": [0, 1, 24], "learning_schedul": 13, "least": [0, 7, 8, 10, 11, 17, 18, 19, 21], "leat": 13, "leav": [0, 1, 3, 5, 6, 9, 11, 24], "lectur": [0, 1, 5, 10, 11, 12, 13, 18, 19, 20, 22, 23, 25], "lecturenot": [0, 18, 23, 24], "left": [0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 19, 21, 24, 25], "leftarrow": [8, 12], "legend": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 13, 15, 24, 25], "leinonen": 24, "len": [0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 16, 17, 19, 24, 25], "length": [0, 1, 3, 4, 8, 9, 13, 16, 18, 24, 25], "length_of_sequ": 4, "leq": [0, 5, 7, 8, 13, 14, 21, 24, 25], "less": [0, 1, 3, 4, 5, 6, 8, 9, 13, 18, 21, 24, 25], "lessen": 1, "let": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 19, 21, 24, 25], "letter": [0, 16, 19, 21, 24, 25], "level": [0, 1, 5, 6, 9, 18, 19, 20, 22, 24], "li": [8, 11], "lib": [], "liblinear": 10, "librari": [0, 1, 2, 3, 4, 5, 6, 9, 10, 11, 19, 21, 23, 25], "licens": [0, 1, 18, 24], "lie": [0, 6, 11, 21, 24, 25], "life": [0, 1, 8, 12, 24], "lifetim": 13, "like": [0, 1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 15, 16, 18, 19, 21, 24, 25], "likelihood": [0, 1, 5, 9, 24, 25], "lim_": 21, "limit": [0, 5, 6, 8, 12, 19, 24, 25], "lin_clf": 8, "lin_model": [], "lin_reg": 9, "linalg": [0, 2, 5, 6, 8, 11, 13, 17, 19, 21, 24, 25], "line": [0, 3, 6, 8, 11, 13, 15, 16, 24], "line1": 8, "line2": 8, "line3": 8, "line_model": 15, "line_ms": 15, "line_predict": 15, "linear": [1, 3, 5, 6, 7, 9, 10, 11, 12, 16, 17, 18, 21], "linear_model": [0, 5, 6, 7, 8, 9, 10, 11, 13, 15, 16, 24, 25], "linear_regress": 6, "linearli": [5, 25], "linearloc": [6, 13], "linearregress": [0, 6, 7, 9, 15, 16, 24, 25], "linearsvc": 8, "liner": [1, 3], "linerar": 10, "linewidth": [0, 2, 4, 6, 8, 9, 10], "link": [0, 4, 9, 12, 15, 18, 20, 22, 24], "linlag": 5, "linpack": [19, 24], "linreg": [0, 24], "linspac": [0, 2, 3, 4, 6, 8, 9, 10, 13, 16, 17, 19, 21, 24, 25], "linu": 4, "linux": [0, 1, 18, 24], "liquid": [0, 24], "list": [1, 2, 3, 4, 9, 15, 18, 24], "listedcolormap": [9, 10], "literatur": [1, 7, 14, 23], "littl": [1, 3, 9, 12], "live": [8, 16], "ll": [0, 21, 24, 25], "lle": [0, 25], "lloyd": [4, 14], "lmb": [0, 2, 5, 6, 25], "lmbd": [0, 1, 3, 24], "lmbd_val": [0, 1, 3, 24], "lmbda": 13, "ln": [1, 13], "load": [1, 4, 6, 7, 9, 10], "load_boston": [], "load_breast_canc": [1, 7, 9, 10, 11], "load_data": [3, 4], "load_digit": [1, 3], "load_iri": [8, 9], "loc": [3, 6, 7, 8, 9, 10, 24], "local": [0, 1, 3, 7, 12, 13, 15, 25], "locat": [2, 3, 8, 15], "log": [0, 1, 2, 4, 5, 6, 7, 9, 10, 11, 13, 15, 19, 24], "log10": [0, 5, 6, 25], "log_": [0, 24], "log_clf": 10, "logarithm": [0, 5, 7, 17, 19, 24], "logic": [0, 1, 9, 24], "login": 15, "logist": [0, 1, 2, 8, 9, 10, 11, 12, 13, 18, 25], "logisticregress": [7, 9, 10, 11], "logit": 7, "logreg": [7, 9, 10, 11], "logspac": [0, 1, 3, 5, 6, 24, 25], "long": [0, 1, 3, 4, 12, 13, 24], "longer": [2, 3, 8, 10, 14, 19, 21, 24], "loocv": 6, "look": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 16, 19, 21, 24, 25], "loop": [1, 4, 6, 10, 12, 14, 16, 17, 18, 19, 24], "lose": 1, "loss": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 13, 19, 24], "loss_fil": 4, "lossfil": 4, "lost": 4, "lot": [1, 4, 6, 16], "low": [0, 6, 9, 10, 11, 24, 25], "lower": [0, 1, 3, 6, 9, 10, 16, 19, 25], "lowercas": [19, 24], "lowest": [9, 13, 21], "lr": [1, 3, 4, 10], "lstat": [], "lstm": 4, "lstm_2layer": 4, "lstsq": [0, 24, 25], "lt": 6, "lu": [0, 5, 24, 25], "lubksb": 19, "luckili": 2, "ludcmp": 19, "lux": 19, "lvert": 1, "lw": [0, 24], "m": [0, 1, 2, 3, 5, 6, 8, 9, 10, 11, 12, 13, 15, 19, 21, 22, 23, 24, 25], "m_": [9, 12], "m_1": 14, "m_h": [0, 24], "m_k": 14, "m_l": 12, "m_n": [0, 24], "m_p": [0, 24], "m_t": 13, "ma": 11, "machin": [1, 3, 4, 5, 6, 7, 9, 10, 11, 12, 15, 16, 19, 23, 25], "machinelearn": [0, 6, 16, 18, 20, 22, 23, 24], "mackai": 23, "made": [0, 1, 3, 4, 5, 6, 7, 9, 11, 12, 24, 25], "mae": [0, 24], "magic": 4, "magnitud": [1, 6, 7, 13], "mai": [0, 1, 2, 3, 5, 6, 7, 8, 9, 11, 12, 13, 18, 19, 21, 24, 25], "mail": [20, 22], "main": [0, 1, 3, 4, 5, 6, 7, 9, 19, 23, 25], "mainli": [0, 5, 6, 7, 9, 24, 25], "maintain": 6, "major": [1, 6, 9, 10, 13, 19, 24], "make": [1, 2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 15, 16, 18, 19, 21, 23, 24], "make_axes_locat": 6, "make_moon": [8, 9, 10], "make_pipelin": [0, 6, 10, 25], "makedir": [0, 6, 7, 9, 24], "malcondit": 19, "malign": [1, 7, 9], "mammographi": 5, "manag": [0, 2, 3, 15, 18, 24], "mandatori": [22, 24], "mani": [0, 1, 3, 4, 5, 6, 7, 8, 9, 11, 13, 14, 15, 16, 17, 18, 19, 21, 23, 24, 25], "manifold": 11, "manner": 3, "manual": 6, "map": [0, 1, 2, 6, 7, 8, 11, 12, 14, 21, 24], "marc": 25, "margin": [0, 5, 8], "marit": [0, 24], "mark": 24, "marker": [7, 19, 24], "markov": [18, 24], "marsaglia": 21, "mass": [0, 1, 5, 13, 25], "massag": [0, 24], "masses2016": [0, 24], "masses2016ol": [0, 24], "masses2016tre": 0, "masseval2016": [0, 24], "master": [20, 22], "mat": [18, 24], "mat1100": [18, 24], "mat1110": [18, 24], "mat1120": [18, 24], "match": [1, 4, 5, 13, 14, 15, 25], "materi": [4, 5, 7, 13, 15, 19, 20, 22, 25], "math": [3, 7, 12, 13, 19, 21, 23, 24], "mathbb": [0, 4, 5, 6, 7, 8, 11, 12, 13, 14, 17, 19, 21, 24, 25], "mathbf": [0, 5, 6, 7, 8, 13, 19, 24, 25], "mathcal": [1, 5, 6, 7, 13], "matheemat": 3, "mathemat": [0, 6, 11, 12, 13, 18, 19, 21, 23, 24], "mathemati": 24, "mathrm": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 17, 21, 24, 25], "matmul": [1, 2, 5], "matnat": 23, "matplotlib": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 21, 24, 25], "matric": [0, 1, 3, 4, 6, 7, 8, 11, 13, 16, 17, 18, 25], "matrix": [0, 2, 3, 4, 6, 7, 8, 10, 13, 17, 21], "matshow": 1, "matter": [2, 3, 13, 25], "max": [0, 1, 2, 3, 4, 9, 10, 12, 13, 22, 24], "max_depth": [0, 9, 10], "max_diff": 2, "max_diff1": 2, "max_diff2": 2, "max_it": [0, 1, 8, 13, 24], "max_iter": 14, "max_leaf_nod": 10, "max_sampl": 10, "maxdegre": [0, 6, 10, 25], "maxdepth": 10, "maxim": [1, 4, 5, 7, 8, 11], "maximum": [0, 2, 3, 5, 7, 8, 9, 10, 13, 14, 24, 25], "maxpolydegre": [5, 6, 25], "maxpooling2d": 3, "mbox": [5, 6, 25], "mcculloch": 12, "md": 11, "mdoel": 4, "mean": [1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 21, 24], "mean_absolute_error": [0, 24], "mean_divisor": 14, "mean_i": 21, "mean_matrix": 14, "mean_squared_error": [0, 4, 6, 7, 10, 15, 24, 25], "mean_squared_log_error": [0, 24], "mean_vector": 14, "mean_x": 21, "meaning": [0, 4, 7, 24], "meansquarederror": [0, 24], "meant": [3, 7, 10, 13], "measur": [0, 1, 2, 5, 6, 9, 11, 12, 14, 16, 21, 24, 25], "mechan": [0, 4, 21, 24], "median": [0, 24, 25], "medicin": 12, "medium": [4, 8, 13], "medv": [], "meet": [0, 22], "mehta": [0, 24, 25], "memori": [3, 4, 11, 12, 13, 19], "mention": [0, 12, 13, 21, 24], "mere": 0, "meshgrid": [2, 5, 6, 8, 9, 10, 11], "mess": 15, "messag": [5, 13], "messi": 2, "met": [0, 3, 8, 25], "meteorolog": 9, "meter": 6, "method": [0, 1, 2, 3, 4, 5, 7, 8, 11, 12, 14, 15, 16, 17, 18, 19, 21, 23, 25], "metion": 6, "metric": [0, 1, 3, 6, 7, 9, 10, 14, 15, 24, 25], "metropoli": [18, 24], "mev": [0, 21, 24], "mgd": 13, "mglearn": [18, 24], "mgrid": 13, "mhjensen": [], "mi": 10, "mia": [22, 24], "microsoft": 23, "mid": 1, "midel": 4, "midnight": 15, "midpoint": 9, "might": [0, 1, 2, 4, 6, 9, 13, 15, 17, 25], "migth": 17, "mild": 9, "millimet": 6, "million": [0, 24, 25], "mimic": 12, "min": [0, 2, 5, 8, 9], "min_": [0, 2, 5, 14, 17, 24, 25], "min_samples_leaf": 9, "mind": [0, 6, 13, 15, 24, 25], "mindboard": 4, "mine": [18, 24], "mini": [1, 11, 12, 13], "minibatch": [1, 11, 13], "minibathc": 13, "miniforge3": [], "minim": [0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 25], "minima": [0, 1, 7, 13, 24], "minimum": [0, 1, 2, 6, 8, 9, 11, 13, 25], "minmaxscal": [0, 25], "minor": 21, "minst": 1, "minu": 7, "mirjalili": 24, "mirror": 9, "misc": 6, "misclassif": [8, 9, 10], "misclassifi": [8, 10], "miser": 0, "mismatch": 1, "miss": [7, 10], "mistak": 4, "mit": 23, "mix": [1, 2, 24], "mixtur": 13, "mk": [9, 19], "mkdir": [0, 6, 7, 9, 24], "ml": [0, 1, 10, 13, 19, 25], "mlab": 21, "mle": [5, 7], "mlp": 1, "mlpclassifi": 1, "mlpregressor": [0, 24], "mm": 19, "mml": 25, "mn": [12, 21], "mnist": [1, 11], "mod": 21, "mode": [20, 22, 24], "model": [2, 3, 5, 7, 8, 9, 10, 11, 13, 14, 16, 18, 21, 23, 25], "model_select": [0, 1, 3, 5, 6, 7, 9, 10, 11, 15, 16, 17, 24, 25], "moder": 10, "modern": [0, 6, 7, 18, 24], "modif": [2, 12, 13], "modifi": [0, 1, 3, 5, 7, 8, 10, 12, 13, 24, 25], "modul": [0, 16, 19, 24], "modular": 21, "modulo": 21, "moe": [11, 25], "moment": [5, 6, 13, 21], "mondai": [22, 24], "monitor": 13, "monoton": [5, 12, 21], "mont": [0, 6, 18, 21, 23, 24], "montli": 16, "moor": [5, 6], "more": [0, 1, 2, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 21], "moreov": [0, 3], "morten": [22, 24, 25], "mortenhj": 24, "most": [0, 1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 21, 24, 25], "mostli": [1, 11], "motion": [0, 13], "motiv": [1, 4], "move": [0, 4, 5, 6, 7, 9, 12, 13, 14, 15, 16, 21, 25], "mpl": [7, 24], "mpl_toolkit": [2, 6, 13], "mplot3d": [2, 6, 13], "mplregressor": 1, "mse": [0, 4, 5, 6, 9, 10, 15, 16, 17, 24, 25], "mse_simpletre": 10, "mselassopredict": 5, "mselassotrain": 5, "mseownridgepredict": [6, 25], "msepredict": 5, "mseridgepredict": [0, 5, 6, 25], "msetrain": 5, "msle": [0, 24], "mt": [7, 12], "mu": [0, 6, 11, 13, 21, 24], "mu0": 21, "mu1": 21, "mu2": 21, "mu_": [6, 21], "mu_i": 6, "mu_n": 11, "mu_x": 21, "much": [0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 15, 19, 21, 24, 25], "multi": [0, 1, 3, 7, 18, 24], "multiclass": [1, 7], "multidimension": [11, 12, 24], "multilay": 1, "multinomi": 7, "multipl": [2, 4, 5, 6, 7, 12, 13, 15, 21, 25], "multipli": [3, 5, 6, 11, 13, 19, 21, 25], "multiplum": 8, "multivari": [0, 2, 10, 11, 18, 21, 24], "multivariate_norm": [11, 14], "multpli": 16, "murphi": [11, 23, 24], "must": [1, 2, 5, 6, 8, 10, 12, 13, 14, 15, 21, 25], "mutat": 7, "mutual": [1, 3, 6, 13], "mx_": 21, "my": 24, "myenv": [], "myriad": [0, 18, 24], "mz1": 21, "mz2": 21, "m\u00f8svatn": 6, "n": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 19, 21, 24, 25], "n1": 19, "n2": 19, "n_": [1, 2, 3, 8, 12, 21], "n_0": [12, 21], "n_boostrap": [6, 10], "n_bootstrap": 6, "n_categori": [1, 3], "n_cluster": 14, "n_compon": 11, "n_epoch": 13, "n_estim": 10, "n_examples_to_gener": 4, "n_featur": 1, "n_filter": 3, "n_hidden": 2, "n_hidden_neuron": [0, 1, 24], "n_i": 21, "n_input": [0, 1, 3, 25], "n_instanc": 9, "n_job": 10, "n_k": 14, "n_l": [12, 21], "n_layer": 1, "n_m": 9, "n_neuron": 1, "n_neurons_connect": 3, "n_neurons_layer1": 1, "n_neurons_layer2": 1, "n_point": 14, "n_sampl": [6, 8, 9, 10, 14], "n_split": 6, "n_step": 4, "n_t": 2, "n_x": 2, "nabla": [1, 13], "nabla_": [2, 13], "nabla_w": 13, "nag": 13, "naimi": [0, 24], "naiv": 7, "naive_kmean": 14, "name": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 18, 19, 21, 22, 24, 25], "narrow": 13, "nation": [1, 5], "nativ": [18, 24], "natur": [0, 1, 4, 8, 9, 12, 13, 21, 23, 24], "navier": 12, "navig": 15, "nb": 21, "nb_": 19, "nbconvert": 24, "nd": 14, "ndarrai": 6, "ne": [9, 10, 19, 21, 25], "nearest": [1, 3, 6, 11], "nearli": 13, "neat": 24, "neccesari": 6, "necess": 2, "necessari": [0, 1, 3, 4, 8, 14, 24], "necessarili": [0, 4, 11, 21, 24], "necesserali": 5, "neck": 7, "need": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 19, 21, 25], "neg": [0, 1, 3, 5, 6, 7, 10, 13, 19, 21, 24], "neg_mean_squared_error": 6, "neglect": 21, "neglig": 21, "neighbor": [3, 6, 11], "neither": [4, 13], "neq": [13, 14, 21], "nervou": 12, "nest": [9, 12], "nesterov": 13, "net": [2, 4, 12], "netlib": [19, 24], "network": [0, 9, 13, 18, 23, 25], "neural": [0, 13, 18, 23, 25], "neural_network": [0, 1, 2, 24], "neuralnetwork": 1, "neuron": [1, 2, 3, 4, 12], "neutral": [0, 24], "neutron": [0, 24], "never": [1, 4, 6, 9, 21], "new": [0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 17, 19, 24, 25], "new_chang": 13, "new_hobbit": 24, "newaxi": [0, 3, 6, 9], "newli": [0, 24], "newton": [1, 7, 8, 13, 21], "next": [0, 1, 2, 3, 4, 5, 6, 8, 9, 13, 14, 15, 16, 24, 25], "next_guess": 13, "next_input": 4, "ng": 1, "ni": 14, "nice": [0, 1, 5, 11, 24, 25], "niter": 13, "nitric": [], "nlambda": [0, 5, 6, 25], "nlp": 23, "nm": 21, "nm_n": [0, 24], "nmse": 6, "nn": [2, 5, 6, 12, 19, 24], "nn_model": 1, "nnmin": 2, "node": [1, 3, 9, 10, 12], "nois": [0, 4, 5, 6, 8, 9, 10, 13, 24, 25], "noise_dimens": 4, "noisi": [1, 6], "non": [0, 1, 3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 19, 21, 24, 25], "none": [0, 1, 2, 4, 5, 9, 10, 13, 21, 24, 25], "nonlinear": [3, 6, 8, 9, 11, 12], "nonneg": [6, 9, 13], "nonparametr": 6, "nonsens": 21, "nonsingular": 19, "nonumb": [3, 7, 8, 13, 19], "nor": [1, 4, 13], "norm": [0, 1, 5, 6, 8, 11, 13, 24, 25], "normal": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, 17, 18, 19, 21, 24, 25], "normali": [19, 24], "norwai": [6, 24], "notat": [0, 2, 5, 6, 13, 14, 21, 24, 25], "note": [0, 1, 2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 14, 15, 16, 18, 19, 21, 23, 24], "notebook": [0, 1, 3, 9, 15, 16, 18, 24], "noth": [1, 2, 5, 8, 12, 14, 21, 25], "notic": [4, 5, 12, 13, 19, 21, 24], "notion": 3, "novel": [3, 6, 10, 24], "novemb": [1, 22, 24], "now": [0, 2, 4, 5, 6, 7, 8, 10, 11, 12, 14, 15, 16, 18, 19, 21, 24, 25], "nowadai": [0, 1, 3, 9, 18, 24], "nox": [], "np": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 19, 21, 24, 25], "npr": 2, "nsampl": 6, "nt": 2, "nu": 21, "nuclear": [5, 25], "nuclei": [0, 21, 24], "nucleon": [0, 24], "nucleu": [0, 24], "num": 4, "num_coordin": 2, "num_hidden_neuron": 2, "num_it": 2, "num_neuron": 2, "num_neurons_hidden": 2, "num_point": 2, "num_tre": 10, "num_valu": 2, "number": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 19, 20, 22, 24], "numberid": 7, "numberparamet": 3, "numer": [0, 5, 6, 9, 10, 11, 12, 13, 18, 19, 23, 24, 25], "numpi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 21, 25], "nunmpi": [5, 25], "nx": 2, "ny": 21, "o": [0, 1, 4, 5, 6, 7, 8, 9, 11, 19, 22, 23, 24, 25], "obei": [6, 11, 13], "object": [0, 1, 4, 8, 10, 15, 19, 24], "obliqu": [5, 25], "observ": [0, 1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 21, 24], "obtain": [0, 1, 5, 6, 7, 8, 9, 10, 12, 13, 14, 17, 19, 21, 24, 25], "obviou": [5, 6, 11, 21, 25], "obviouli": 24, "obvious": [0, 4, 5, 6, 19, 24], "oc": 25, "occupi": [], "occur": [0, 6, 8, 9, 19, 21, 24], "octob": [22, 24], "od": 0, "odd": [0, 3, 7, 24, 25], "odenum": 2, "odesi": 2, "oen": 0, "off": [1, 3, 4, 5, 9, 13, 21], "offer": [6, 11, 18, 19, 20, 22, 24], "offic": [22, 24], "offici": [20, 24], "often": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 21, 24, 25], "ofter": [19, 24], "ol": [0, 13, 17, 25], "old": [1, 5, 10, 13, 15], "ols_paramet": 16, "ols_sk": 6, "ols_svd": 6, "olstheta": [0, 5], "omega": [2, 3, 6], "omega_0": 3, "omit": [0, 5, 24, 25], "onc": [1, 6, 9, 11, 13], "one": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 18, 19, 21, 22, 24, 25], "onehot": 1, "onehot_vector": 1, "onehotencod": 9, "ones": [0, 2, 5, 6, 8, 9, 10, 11, 13, 16, 19, 24, 25], "ones_lik": 4, "ong": 25, "onl": 3, "onli": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 19, 21, 24, 25], "onlin": [11, 15, 20], "onto": [5, 11, 25], "open": [0, 1, 4, 6, 7, 9, 15, 18, 20, 22, 24], "oper": [0, 1, 3, 5, 6, 10, 11, 12, 13, 15, 16, 18, 21, 24, 25], "operation": 21, "oplu": 21, "opmiz": 13, "opportun": 0, "oppos": [6, 13], "opposit": [1, 5, 8, 25], "opt": [1, 5, 24], "optim": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11, 14, 16, 17], "optimis": [1, 3], "option": [0, 1, 3, 5, 6, 8, 11, 15, 19, 25], "optmiz": [1, 8, 13, 25], "oral": 24, "orang": 0, "order": [0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 15, 19, 21, 24, 25], "ordinari": [0, 2, 3, 7, 11, 13, 17, 18], "oreilli": [23, 24], "org": [0, 3, 4, 16, 18, 19, 23, 24], "organ": [6, 7, 10, 19], "orient": [1, 5, 21, 25], "origin": [0, 3, 5, 6, 8, 11, 12, 13, 15, 19, 24, 25], "orthogn": [5, 25], "orthogon": [0, 5, 6, 8, 11, 13, 19, 24, 25], "orthonorm": [5, 25], "os": [22, 24], "oscar": 1, "oscil": [3, 13], "oskar": 24, "oskarlei": 24, "oslo": [0, 18, 20, 22, 24, 25], "osx": [0, 18, 24], "other": [0, 1, 2, 3, 5, 6, 7, 8, 10, 13, 14, 16, 18, 20, 21, 22, 23, 25], "otherwis": [0, 1, 4, 7, 13, 19, 24], "ouput": [5, 7, 12], "our": [1, 2, 3, 6, 7, 8, 9, 10, 12, 14, 15, 16, 17, 18, 19, 21], "ourmodel": 0, "ourselv": [0, 5, 6, 8, 11, 13, 24, 25], "out": [0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 18, 19, 21, 24, 25], "out_fil": 9, "outcom": [0, 7, 9, 10, 12, 21, 25], "outdoor": 9, "outer": [6, 12, 13], "outfil": 4, "outlier": [0, 8, 24, 25], "outlin": [6, 10, 11], "outlook": 9, "outperform": 10, "output": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 19, 21, 24, 25], "output_bia": 1, "output_bias_gradi": 1, "output_shap": 4, "output_weight": 1, "output_weights_gradi": 1, "outputlayer1": 12, "outputlayer2": 12, "outsid": 4, "over": [0, 1, 3, 4, 5, 6, 9, 10, 12, 13, 15, 16, 19, 24, 25], "over1": 13, "overal": [1, 10], "overcast": 9, "overcom": [12, 13], "overdetermin": [0, 24], "overfit": [0, 1, 3, 6, 9, 10, 13], "overflow": 5, "overhead": 12, "overlap": [3, 7, 8, 9], "overlin": [0, 5, 6, 9, 10, 11, 14, 19, 24, 25], "overst": 0, "overtrain": 4, "overview": 3, "own": [4, 5, 6, 8, 12, 13, 16, 18, 19], "owner": [], "ownmsepredict": 0, "ownmsetrain": 0, "ownridgetheta": [0, 6, 25], "ownypredictridg": 0, "ownytilderidg": 0, "oxid": [], "p": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 19, 21, 24, 25], "p0": 2, "p1": 2, "p_": [2, 4, 8, 9], "p_hidden": 2, "p_i": [5, 21], "p_j": 21, "p_n": 21, "p_output": 2, "p_x": 21, "pack": [0, 24], "packag": [0, 1, 3, 4, 5, 8, 11, 13, 15, 18, 21, 25], "packtpub": 24, "packtpublish": 24, "pad": [3, 4], "page": [0, 18, 24], "pai": [0, 1, 9, 13, 15], "pair": [0, 2, 3, 9, 18, 21, 24], "paltform": 15, "panda": [0, 4, 5, 6, 7, 9, 11, 18], "panel": 24, "paper": 1, "paradigm": [0, 24], "parallel": [10, 13, 18, 19, 24], "param": 2, "paramat": 2, "paramet": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 16, 17, 21], "parameter": [0, 6, 10, 24, 25], "parametr": [0, 6, 24, 25], "paramt": [3, 5], "part": [0, 1, 3, 5, 6, 10, 17, 19, 20, 21, 22, 24, 25], "partial": [0, 1, 5, 6, 7, 8, 10, 11, 12, 13, 16, 21, 24, 25], "particip": [15, 18, 20, 22, 24], "particl": [0, 4, 13, 21, 24], "particular": [0, 1, 2, 3, 5, 6, 9, 10, 11, 12, 13, 16, 21, 23, 24, 25], "particularli": [5, 6, 8, 11, 13, 21, 25], "partit": [1, 4, 9], "partli": [6, 24], "partner": 15, "pass": [2, 3, 12, 14], "past": [10, 21], "patch": [6, 21], "path": [0, 4, 6, 7, 9, 18, 24], "pathcollect": 17, "patient": 7, "patter": 4, "pattern": [0, 3, 4, 12, 23, 24], "pauli": [0, 24], "pc": [11, 15, 18], "pca": [0, 7, 18, 24, 25], "pd": [0, 4, 5, 6, 7, 9, 11, 24, 25], "pde": 2, "pdf": [0, 3, 4, 5, 6, 9, 15, 16, 23, 24], "pedagog": [0, 24, 25], "penal": 6, "penalti": [6, 13], "penros": [5, 6], "pentagon": 13, "peopl": [1, 9, 13, 18], "per": [0, 1, 6, 20, 22, 24], "percentag": [10, 11, 22], "perceptron": [0, 1, 7, 24], "peregrin": 24, "perfect": [0, 1, 13, 24], "perfectli": [4, 6], "perform": [0, 2, 3, 4, 5, 6, 8, 10, 11, 12, 13, 14, 16, 18, 19, 21, 24, 25], "performac": 4, "perhap": [0, 5, 13, 24, 25], "perimet": 1, "period": [1, 4, 21], "permiss": 15, "permut": 11, "persist": 13, "person": [5, 6, 7, 16, 20, 22, 24], "perspect": 23, "pertin": [12, 24], "petal": [8, 9], "peter": [23, 25], "phantom": 21, "phase": [6, 12], "phenomena": 21, "phi": 8, "phi_k": 8, "philosophi": 13, "phone": [22, 24], "photo": [4, 24], "phrase": [0, 24], "physic": [0, 1, 4, 7, 12, 13, 21, 22, 23, 24, 25], "pi": [2, 3, 5, 6, 7, 9, 12, 13, 21], "pick": [1, 9, 10, 11, 13, 14], "pickl": 1, "pictur": [0, 24], "pie": [18, 24], "piec": [11, 14], "pillow": [0, 18, 24], "pinv": [5, 6, 13, 25], "pip": [0, 1, 15, 18, 24], "pip3": [0, 1, 24], "pipelin": [0, 6, 8, 10, 25], "pippin": 24, "pit": 4, "pitfal": 6, "pitt": 12, "pixel": [1, 3, 4, 24], "pixel_height": [1, 3], "pixel_width": [1, 3], "place": [0, 4, 6, 8, 13, 15, 19, 24], "plai": [0, 3, 4, 5, 6, 8, 11, 18, 24, 25], "plain": [8, 10, 12, 13, 14], "plan": [6, 9, 22, 23, 24], "plane": [8, 9], "plateau": 5, "platform": [18, 24], "plausibl": 12, "pleas": [13, 22, 24], "plenti": 1, "plethora": [3, 12], "plot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19, 21, 24, 25], "plot_confusion_matrix": [7, 10], "plot_count": 6, "plot_cumulative_gain": [7, 10], "plot_data": 1, "plot_dataset": 8, "plot_decision_boundari": [9, 10], "plot_import": 10, "plot_max": 4, "plot_min": 4, "plot_model": 4, "plot_numb": 4, "plot_predict": 8, "plot_regression_predict": 9, "plot_result": 4, "plot_roc": [7, 10], "plot_surfac": [2, 6, 13], "plot_train": 9, "plot_tre": [9, 10], "plt": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 19, 21, 24, 25], "plu": [0, 3, 5, 7, 24, 25], "pm": 8, "pmatrix": 2, "pml": 23, "pn": 3, "png": [0, 4, 6, 7, 9, 24], "point": [0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 19, 21, 22, 24, 25], "point_1": 4, "point_2": 4, "poisson": [18, 21, 24], "poli": [6, 8], "poly100_kernel_svm_clf": 8, "poly3": 0, "poly3_plot": 0, "poly_featur": [8, 9, 15], "poly_features10": 9, "poly_fit": 9, "poly_fit10": 9, "poly_kernel_svm_clf": 8, "poly_model": 15, "poly_ms": 15, "poly_predict": 15, "polydegre": [0, 5, 6, 10, 25], "polygon": 13, "polym": 12, "polynomi": [0, 5, 6, 7, 8, 9, 10, 11, 15, 17, 24, 25], "polynomial_featur": [6, 15, 16, 17], "polynomial_svm_clf": 8, "polynomialfeatur": [0, 6, 8, 9, 15, 16, 25], "polytrop": [0, 6], "pool": 3, "pool_siz": 3, "poor": [1, 13], "poorli": [0, 25], "popul": [0, 5, 24, 25], "popular": [0, 1, 3, 6, 7, 8, 9, 11, 12, 15, 18, 19, 21, 25], "popularli": [0, 24], "portabl": 10, "portion": [11, 13], "pose": [0, 4, 5, 6, 11, 21, 24], "posit": [0, 1, 2, 3, 5, 7, 8, 10, 11, 13, 14, 19, 21, 24, 25], "possibl": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 18, 19, 21, 22, 24, 25], "possibli": [6, 8, 13], "posterior": 5, "postpon": [0, 25], "postul": 5, "potenti": [0, 3, 5, 6, 12, 13], "pott": 12, "power": [0, 1, 5, 6, 8, 9, 12, 13, 24, 25], "pp": [5, 6], "practic": [0, 5, 6, 7, 8, 16, 21, 25], "practition": [0, 1, 3, 24], "pre": 24, "preced": [1, 11, 12, 21], "preceed": 4, "preceq": 8, "precis": [0, 2, 5, 11, 13, 19, 21, 24, 25], "pred": 6, "predicit": 0, "predict": [0, 1, 5, 6, 7, 8, 9, 10, 15, 16, 17, 18, 23, 24, 25], "predict_prob": 1, "predict_proba": [7, 10], "predictor": [0, 5, 6, 7, 9, 10, 11, 24, 25], "prefer": [0, 1, 6, 8, 9, 11, 13, 15, 18, 24], "prepar": [0, 6, 19, 24, 25], "preprocess": [0, 4, 6, 7, 8, 9, 10, 11, 15, 16, 17], "prerequisit": 0, "presenc": 13, "present": [0, 5, 6, 7, 9, 12, 13, 19, 21, 24, 25], "preserv": [3, 11, 19], "press": [13, 15, 23], "pretrain": [1, 4], "pretti": [0, 4, 8, 9, 18, 24], "prev_centroid": 14, "prevent": [13, 21], "previou": [0, 1, 2, 3, 4, 5, 6, 8, 10, 11, 12, 13, 15, 16, 19, 21, 25], "previous": [2, 3, 9, 10, 21], "price": [0, 4, 9, 13], "primal": 8, "primari": [0, 7, 24], "prime": 21, "princip": [0, 5, 7, 18, 24, 25], "principl": [0, 6, 7, 8, 14, 24], "print": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 19, 21, 24, 25], "print_funct": [8, 9], "printout": [0, 24], "prior": [0, 5, 6, 24], "privat": 0, "prob": [1, 21], "probabilist": [0, 23, 24, 25], "probabl": [0, 1, 3, 4, 6, 7, 10, 13, 18, 24, 25], "problem": [0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 17, 18, 19, 21], "probml": 23, "proce": [0, 5, 6, 7, 8, 9, 10, 11, 13, 19, 24, 25], "procedur": [2, 4, 5, 6, 8, 10, 11, 13, 25], "proceed": 19, "process": [0, 2, 4, 6, 9, 10, 12, 13, 18, 19, 21, 23, 24], "prod": 23, "prod_": [1, 5, 7], "produc": [0, 3, 4, 5, 6, 9, 10, 11, 12, 13, 18, 19, 21, 24, 25], "product": [0, 1, 3, 5, 6, 7, 8, 12, 13, 16, 17, 18, 19, 24, 25], "profess": [0, 24], "program": [0, 1, 4, 5, 6, 8, 12, 14, 15, 18, 19, 20, 21, 22, 24, 25], "programm": 19, "progress": [1, 4, 14], "prohibit": 6, "project": [0, 1, 2, 3, 5, 11, 13, 15, 18, 20, 25], "project_root_dir": [0, 6, 7, 9, 24], "promin": 12, "promis": 8, "promot": [22, 24], "prone": [9, 15], "pronounc": [13, 18, 24], "proof": [0, 11, 12, 13, 24], "propag": [2, 3, 13], "proper": [0, 2, 6, 7], "properli": [1, 6, 8, 10, 13], "properti": [0, 1, 3, 12, 13, 16, 19, 24], "proport": [0, 1, 5, 9, 11, 13, 21, 24, 25], "propos": [1, 4, 6, 10, 24], "propto": [5, 13], "proton": [0, 24], "prove": [3, 13], "provid": [0, 1, 3, 4, 5, 6, 8, 9, 10, 12, 13, 18, 19, 21, 24, 25], "proxi": [1, 13], "prune": 9, "pseudo": [19, 21], "pseudoinv": 5, "pseudoinvers": [5, 6], "pseudorandom": [6, 21], "psychologi": [0, 24], "pt": 13, "public": [0, 15, 18, 24], "pull": 15, "punish": [0, 1, 24], "pure": [3, 9, 21], "purest": 9, "puriti": 9, "purpos": [0, 3, 10, 12, 14, 24], "push": 15, "put": 1, "py": 5, "pycod": 24, "pydata": 18, "pydot": 9, "pyhton2": 24, "pylab": [7, 24], "pypi": 18, "pyplot": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 19, 21, 24, 25], "pythagora": 5, "python": [1, 2, 3, 5, 6, 8, 11, 12, 13, 14, 21, 25], "python2": 0, "python3": [0, 18, 24], "pytorch": [0, 18, 24], "q": [5, 6, 8, 11, 21], "qp": 8, "qquad": [2, 11, 13, 19], "qr": [5, 6, 19, 25], "quad": [1, 13, 19], "quadrat": [0, 8, 9, 13, 24], "qualit": [4, 9, 21], "qualiti": [0, 9, 18, 24, 25], "quantifi": 1, "quantil": 10, "quantit": [0, 6, 9, 24], "quantiti": [0, 2, 5, 6, 7, 9, 10, 11, 12, 14, 16, 19, 21, 24, 25], "quantum": [4, 12, 23, 24], "quartil": [0, 25], "quench": 5, "queri": 9, "question": [0, 5, 6, 9, 11, 12, 13, 22, 24, 25], "qugan": 4, "quick": [4, 21], "quickli": [1, 3, 9, 11, 13], "quit": [1, 5, 6, 9, 10, 12, 15, 25], "quot": 4, "r": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 21, 25], "r2": [0, 5, 6, 24, 25], "r2_score": [0, 24], "r2score": [0, 24], "r_1": 9, "r_2": 9, "r_j": 9, "r_m": 9, "rad": [], "radial": [8, 12], "radioact": 21, "radiu": [0, 1, 25], "rain": 9, "ramp": 1, "ran0": 21, "ran1": 21, "ran2": 21, "ran3": 21, "rand": [0, 4, 5, 6, 9, 10, 13, 15, 19, 24, 25], "randint": [6, 9, 13], "randn": [0, 1, 2, 5, 6, 9, 11, 13, 15, 24, 25], "random": [0, 1, 2, 3, 4, 5, 6, 8, 9, 13, 14, 15, 16, 17, 18, 19, 24, 25], "random_forest_model": 10, "random_index": 13, "random_indic": [1, 3], "random_st": [7, 8, 9, 10, 11], "randomforestclassifi": 10, "randomli": [1, 6, 9, 13, 14], "rang": [0, 1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 19, 21, 24, 25], "rangl": [0, 6, 11, 21, 24, 25], "rangle_x": 21, "rank": [5, 25], "rankdir": 4, "raphson": [1, 8, 13], "rapidli": 0, "rare": [1, 13], "raschka": [24, 25], "rasckha": 24, "rate": [1, 2, 3, 4, 8, 9, 10, 12, 13], "rather": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 19, 21, 24, 25], "ratio": [4, 7, 9, 10, 11], "rational": [0, 24], "ravel": [5, 6, 7, 8, 9, 10, 11, 13, 19], "raw": 3, "rbf": [8, 11, 12], "rbf_kernel_svm_clf": 8, "rbf_pca": 11, "rc": 21, "rcond": [0, 24, 25], "rcparam": [1, 3, 7, 8, 9, 10, 21, 24], "re": [2, 4, 13, 15], "reach": [1, 4, 5, 6, 9, 10, 12, 13, 14], "read": [0, 2, 3, 4, 5, 6, 7, 8, 11, 12, 16, 17, 19, 21, 23], "read_csv": [0, 6, 7, 9], "read_fwf": [0, 24], "reader": [0, 6, 19, 21, 24], "readi": [0, 1, 5, 6, 8, 10, 11, 12, 19, 24], "readili": 1, "readm": 15, "readthedoc": 18, "real": [0, 1, 4, 7, 10, 11, 12, 16, 19, 25], "real_loss": 4, "real_output": 4, "realist": [8, 24], "realiti": 21, "realiz": [1, 12], "realli": [0, 1, 24], "rearrang": 13, "reason": [0, 1, 3, 4, 10, 13, 23, 24], "reassign": 1, "recal": [5, 6, 9, 10, 11, 12, 19, 21, 24, 25], "recast": 3, "receiv": [1, 3, 10, 12, 21], "recent": [0, 6, 13, 23], "recept": [3, 12], "receptive_field": 3, "recip": [0, 6, 7, 19, 24, 25], "reciproc": 5, "recogn": [0, 4, 5, 10, 24], "recognit": [0, 1, 3, 12, 23, 24], "recommen": 24, "recommend": [0, 2, 3, 4, 5, 6, 8, 13, 15, 18, 19, 23], "reconsid": 9, "reconstruct": 11, "record": [10, 20, 22, 24], "recreat": 15, "rectangl": [9, 13], "rectangular": [5, 25], "rectifi": [1, 3, 12], "recur": [0, 18, 24], "recurr": [0, 1, 18, 24], "recurs": [9, 18, 19, 24], "red": [0, 3, 4, 6, 8, 9], "redefin": [0, 10, 24, 25], "reduc": [1, 3, 5, 6, 9, 10, 11, 13, 24], "reduct": [0, 10, 11, 18, 21, 24, 25], "refer": [0, 1, 2, 3, 5, 6, 11, 12, 13, 14, 19, 23, 24, 25], "referenc": 2, "refin": 12, "refit": 6, "reflect": [0, 1, 4, 5, 21, 24], "refresh": [18, 24], "refreshprogrammingskil": 24, "reg": [10, 11], "regard": [1, 9, 13], "regardless": [12, 16], "region": [3, 4, 6, 9, 12], "regist": [6, 21], "reglasso": 5, "regr_1": [0, 9], "regr_2": [0, 9], "regr_3": [0, 9], "regress": [1, 8, 11, 12, 16, 18, 19], "regressor": [0, 7, 10], "regridg": [0, 5, 6, 25], "regular": [0, 3, 4, 5, 6, 7, 9, 13, 17, 22, 24, 25], "regularli": 15, "reilli": [0, 23, 24], "reinforc": [0, 8, 18, 24], "reiter": 1, "reject": 7, "rel": [0, 4, 6, 7, 9, 12, 13, 21, 24, 25], "relat": [0, 1, 3, 4, 5, 11, 13, 14, 19, 21, 24, 25], "relationship": [0, 4, 9, 24], "relativeerror": [0, 24, 25], "releas": [1, 18, 24], "relev": [0, 1, 5, 7, 11, 18, 21, 24], "reli": [0, 6, 8], "reliabl": [7, 21], "relu": [3, 4, 24], "remain": [1, 2, 4, 6, 12, 19, 21], "remaind": 21, "reman": 2, "remark": 1, "rememb": [0, 8, 13, 19, 24], "remind": [0, 5, 11, 13, 19, 21], "remot": 15, "remov": [4, 5, 6, 25], "renam": 15, "render": [0, 24, 25], "reorder": [5, 7, 25], "reorgan": [0, 24], "repeat": [0, 1, 3, 4, 5, 6, 9, 10, 11, 13, 14, 19, 21, 24, 25], "repeated": 24, "repeatedli": [0, 6, 10, 13], "repet": 3, "repetit": [6, 24, 25], "rephras": 13, "replac": [0, 1, 3, 4, 5, 6, 10, 12, 14, 18, 24, 25], "replica": 6, "repo": 15, "report": 24, "repositori": [4, 24], "repres": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 21, 24, 25], "represent": [0, 1, 3, 6, 21, 24], "representd": 3, "reproduc": [0, 5, 6, 9, 12, 15, 16, 18, 21, 24, 25], "repuls": [0, 24], "request": [0, 13], "requir": [0, 1, 3, 4, 5, 6, 8, 9, 11, 12, 13, 15, 17, 19, 24, 25], "res1": 2, "res2": 2, "res3": 2, "res_analyt": 2, "res_analytical1": 2, "res_analytical2": 2, "res_analytical3": 2, "resaml": 6, "resampl": [0, 7, 10, 18, 24, 25], "rescal": [0, 11, 12, 25], "rescu": 5, "reseach": 6, "research": [0, 4, 13, 18, 23, 24], "resembl": [6, 21], "reserv": [1, 5, 6, 21], "reshap": [0, 1, 2, 3, 4, 6, 8, 9, 10, 19, 24, 25], "residenti": [], "residu": [0, 5, 13, 24], "resiz": [5, 25], "resourc": 24, "respect": [0, 1, 2, 3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 16, 17, 21, 24, 25], "respond": 12, "respons": [0, 7, 9, 12, 24, 25], "rest": [0, 5, 25], "restat": [0, 12, 24], "restor": 4, "restored_discrimin": 4, "restored_gener": 4, "restrict": [0, 3, 9, 12, 24], "result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 24], "retail": [], "retain": [5, 6, 25], "return": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 13, 14, 16, 17, 19, 21, 24, 25], "return_data": 14, "return_sequ": 4, "return_x_i": 9, "reus": [1, 3, 6], "reveal": [0, 12, 24], "revers": [1, 19], "review": [18, 19], "revisit": 14, "revolut": 24, "reward": [0, 4, 24], "rewrit": [0, 3, 5, 6, 7, 8, 10, 11, 12, 13, 16, 19, 21], "rewritten": [2, 6, 8, 10, 21], "rewrot": 13, "rf": 10, "rgb": 3, "rgoj5yh7evk": 18, "rh": 6, "rho": [0, 10, 13], "rho_1": 10, "rho_2": 10, "rho_m": 10, "rich": [0, 24], "ride": 9, "rideclass": 9, "ridedata": 9, "ridg": [7, 11, 13, 18, 24], "ridge_paramet": 17, "ridge_sk": 6, "ridgetheta": 5, "right": [0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 16, 17, 19, 21, 24, 25], "right_sid": 2, "rightarrow": [0, 1, 5, 6, 8, 11, 12, 13, 21, 24, 25], "rigor": [0, 24, 25], "ring": 6, "rise": [0, 24], "risk": [0, 13, 24], "rival": 4, "river": [], "rlm": 24, "rm": 21, "rmse": [], "rmsporp": 13, "rmsprop": [1, 3, 4, 13], "rnd_clf": 10, "rng": 21, "rnn": [4, 12], "rnn1": 4, "rnn2": 4, "rnn_2layer": 4, "rnn_input": 4, "rnn_output": 4, "rnn_train": 4, "rntrick1": 21, "rntrick2": 21, "rntrick3": 21, "rntrick4": 21, "ro": [0, 13, 24], "robert": 23, "robust": [0, 24], "robustscal": [0, 25], "roc": [7, 10], "role": [0, 2, 5, 6, 8, 18, 24, 25], "roll": 6, "room": [0, 22, 24], "root": [0, 5, 9, 13, 15, 21, 25], "rot": 24, "rotat": [1, 8, 9, 10], "rotation_matrix": 9, "roughli": [1, 3], "round": [7, 9, 13], "routin": [13, 19, 24], "row": [0, 1, 2, 5, 6, 9, 11, 16, 19, 24, 25], "rr": [5, 25], "rrr": [5, 25], "rug": 13, "rule": [0, 1, 5, 6, 13, 24, 25], "run": [0, 1, 2, 4, 5, 6, 8, 9, 11, 13, 15, 18, 24, 25], "runtim": [1, 6, 14, 15], "rust": [0, 18, 19, 24], "rvert": 1, "rvert_2": 1, "s_": [3, 6], "s_1": 6, "s_i": [6, 7], "s_j": 6, "s_k": 6, "saddl": 13, "sai": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 19, 21, 24, 25], "said": [6, 9, 13], "sake": [0, 5, 7, 11, 24, 25], "sale": [0, 24], "sam": 24, "same": [0, 1, 2, 3, 4, 5, 6, 8, 9, 11, 12, 14, 15, 16, 19, 21, 24, 25], "samm": 10, "sampl": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 13, 14, 18, 19, 21, 24, 25], "sample_vari": 14, "sampleexptvari": 21, "samwis": 24, "sastri": 11, "satisfactori": [0, 24], "satisfi": [1, 2, 3, 6, 8, 13, 19, 21], "satur": [1, 6], "save": [0, 4, 6, 7, 9, 13, 24], "save_fig": [0, 6, 7, 9, 10, 24], "savefig": [0, 4, 6, 7, 9, 21, 24], "savetxt": 4, "saw": [5, 25], "scalabl": 10, "scalar": [2, 5, 6, 10, 25], "scale": [0, 1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 18, 19, 22, 24], "scale_mean": 4, "scale_std": 4, "scaler": [0, 7, 8, 9, 10, 11, 17, 25], "scan": [5, 7], "scari": 5, "scatter": [0, 1, 6, 7, 8, 9, 14, 15, 17, 24], "scenario": [6, 13], "schedul": 13, "scheme": [1, 13], "schrage": 21, "sch\u00f8yen": 6, "scienc": [0, 1, 10, 12, 13, 18, 20, 21, 22, 23], "scientif": [0, 18, 24], "scientist": [0, 24], "scikit": [3, 5, 6, 8, 9, 10, 13, 15, 16, 18, 19, 23], "scikit_learn": 0, "scikitlearn": 24, "scikitplot": [7, 10], "scipi": [0, 3, 5, 6, 13, 18, 19, 24, 25], "scl": 6, "scm": 15, "score": [0, 1, 3, 6, 7, 9, 10, 11, 15, 16, 22, 24, 25], "scores_kfold": 6, "scratch": [1, 13, 16], "sdg": 13, "seaborn": [0, 1, 3, 6, 7, 24], "seamless": [0, 18, 24], "search": [0, 1, 3, 5, 9, 13, 15, 24], "sebastian": 24, "sebastianraschka": 24, "sec": 6, "second": [0, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14, 15, 16, 18, 19, 21, 22, 24, 25], "secondeigvector": 11, "secondli": 12, "section": [4, 11, 16, 19, 21, 25], "sector": 0, "see": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 15, 16, 18, 19, 21, 24, 25], "seed": [0, 1, 2, 3, 4, 5, 6, 8, 9, 11, 13, 14, 21, 24, 25], "seed_imag": 4, "seek": [1, 2, 8], "seem": [1, 3, 4], "seemingli": [0, 24], "seen": [0, 1, 3, 5, 10, 12, 21], "segment": 13, "seismic": 6, "seldomli": [0, 24], "select": [1, 5, 6, 8, 9, 10, 11, 15, 20, 21, 22, 23, 24, 25], "selevet": 15, "self": [1, 5, 25], "sell": 4, "semest": [7, 20], "semi": [8, 13], "semilogx": 6, "send": [5, 12, 13, 22, 24], "senior": [20, 22], "sens": [0, 4, 6, 8, 24], "sensibl": 3, "sensit": [0, 5, 6, 9, 13, 24, 25], "sent": 2, "sentenc": [4, 12], "separ": [0, 1, 2, 4, 6, 8, 9, 12, 14, 18, 21, 24], "septemb": 24, "sequenc": [3, 4, 7, 9, 10, 12, 13, 18, 19, 21, 24], "sequenti": [1, 3, 4, 10, 12, 21], "seri": [0, 1, 2, 3, 4, 5, 6, 10, 11, 12, 13, 19, 24, 25], "serif": [7, 21, 24], "serv": [0, 1, 2, 3, 5, 7, 13, 23, 24, 25], "session": [1, 15, 20, 22, 24], "set": [1, 4, 5, 6, 7, 8, 10, 11, 13, 14, 16, 17, 18, 19, 21, 22], "set_major_formatt": 6, "set_major_loc": 6, "set_tick": [1, 8], "set_ticklabel": 1, "set_titl": [0, 1, 2, 3, 7, 12, 14, 24], "set_xlabel": [0, 1, 2, 3, 7, 12, 24], "set_xlim": [7, 12], "set_xticklabel": 1, "set_ylabel": [0, 1, 2, 3, 7, 24], "set_ylim": [7, 12], "set_ytick": 7, "set_yticklabel": [1, 6], "set_zlim": 6, "seth": 4, "setminu": 6, "setosa": [8, 9], "setosa_or_versicolor": 8, "setp": 6, "setup": [1, 4, 6, 8, 18, 24, 25], "sever": [0, 3, 5, 6, 7, 8, 9, 11, 12, 13, 16, 18, 19, 21, 24, 25], "sgd": [1, 3], "sgd_clf": 8, "sgdclassifi": 8, "sgdreg": 13, "sgdregressor": 13, "sgn": [5, 25], "shallow": 13, "shape": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 19, 24, 25], "share": [1, 3, 15, 24], "shareabl": 15, "she": 7, "shift": [1, 6, 12, 15, 21], "ship": 3, "shire": 24, "short": [4, 5], "shortcom": 13, "shorten": 4, "shorter": 21, "shorthand": 24, "shortli": [19, 24], "should": [0, 2, 3, 5, 6, 8, 9, 11, 12, 15, 19, 21, 24, 25], "show": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 21, 24, 25], "show_shap": 4, "shown": [0, 4, 5, 8, 12, 13, 19, 25], "shrink": [3, 5, 6, 8, 11, 25], "shrinkag": [5, 6, 25], "shrunk": 11, "shuffl": [0, 1, 4, 6, 13, 25], "side": [0, 2, 5, 8, 12, 13, 19, 24], "sigh": [18, 24], "sigma": [0, 1, 5, 6, 7, 10, 11, 12, 13, 19, 21, 24, 25], "sigma0": 21, "sigma1": 21, "sigma2": 21, "sigma_": [5, 19, 24, 25], "sigma_0": [5, 25], "sigma_1": [5, 25], "sigma_2": [5, 25], "sigma_fn": [7, 12], "sigma_i": [0, 5, 24, 25], "sigma_j": [5, 25], "sigma_m": [6, 21], "sigma_n": [11, 21], "sigma_t": 13, "sigma_x": 21, "sigmoid": [1, 2, 4, 7, 8, 10, 12], "sigmundson": 6, "sign": [1, 2, 7, 8, 10, 21, 22], "signal": [1, 3, 10, 12], "signifi": 4, "signific": 1, "significantli": [1, 13, 21], "sim": [4, 5, 6, 13, 21], "similar": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 14, 18, 19, 24], "similarli": [0, 1, 3, 5, 8, 10, 13, 21, 24, 25], "simpl": [1, 2, 3, 5, 6, 7, 8, 10, 11, 12, 14, 16, 17, 18, 19, 21], "simplepredict": 10, "simpler": [0, 1, 5, 6, 7, 13, 16, 18, 24], "simplernn": 4, "simplest": [0, 1, 3, 4, 9, 10, 12, 14, 24], "simpletre": 10, "simpli": [0, 1, 2, 4, 5, 6, 8, 9, 10, 11, 12, 18, 19, 21, 24, 25], "simplic": [2, 5, 6, 7, 8, 9, 10, 11, 12, 14, 25], "simplicti": [5, 25], "simplifi": [0, 6, 9, 18, 24], "simplist": [3, 6, 21], "simul": 6, "simultan": 6, "sin": [0, 1, 2, 3, 4, 9, 12, 13, 19, 24], "sinc": [0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 13, 16, 19, 21, 23, 24, 25], "sine": [3, 12], "singl": [0, 1, 2, 3, 5, 6, 7, 8, 9, 12, 13, 19, 21, 24, 25], "singular": [0, 6, 13, 19, 24], "sinusoid": 3, "site": [0, 20], "situat": [0, 4, 5, 7, 13, 21, 24, 25], "six": [3, 21], "size": [0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 13, 19, 21, 24], "sketch": 10, "ski": 9, "skill": 0, "skip": 11, "skl": [0, 6, 24, 25], "sklearn": [0, 1, 3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 17, 24, 25], "skplt": [7, 10], "sl": 6, "slack": 8, "slice": [2, 19, 24], "slide": [0, 3, 16, 21, 24, 25], "slight": [6, 13], "slightli": [1, 2, 3, 5, 6, 7, 10, 21, 25], "slope": [8, 11, 12], "slow": [0, 2, 8, 13, 25], "slower": [5, 19, 24, 25], "slowest": 19, "slowli": 12, "slp": 1, "small": [0, 1, 2, 3, 5, 6, 8, 9, 10, 11, 12, 13, 18, 19, 21, 24, 25], "smaller": [0, 1, 2, 5, 6, 8, 9, 11, 13, 21, 24], "smallest": [0, 4, 14, 24], "smallest_row_index": 14, "smooth": [0, 3, 6, 13, 24], "sn": [0, 1, 3, 6, 7, 24], "sne": 11, "so": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 21, 22, 24, 25], "soar": 6, "social": 0, "soft": [1, 7, 10, 12], "soften": 8, "softmax": [3, 7], "softwar": [0, 8, 18, 19], "sol": 8, "sole": [0, 6, 24], "solid": [0, 7], "solut": [0, 1, 2, 3, 5, 6, 8, 10, 11, 13, 19, 21, 24, 25], "soluton": 2, "solv": [0, 1, 3, 5, 6, 8, 10, 11, 12, 13, 16, 19, 24, 25], "solve_expdec": 2, "solve_ode_deep_neural_network": 2, "solve_ode_neural_network": 2, "solve_pde_deep_neural_network": 2, "solveod": 2, "solveode_popul": 2, "solver": [2, 7, 8, 9, 10, 19, 24], "some": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 21, 24], "some_model": 6, "somehow": 4, "someon": 16, "someth": [0, 1, 3, 4, 7, 9, 11, 15, 21, 24, 25], "sometim": [0, 1, 11, 12, 13, 14, 25], "soon": [19, 22, 25], "sophist": [0, 24], "sopt": 13, "sort": [5, 6, 9, 11, 21], "sound": [3, 5], "sourc": [0, 1, 3, 6, 18, 19, 21, 24], "space": [0, 1, 4, 5, 8, 9, 11, 12, 13, 14, 21, 25], "span": [0, 3, 5, 9, 11, 19, 24, 25], "spare": 1, "spars": [3, 6, 19, 24], "sparse_mtx": [19, 24], "sparsecategoricalcrossentropi": 3, "sparsiti": 10, "spatial": [1, 2, 3, 12], "speak": 21, "special": [6, 7, 10, 12, 13, 19, 21, 24], "specif": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 16, 18, 19, 21, 23, 24, 25], "specifi": [0, 3, 5, 6, 7, 9, 11, 13, 14, 21, 24], "specifici": [0, 10, 24], "spectacular": 3, "spectral": 1, "speech": [0, 1, 3, 4, 12], "speed": [1, 2, 4, 13], "spend": [16, 21], "sphere": [0, 25], "spin": 6, "spite": 0, "spline": 8, "split": [1, 3, 4, 5, 6, 8, 9, 10, 11, 14, 16, 17, 21, 24], "splite": 0, "splitter": [1, 10], "spontan": 21, "spot": 3, "spread": [0, 11, 21, 24, 25], "springer": [23, 24], "spuriou": 13, "sqrsignal": 3, "sqrt": [3, 4, 5, 6, 8, 10, 11, 13, 21, 25], "squar": [1, 2, 3, 4, 7, 8, 9, 11, 13, 14, 15, 17, 18, 19, 21], "squarederror": 10, "squaredeuclidean": 14, "squash": 12, "srtm": 6, "srtm_data_norway_1": 6, "stabil": 5, "stabl": [0, 4, 5, 6, 9, 16, 18, 24, 25], "stack": [3, 4], "stage": [5, 13, 15], "stai": [0, 2, 4, 5, 11, 24, 25], "stand": [0, 5, 9, 12, 24, 25], "standard": [0, 1, 4, 5, 6, 7, 8, 10, 12, 17, 19, 21, 24], "standardscal": [0, 6, 7, 8, 9, 10, 11, 17, 25], "stanford": 13, "start": [0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 19, 21, 22, 24, 25], "start_tim": 14, "stat": 6, "state": [1, 2, 4, 5, 6, 7, 8, 10, 11, 12, 13, 18, 21, 24, 25], "statement": [0, 7, 19, 24], "statist": [0, 1, 3, 4, 7, 9, 10, 11, 12, 13, 14, 19, 23, 25], "statu": [0, 7, 15, 24], "stavang": 6, "std": [0, 4, 6, 24, 25], "steep": 13, "step": [0, 1, 2, 4, 6, 7, 9, 10, 11, 12, 13, 14, 15, 19, 24], "step_fn": [7, 12], "step_length": 13, "steps_list": 9, "stereo": 3, "still": [0, 2, 3, 5, 6, 11, 13, 21, 25], "stimuli": 12, "stk": [23, 24], "stk2100": [23, 24], "stk3155": [15, 20, 22], "stk4021": [23, 24], "stk4051": [23, 24], "stk4155": [20, 22], "stk5000": 23, "stochast": [0, 1, 5, 6, 8, 11, 12], "stock": 4, "stoke": 12, "stone": [0, 7], "stop": [1, 4, 9, 13, 14], "storag": [5, 25], "store": [0, 1, 2, 3, 6, 11, 13, 21, 24], "storehaug": [22, 24], "str": [1, 3, 4], "straight": [0, 6, 8, 13, 24], "straightforward": [0, 2, 3, 5, 6, 8, 9, 10, 13, 19, 24, 25], "strategi": [0, 1, 9, 24], "stratifi": 6, "strength": [0, 5, 14, 25], "stretch": 11, "strict": [8, 13], "strictli": [8, 13], "stride": [4, 19], "strike": 6, "string": 1, "stroke": 7, "strong": [3, 6, 9, 10, 12, 19, 21], "strongli": [0, 8, 15, 18, 19], "stronli": [], "structur": [0, 1, 2, 3, 6, 9, 10, 12, 18, 24], "stuck": [1, 13], "student": [0, 15, 20, 22, 23, 24], "studi": [0, 3, 4, 5, 6, 7, 8, 11, 12, 13, 18, 23, 24, 25], "studier": 23, "style": [7, 9, 19, 24], "st\u00f8land": 22, "sub": [9, 12], "subdivid": [0, 19, 24], "subfield": 0, "subject": [6, 8, 21], "submit": 24, "subplot": [0, 1, 3, 4, 6, 7, 8, 9, 10, 14, 24], "subplots_adjust": [8, 21], "subprogram": [19, 24], "subract": [0, 25], "subroutin": [0, 24], "subscript": 1, "subsequ": [1, 4, 5, 6, 12, 19, 21, 25], "subset": [1, 6, 9, 12, 13, 18, 24], "subspac": [0, 8, 11, 25], "substanti": [9, 10], "substep": 11, "substitut": [3, 6, 12, 16, 19], "subsubset": 9, "subtask": 6, "subtl": 1, "subtract": [0, 4, 5, 6, 11, 13, 19, 21, 25], "subtre": 9, "succeed": [0, 4, 24], "success": [3, 7, 9, 13, 21], "successfulli": [4, 9], "sudo": [0, 18, 24], "suffer": [0, 1, 2, 5, 10, 24, 25], "suffici": [1, 6, 8, 11, 13], "suggest": [1, 13, 23], "suit": [8, 12], "suitabl": [0, 15, 21, 25], "sum": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 19, 21, 24, 25], "sum_": [0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 19, 21, 24, 25], "sum_i": [0, 2, 5, 6, 8, 13, 25], "sum_j": 6, "sum_ja_": 0, "sum_k": [6, 8, 12, 19], "sum_logist": 13, "sum_m": 3, "sum_n": 3, "sum_nx_": 3, "summar": [5, 6, 9], "summari": [1, 3, 4, 10, 20], "summat": [0, 3, 16, 25], "sunni": 9, "super": [5, 25], "superfici": 3, "superscript": [1, 12], "supervis": [0, 5, 6, 7, 9, 12, 18, 24, 25], "supplement": 7, "support": [0, 1, 9, 10, 11, 13, 18, 24, 25], "suppos": [0, 5, 6, 7, 8, 10, 11, 12, 13, 19, 24, 25], "suppress": [5, 13], "sure": [0, 1, 4, 6, 16], "surf": 6, "surfac": [0, 6, 24], "surpass": 6, "surpris": [0, 24], "surround": [3, 18], "survei": [0, 5, 6, 24], "svc": [8, 9, 10], "svd": [0, 6, 11, 24], "svdinv": 5, "svm": [8, 9, 10, 11], "svm_clf": [8, 10], "swath": [5, 25], "switch": 0, "sy": 13, "symbol": [1, 5, 11, 13, 18, 21, 24, 25], "symmeteri": 1, "symmetr": [0, 5, 8, 11, 12, 13, 19, 24, 25], "symmetri": 6, "sympi": [0, 18, 24], "synonim": 21, "syntax": 13, "system": [0, 1, 3, 4, 6, 7, 9, 10, 12, 13, 15, 18, 19, 24], "systemat": [4, 6], "t": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 24], "t0": [3, 6, 13], "t1": [2, 13], "t2": 2, "t3": 2, "t_": 2, "t_0": [2, 9, 13], "t_1": 13, "t_b": 10, "t_i": [1, 2, 5, 12, 25], "t_j": 12, "t_k": 9, "tabl": [9, 21, 22, 24], "tabul": [0, 24], "tabular": 24, "tackl": 4, "tag": [2, 3, 4, 5, 6, 7, 12, 13, 14, 19, 21, 25], "taht": [0, 24], "tail": 21, "tailor": [2, 8, 11, 24], "taiwan": [0, 24], "take": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 17, 18, 19, 21, 24, 25], "taken": [0, 1, 3, 6, 10, 13, 19], "tan": 3, "tangent": [1, 4, 12, 13], "tanh": [1, 4, 7, 8, 12], "target": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 15, 16, 24, 25], "target_nam": 9, "task": [0, 1, 3, 6, 9, 11, 12, 14, 24], "tau": [3, 5, 21], "taught": 24, "tax": [], "taylor": [2, 13], "taylornr": 13, "tc": 8, "teach": [15, 20, 24], "team": 1, "teaser": 0, "technic": [0, 5, 6, 13], "techniqu": [0, 1, 8, 10, 13, 18, 21, 23, 24, 25], "technologi": [0, 1], "tell": [0, 4, 6, 10, 11, 13, 16, 21], "temp": 1, "temp1": 1, "temp2": 1, "temperatur": [0, 9, 24], "temporarili": 1, "ten": [3, 24], "tend": [3, 5, 6, 8, 9, 10, 12, 13, 14], "tendenc": [0, 24], "tension": 6, "tensor": 3, "tensorflow": [0, 2, 4, 8, 14, 18, 19, 23, 24, 25], "term": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 21, 24, 25], "term1": [5, 6, 11], "term2": [5, 6, 11], "term3": [5, 6, 11], "term4": [5, 6, 11], "termin": [0, 4, 5, 9, 10, 13, 15, 25], "terminarl": 15, "terrain": 6, "terrain1": 6, "test": [3, 4, 5, 6, 7, 8, 9, 10, 13, 16, 19, 21, 24], "test_acc": 3, "test_accuraci": [1, 3], "test_error": 6, "test_imag": [3, 4], "test_ind": 6, "test_input": 4, "test_label": [3, 4], "test_loss": 3, "test_pr": 1, "test_predict": 1, "test_rnn": 4, "test_scor": [7, 10], "test_siz": [0, 1, 3, 5, 6, 10, 15, 17, 25], "test_split": 9, "testerror": [0, 6, 25], "testi": 4, "testpredict": 4, "testx": 4, "text": [0, 1, 2, 4, 5, 8, 9, 11, 13, 15, 19, 21, 23, 25], "textbook": [16, 25], "textual": 9, "textur": 1, "tf": [1, 3, 4, 13, 14], "th": [0, 1, 2, 5, 6, 7, 9, 12, 13, 14, 19, 21, 24, 25], "than": [0, 1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 17, 18, 21, 24, 25], "thank": [4, 6], "theano": [1, 18, 24], "thei": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 15, 16, 19, 21, 24, 25], "them": [0, 1, 3, 4, 6, 8, 9, 10, 11, 12, 13, 19, 24, 25], "theme": [0, 15, 24], "themselv": [0, 21, 24], "thenc": 6, "theorem": [2, 6, 7, 25], "theoret": [0, 4, 10], "theori": [0, 1, 3, 8, 9, 12, 13, 18, 23, 24], "thereaft": [0, 5, 6, 11, 12, 19, 24], "therebi": [0, 5, 7, 11, 24, 25], "therefor": [0, 1, 2, 3, 4, 6, 7, 8, 11, 13, 21, 24, 25], "therein": 11, "thereof": [0, 6, 13, 24], "theta": [0, 1, 4, 5, 6, 7, 13, 16, 21, 24, 25], "theta_": [0, 1, 6, 7, 13, 24, 25], "theta_0": [0, 5, 6, 7, 16, 24, 25], "theta_0x_": [0, 24, 25], "theta_1": [0, 5, 6, 7, 24, 25], "theta_1x_": [0, 24, 25], "theta_1x_0": [0, 24], "theta_1x_1": [0, 7, 24], "theta_1x_2": [0, 24], "theta_1x_i": [7, 25], "theta_2": [0, 24, 25], "theta_2x_": [0, 24, 25], "theta_2x_0": [0, 24], "theta_2x_1": [0, 24], "theta_2x_2": [0, 7, 24], "theta_2x_i": 25, "theta_3x_i": 25, "theta_4x_i": 25, "theta_i": [0, 1, 5, 24, 25], "theta_j": [0, 5, 6, 24, 25], "theta_linreg": 13, "theta_p": 7, "theta_px_p": 7, "theta_t": 13, "thetavalu": 5, "thi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 25], "thing": [0, 1, 2, 4, 5, 7, 9, 15, 16, 21, 24], "think": [0, 1, 3, 4, 6, 9, 12, 13, 14, 21, 24, 25], "third": [0, 3, 6, 13, 22, 24], "thirti": 7, "thorughout": 24, "those": [0, 3, 5, 6, 8, 9, 10, 11, 19, 24, 25], "though": [1, 2, 3, 4, 13, 16, 17, 19, 21], "thought": [6, 14, 21], "thousand": [0, 1, 25], "three": [0, 1, 3, 5, 6, 8, 9, 12, 19, 20, 21, 22, 24, 25], "threshold": [1, 3, 9, 10, 11, 12, 13], "through": [0, 1, 2, 3, 4, 5, 6, 8, 11, 12, 13, 14, 15, 18, 19, 21, 24, 25], "throughout": [0, 4, 5, 14, 15, 18, 19, 21, 24], "throw": [3, 6, 21], "thu": [0, 1, 2, 5, 6, 7, 8, 10, 11, 12, 13, 22, 24, 25], "thumb": [0, 6, 25], "thursdai": [], "tibshirani": [6, 23, 24], "tick_param": 6, "ticker": [6, 13, 21], "tif": 6, "tight_layout": [1, 7], "tightli": 11, "tild": [0, 5, 6, 7, 11, 21, 24, 25], "till": [0, 4, 7, 8, 9, 10, 12, 19, 24, 25], "time": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 24, 25], "timeit": 4, "timer": 4, "tini": 1, "tip": 3, "titl": [0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 13, 15, 21, 24], "tmp": 13, "tn": [2, 3, 7], "to_categor": [1, 3, 4], "to_categorical_numpi": 1, "to_numer": [0, 6, 24], "todai": 3, "togeth": [0, 3, 6, 8, 11, 13, 18, 24], "toi": 14, "told": 13, "toler": [2, 14], "tolist": 4, "tomographi": 12, "too": [0, 2, 4, 5, 6, 9, 11, 13, 17, 21, 23, 25], "took": [8, 24], "tool": [0, 1, 3, 6, 13, 15, 18, 25], "toolbox": 8, "top": [0, 3, 5, 6, 9, 10, 18, 24], "topic": [0, 5, 6, 7, 8, 18, 25], "topolog": [3, 12], "topologi": [1, 12], "torkjellsdatt": [22, 24], "toss": [10, 21], "total": [0, 1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 19, 21, 22, 24, 25], "total_loss": 4, "totalclustervari": 14, "totalscatt": 14, "toward": [1, 2, 7, 12, 13, 15], "town": [], "tp": [4, 7], "tpng": 9, "tpu": [13, 18, 24], "tqdm": 6, "tr": [], "track": [3, 13, 14, 15, 19, 25], "tract": [], "tractabl": [0, 24, 25], "trade": [5, 9], "tradeoff": [0, 5, 24, 25], "tradit": [0, 1, 4, 6, 24], "train": [2, 3, 5, 6, 8, 9, 10, 11, 12, 13, 16, 17], "train_accuraci": [0, 1, 3, 24], "train_dataset": 4, "train_end": [0, 1, 25], "train_error": 6, "train_imag": [3, 4], "train_ind": 6, "train_label": [3, 4], "train_pr": 1, "train_siz": [0, 1, 3, 25], "train_step": 4, "train_test_split": [0, 1, 3, 5, 6, 7, 9, 10, 11, 15, 16, 17, 24, 25], "train_test_split_numpi": [0, 1, 25], "trainable_vari": 4, "trained_model": 6, "trainerror": [0, 25], "traini": 4, "training_checkpoint": 4, "training_dataset": 4, "training_gradi": 13, "trainingerror": 6, "trainpredict": 4, "trainscor": 4, "trainx": 4, "trait": [0, 24], "trajectori": 4, "transfer": [9, 24], "transform": [0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 17, 18, 19, 24, 25], "transit": [6, 12], "translat": [1, 4, 6, 10, 24], "transpos": [1, 5, 11, 19, 25], "travers": [0, 5], "treat": [0, 1, 3, 6, 12, 13, 21, 24, 25], "tree": [0, 1, 18, 24], "tree_clf": [9, 10], "tree_clf_": 9, "tree_clf_sr": 9, "tree_reg": 9, "tree_reg1": 9, "tree_reg2": 9, "trend": 21, "treue": 7, "trevor": 23, "tri": [2, 3, 4, 9, 13, 16], "triain": 0, "trial": [0, 2, 4, 6, 13, 21, 24], "triangl": 13, "triangular": 19, "trick": [3, 4, 8, 11, 13, 21], "trickier": 21, "tridiagon": 19, "trillion": 18, "trivial": [0, 1, 5, 11, 21, 24], "troubl": [0, 8, 12, 15, 25], "truck": 3, "true": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 16, 17, 19, 21, 24, 25], "true_fun": 6, "true_theta": 6, "truli": 24, "try": [0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 18, 19, 21, 24], "tucker": 8, "tuesdai": [22, 24], "tumor": [7, 9], "tumour": 7, "tunabl": 1, "tune": [4, 9, 13, 19, 24], "turn": [0, 1, 5, 6, 7, 8, 9, 10, 11, 12, 13, 19, 21, 24, 25], "tutori": [1, 4], "tv": 2, "tveito": 2, "tweak": [1, 4, 10, 21], "twice": 13, "twist": 11, "two": [0, 1, 2, 4, 5, 6, 7, 9, 10, 11, 12, 13, 15, 17, 19, 20, 21, 23, 24, 25], "tx": 13, "tx_1": 13, "txt": [4, 15], "ty": 13, "type": [0, 1, 3, 6, 8, 10, 13, 19, 21, 25], "typic": [0, 1, 2, 3, 4, 5, 7, 9, 10, 12, 13, 15, 16, 21, 24, 25], "u": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 19, 21, 23, 24, 25], "u_": 19, "u_i": 12, "u_m": 10, "ua": [0, 24], "ubuntu": [0, 18, 24], "uci": [], "uio": [15, 22, 23], "un": 14, "unabl": 15, "unari": [19, 24], "unbalanc": [6, 9], "unbias": [0, 5, 6, 24], "uncent": 6, "uncertainti": [0, 5, 24], "uncertitud": 21, "unchang": [1, 3], "uncorrel": [10, 21], "undefin": [5, 25], "under": [0, 1, 5, 6, 10, 13, 18, 24], "underdetermin": [0, 24], "underfit": [1, 6], "underflowproblem": 5, "undergo": 5, "undergradu": [20, 22], "underli": [0, 1, 9, 13, 21, 24], "underset": [4, 14], "understand": [0, 1, 3, 5, 6, 10, 13, 14, 15, 18, 24, 25], "understood": [8, 13], "undesir": 8, "undetermin": [5, 8], "undo": 4, "unexpect": 6, "unexpected": 21, "unfair": 6, "unfortun": [1, 8, 9, 10], "unicode_liter": [8, 9], "uniform": [0, 1, 5, 6, 11, 13, 21, 24], "uniformli": [13, 21], "unifrompdf": 21, "unimport": 13, "union": [5, 6], "uniqu": [0, 2, 6, 13, 14, 19, 24], "unique_cluster_label": 14, "unit": [0, 1, 3, 4, 5, 10, 12, 21, 24, 25], "unitari": [5, 6, 19, 25], "unitarili": [19, 24], "uniti": 21, "univari": 21, "univers": [0, 1, 2, 13, 18, 20, 22, 24, 25], "unix": 1, "unknow": [0, 19, 24], "unknown": [0, 1, 3, 4, 5, 6, 8, 10, 13, 19, 24, 25], "unknowwn": 12, "unlabel": 1, "unless": [0, 3, 6, 11, 13, 24], "unlik": [1, 3, 8, 13], "unnecessarili": 9, "unord": 3, "unravel": 1, "unrol": [3, 11], "unseen": [0, 7, 9, 15], "unstabl": 1, "unsupervis": [0, 1, 4, 12, 18, 24], "unsymmetr": [19, 24], "until": [1, 2, 4, 9, 12, 13, 14], "untouch": 0, "unusu": 12, "up": [1, 3, 4, 5, 6, 8, 10, 11, 13, 14, 16, 18, 19, 21, 22], "updat": [1, 2, 10, 12, 13, 14, 15], "uploa": 24, "upload": [15, 18, 23], "upon": [0, 1, 6, 7, 11, 19], "upper": [0, 8, 9, 16, 19, 25], "uppercas": [19, 24], "upsampl": 4, "upscal": 4, "url": [24, 25], "us": [4, 5, 6, 8, 9, 10, 11, 12, 14, 15, 17, 19, 21, 23], "usag": [0, 8, 18, 24, 25], "usd": [], "usd10000": [], "use_bia": 4, "usecol": [0, 24], "useless": 1, "user": [0, 1, 2, 4, 6, 7, 15, 18, 19, 24], "usernam": 15, "usetex": 21, "usg": 6, "usr": 21, "usual": [0, 3, 4, 7, 12, 13, 14, 24], "ut": 5, "util": [1, 3, 4, 6, 7, 10, 14, 24], "ux": 19, "v": [2, 4, 5, 6, 11, 13, 15, 18, 25], "v0": 21, "v1": 21, "v2": 21, "v_0": 11, "va": 1, "vahid": 24, "val": 13, "val_accuraci": 3, "val_loss": 4, "vale": 2, "valid": [0, 1, 4, 7, 9, 10, 13, 18, 21, 24, 25], "validation_data": 3, "validation_split": 4, "valu": [0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 12, 13, 14, 16, 17, 18, 19, 24], "valuat": 9, "valy": 4, "van": [0, 24, 25], "vandenbergh": [8, 13], "vandermond": [0, 24], "vanilla": [0, 6, 11, 14, 25], "vanish": [1, 4, 13, 21], "var": [5, 6, 10, 11, 21, 25], "var_x": 21, "varabl": 8, "varepsilon": [5, 6], "varepsilon_": [5, 6], "varepsilon_i": [5, 6], "vari": [0, 1, 3, 5, 6, 10, 24], "variabl": [0, 1, 2, 5, 6, 7, 8, 10, 11, 12, 13, 14, 19, 24, 25], "varianc": [0, 1, 5, 7, 9, 10, 11, 13, 14, 18, 19, 21, 24, 25], "variance_i": [5, 11, 25], "variance_x": [5, 11, 25], "variant": [0, 1, 6, 8, 12, 13, 24, 25], "variat": [3, 4, 11, 24], "varieti": [0, 3, 12, 18, 24], "variou": [1, 3, 5, 6, 7, 8, 9, 11, 12, 13, 16, 18, 19, 21, 24, 25], "varydimens": 4, "vastli": 3, "vaue": 1, "vault": 0, "vdot": [2, 13], "vec": 6, "vector": [0, 1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 13, 14, 17, 18], "vector_mean": 14, "ventur": [0, 8, 18, 24], "venv": 15, "verbos": [1, 3, 4], "veri": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 21, 23, 24, 25], "verifi": [3, 11, 19, 24], "versatil": [8, 24], "versicolor": [8, 9], "version": [0, 3, 10, 13, 14, 15, 18, 19, 21, 24], "versu": 1, "vert": [0, 1, 5, 6, 7, 8, 9, 11, 13, 16, 17, 24, 25], "vert_1": [5, 6, 25], "vert_2": [5, 6, 11, 17, 25], "via": [0, 5, 6, 7, 8, 9, 10, 11, 12, 18, 19, 20, 21, 22, 24, 25], "vidal": 11, "video": [0, 1, 12, 18, 20, 22, 24], "view": [1, 3, 5, 6, 12, 13, 21, 23, 24], "violat": 8, "virginica": 9, "viridi": [0, 1, 2, 3, 24], "virtual": 1, "viscos": 13, "viscou": 13, "visibl": 15, "vision": [0, 3], "visual": [0, 3, 11, 12, 18, 24, 25], "visualis": 1, "visualstudio": [15, 16], "viz": [6, 8, 21], "vmap": 13, "vmax": [1, 6], "vmin": [1, 6], "voic": 3, "volum": [0, 3, 24], "vote": [10, 24], "voting_clf": 10, "votingclassifi": 10, "votingsimpl": 10, "vstack": [5, 11, 19, 21, 24, 25], "vt": [5, 25], "w": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 19, 21, 24, 25], "w1": 8, "w2": [8, 11], "w3": 8, "w_": [1, 12], "w_1": [8, 19], "w_1x_": 8, "w_1x_1": 8, "w_2": [8, 19], "w_2x_": 8, "w_2x_2": 8, "w_3": 19, "w_4": 19, "w_hidden": 2, "w_i": [1, 2, 10], "w_ix_i": 12, "w_j": 19, "w_m": 19, "w_output": 2, "w_px_": 8, "w_px_p": 8, "wa": [1, 3, 4, 5, 6, 7, 10, 11, 12, 14, 17, 19, 24, 25], "wai": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 19, 21, 24, 25], "walk": 9, "walker": 21, "wang": [0, 24], "want": [0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 21, 24, 25], "warn": 4, "warrant": 6, "wast": 3, "watch": 18, "wave": 3, "wavelet": 8, "we": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 23, 25], "weak": [9, 10, 14], "weather": [1, 12], "web": [18, 20, 22, 24], "webpag": 24, "websit": [6, 19, 20, 24], "wedg": [8, 21], "wednesdai": [22, 24], "wee": 11, "week": [0, 5, 6, 7, 17, 20, 22], "weekli": [15, 16, 18, 20, 22, 23, 24], "weight": [1, 2, 3, 6, 7, 9, 10, 12, 13, 21], "weigth": 2, "welcom": [8, 15, 18], "well": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 15, 16, 18, 19, 21, 23, 24, 25], "went": 8, "were": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 14, 21, 24], "wessel": [0, 24, 25], "what": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21], "whatev": 3, "when": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 19, 21, 24, 25], "whenev": [13, 15, 21], "where": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 24, 25], "wherea": [6, 21], "wherein": [1, 12], "whether": [0, 3, 5, 7, 9, 21, 24], "which": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 25], "whichev": [1, 3], "while": [0, 1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 15, 16, 21, 24, 25], "white": 9, "who": [0, 15], "whole": [1, 3, 4, 5, 9, 11, 13], "whose": [0, 6, 10, 21, 25], "whow": [11, 25], "why": [0, 1, 3, 6, 13, 15, 16, 17], "wide": [0, 1, 3, 6, 7, 12, 18, 19, 24], "widehat": 6, "width": [0, 3, 8, 9, 24], "wieringen": [0, 24, 25], "win": 10, "wind": 9, "wing": [22, 24], "winther": 2, "wiothout": 6, "wiscons": 7, "wisconsin": 10, "wisdom": 6, "wise": [1, 5, 12, 13, 25], "wish": [0, 2, 5, 7, 8, 11, 13, 14, 19, 24, 25], "with_std": [0, 25], "wither": 6, "within": [0, 2, 3, 4, 7, 9, 12, 13, 14, 21, 23, 24], "withinclust": 14, "without": [0, 1, 5, 6, 8, 9, 11, 12, 13, 15, 24, 25], "won": [0, 15, 24], "wonder": 8, "word": [0, 1, 3, 4, 5, 6, 7, 14, 21, 24, 25], "work": [0, 1, 4, 6, 7, 8, 9, 13, 15, 16, 18, 20, 21, 22, 24, 25], "workshop": 24, "world": [0, 8, 16, 25], "worldwid": [0, 24], "worri": 15, "wors": [0, 1, 3, 4, 6, 24], "worth": 9, "would": [0, 1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, 19, 21, 24, 25], "wrap": [6, 19, 24], "write": [0, 1, 2, 3, 5, 6, 7, 8, 12, 13, 15, 16, 19, 24, 25], "written": [0, 2, 3, 5, 11, 12, 13, 16, 18, 19, 21, 24, 25], "wrong": [1, 8, 15], "wrongli": 10, "wrote": [5, 11, 25], "wrt": [10, 13], "wth": [10, 13], "www": [18, 19, 23, 24], "wx_1": 8, "x": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 21, 24], "x0": 8, "x1": [4, 8, 9, 10, 13], "x1_exampl": 8, "x1d": 8, "x2": [8, 9, 10, 13], "x2d": [8, 11], "x2d_train": 11, "x2dsl": 11, "x3": 8, "x_": [0, 2, 3, 5, 6, 8, 10, 11, 13, 14, 19, 21, 24, 25], "x_0": [0, 5, 11, 19, 24, 25], "x_1": [0, 2, 5, 6, 7, 8, 9, 10, 11, 13, 19, 21, 24, 25], "x_2": [0, 2, 5, 6, 7, 8, 9, 10, 11, 13, 19, 21, 24, 25], "x_3": [8, 19, 21], "x_4": 19, "x_center": 11, "x_data": 1, "x_data_ful": 1, "x_hidden": 2, "x_i": [0, 1, 2, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 19, 21, 24, 25], "x_input": 2, "x_ix_": [0, 24], "x_iy_i": 8, "x_j": [0, 2, 8, 9, 12, 16, 21, 25], "x_jy_j": 8, "x_k": [12, 14, 19, 21, 25], "x_l": 21, "x_m": [6, 12, 19, 21], "x_n": [0, 2, 3, 6, 8, 11, 12, 13, 19, 21, 24], "x_new": [9, 10], "x_offset": 6, "x_output": 2, "x_p": [3, 7, 9], "x_poli": 9, "x_poly10": 9, "x_pred": 4, "x_prev": 2, "x_reduc": 11, "x_scale": 8, "x_small": 13, "x_test": [0, 1, 3, 5, 6, 7, 9, 10, 11, 15, 16, 17, 25], "x_test_": 17, "x_test_own": 6, "x_test_scal": [0, 6, 7, 9, 10, 11, 25], "x_tot": 4, "x_train": [0, 1, 3, 4, 5, 6, 7, 9, 10, 11, 15, 16, 17, 24, 25], "x_train_": 17, "x_train_mean": 6, "x_train_own": 6, "x_train_scal": [0, 6, 7, 9, 10, 11, 25], "x_val": 1, "xarrai": [18, 24], "xavier": 1, "xbnew": 13, "xcode": [0, 18, 24], "xdclassiffierconfus": 10, "xdclassiffierroc": 10, "xg_clf": 10, "xgb": 10, "xgbclassifi": 10, "xgboost": 9, "xgboot": 10, "xgbregressor": 10, "xgparam": 10, "xgtree": 10, "xi": [8, 13], "xi_": 8, "xi_1": 8, "xi_i": 8, "xk": 8, "xla": [13, 18, 24], "xlabel": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 13, 21, 24, 25], "xlim": [6, 10], "xm": 9, "xmesh": 13, "xnew": [0, 13, 24], "xp": 21, "xpanda": [0, 25], "xpd": [5, 11, 25], "xplot": 0, "xscale": [0, 25], "xsr": 9, "xt_x": 13, "xtest": 6, "xtick": [3, 6, 8, 9], "xtrain": 6, "xu": [0, 24], "xx": [0, 19, 24], "xy": [0, 6, 8, 19, 24], "xytext": 8, "xz": [19, 24], "y": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 21, 24, 25], "y1": 4, "y2": 4, "y3": 4, "y_": [0, 1, 5, 6, 10, 11, 19, 24, 25], "y_0": [0, 5, 11, 19, 24, 25], "y_1": [0, 5, 8, 9, 11, 13, 19, 24, 25], "y_1y_1": 8, "y_1y_1k": 8, "y_1y_2": 8, "y_1y_2k": 8, "y_1y_n": 8, "y_1y_nk": 8, "y_2": [0, 5, 8, 9, 11, 19, 24, 25], "y_2y_1": 8, "y_2y_1k": 8, "y_2y_2": 8, "y_2y_2k": 8, "y_3": [0, 9, 19], "y_4": 19, "y_data": [0, 1, 5, 6, 24, 25], "y_data_ful": 1, "y_decis": 8, "y_fit": [0, 25], "y_i": [0, 1, 5, 6, 7, 8, 9, 10, 11, 12, 13, 19, 24, 25], "y_if_": 10, "y_ix_": [0, 24], "y_ix_i": [7, 8, 13, 25], "y_iy_jk": 8, "y_j": [6, 8, 12], "y_k": 12, "y_m": 19, "y_model": [0, 4, 5, 6, 24, 25], "y_n": [8, 13], "y_ny_1": 8, "y_ny_1k": 8, "y_ny_2": 8, "y_ny_2k": 8, "y_ny_n": 8, "y_ny_nk": 8, "y_offset": [6, 17], "y_plot": 9, "y_pred": [0, 1, 4, 6, 7, 8, 9, 10, 25], "y_pred1": 9, "y_pred2": 9, "y_pred_rf": 10, "y_pred_tre": 10, "y_proba": [7, 10], "y_scaler": 6, "y_test": [0, 1, 3, 4, 5, 6, 7, 9, 10, 11, 15, 16, 17, 25], "y_test_onehot": 1, "y_test_predict": [], "y_tot": 4, "y_train": [0, 1, 3, 4, 5, 6, 7, 9, 10, 11, 15, 16, 17, 24, 25], "y_train_mean": 6, "y_train_onehot": 1, "y_train_predict": [], "y_train_scal": 6, "y_val": 1, "ye": [3, 6, 7], "year": [0, 18, 24], "yet": [0, 1, 6, 8, 11, 13, 24], "yi": 13, "yield": [0, 2, 5, 6, 8, 10, 12, 13, 14, 19, 21, 24], "yk": 8, "ylabel": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 13, 21, 24, 25], "ylim": [3, 6], "ym": 9, "ymesh": 13, "yn": 0, "yo": [8, 9, 10], "yoshua": [1, 23], "you": [0, 1, 3, 4, 5, 6, 8, 9, 10, 11, 13, 15, 16, 17, 18, 19, 21, 22, 23, 24, 25], "young": 0, "your": [1, 2, 4, 5, 6, 8, 11, 13, 15, 17, 18, 19, 24], "your_model_object": 16, "yourself": [11, 13, 24], "youtub": 18, "ypred": 6, "ypredict": [0, 13, 24, 25], "ypredict2": 13, "ypredictlasso": 5, "ypredictol": [0, 5], "ypredictown": 6, "ypredictownridg": [6, 25], "ypredictridg": [0, 5, 6, 25], "ypredictskl": 6, "ytest": 6, "ytick": [3, 6, 8, 9], "ytild": [0, 6, 24, 25], "ytildelasso": 5, "ytildenp": [0, 24, 25], "ytildeol": [0, 5], "ytildeownridg": [6, 25], "ytilderidg": [5, 6, 25], "ytrain": 6, "yuxi": 24, "yx": [19, 24], "yy": [19, 24], "yz": [19, 24], "z": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 19, 21, 24, 25], "z_": [1, 2, 12, 19, 24], "z_0": [19, 24], "z_1": [19, 24], "z_2": [19, 24], "z_c": 1, "z_h": 1, "z_hidden": 2, "z_i": [1, 12], "z_j": [1, 12], "z_k": [12, 25], "z_m": 1, "z_mod": 9, "z_o": 1, "z_output": 2, "zaman": 21, "zaxi": 6, "zero": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 19, 21, 24, 25], "zeros_lik": 4, "zeroth": 25, "zfill": 4, "zip": [4, 6], "zm_h": [0, 24], "zn": [], "zone": [], "zoom": 24, "zx": [19, 24], "zy": [19, 24], "zz": [19, 24], "\u00f8yvind": 6}, "titles": ["3. Linear Regression", "14. Building a Feed Forward Neural Network", "15. Solving Differential Equations with Deep Learning", "16. Convolutional Neural Networks", "17. Recurrent neural networks: Overarching view", "4. Ridge and Lasso Regression", "5. Resampling Methods", "6. Logistic Regression", "8. Support Vector Machines, overarching aims", "9. Decision trees, overarching aims", "10. Ensemble Methods: From a Single Tree to Many Trees and Extreme Boosting, Meet the Jungle of Methods", "11. Basic ideas of the Principal Component Analysis (PCA)", "13. Neural networks", "7. Optimization, the central part of any Machine Learning algortithm", "12. Clustering and Unsupervised Learning", "Exercises week 34", "Exercises week 35", "Weekly Exercises 3", "Applied Data Analysis and Machine Learning", "2. Linear Algebra, Handling of Arrays and more Python Features", "Course setting", "1. Elements of Probability Theory and Statistical Data Analysis", "Teachers and Grading", "Textbooks", "Week 34: Introduction to the course, Logistics and Practicalities", "Week 35: From Ordinary Linear Regression to Ridge and Lasso Regression"], "titleterms": {"": [8, 10], "1": [0, 15, 16, 17, 25], "2": [0, 15, 16, 17, 24, 25], "2023": 22, "3": [0, 15, 16, 17, 25], "34": [15, 24], "35": [16, 25], "4": [0, 15, 16, 17, 25], "5": [0, 16], "A": [0, 1, 4, 8, 9, 24], "And": [24, 25], "In": 22, "Ising": 6, "The": [0, 1, 2, 3, 5, 6, 7, 8, 9, 11, 12, 15, 18, 24, 25], "To": 24, "With": 4, "about": [24, 25], "activ": [1, 12], "ad": [0, 6, 24, 25], "adaboost": 10, "adagrad": 13, "adam": 13, "adapt": 10, "adjust": 1, "adversari": 4, "again": [3, 9], "ai": 24, "aim": [8, 9, 24], "aka": 24, "algebra": [19, 24], "algorithm": [9, 10, 11, 12, 24, 25], "algortithm": 13, "all": 8, "an": [0, 4, 10, 15, 24], "analys": [5, 25], "analysi": [0, 5, 6, 11, 18, 21, 24, 25], "analyt": [0, 16], "ani": 13, "anoth": 9, "appli": 18, "approach": [0, 8, 14, 24], "approxim": 12, "architectur": 1, "arrai": [19, 24], "assist": 22, "autocorrel": 21, "autograd": [2, 13], "automat": 13, "back": [1, 11, 12, 25], "background": 18, "bag": 10, "base": 13, "basic": [0, 5, 7, 9, 10, 11, 19, 25], "batch": 1, "bay": 5, "befor": 11, "better": 8, "bia": 6, "binari": 1, "bind": 24, "bird": 10, "boldsymbol": 25, "boost": 10, "bootstrap": [6, 10], "boston": [], "breast": 1, "brief": 24, "bring": 12, "build": [1, 3, 9], "c": 24, "calcul": 25, "can": 24, "cancer": [1, 7, 9, 11], "cart": 9, "case": [8, 10, 21, 25], "central": [13, 18, 21], "chain": 12, "chang": 10, "channel": 24, "chi": [0, 24], "choic": 17, "choos": 1, "cifar01": 3, "classic": 11, "classif": [1, 9, 10], "classifi": 8, "clip": 1, "cluster": 14, "cnn": 3, "code": [1, 2, 5, 9, 11, 12, 13, 14, 15, 16, 24, 25], "collect": [1, 3], "commun": 24, "compar": [2, 10, 16], "complet": 25, "complex": [0, 6, 25], "complic": 6, "compon": 11, "comput": 9, "computerlab": 24, "con": 9, "concept": 21, "conjug": 13, "contn": 24, "convex": [8, 13], "convolut": [3, 12], "correl": [11, 25], "cost": [1, 10, 25], "cours": [18, 20, 23, 24], "covari": [5, 11, 21, 25], "cover": 24, "creat": 16, "cross": 6, "cython": 24, "data": [0, 1, 3, 6, 7, 9, 11, 15, 17, 18, 21, 24, 25], "dataset": [1, 3], "david": 24, "deadlin": 24, "deadllin": 22, "decai": 2, "decis": [9, 10], "decomposit": [5, 11, 19, 25], "deeep": [], "deep": [1, 2, 24], "defin": [1, 24], "degre": [0, 17, 25], "deliver": [15, 16], "dens": 0, "deriv": [5, 12, 16, 17, 25], "descent": [2, 10, 13], "design": 25, "detail": [3, 24], "develop": 1, "diagon": 11, "differ": 8, "differenti": [2, 13], "diffus": 2, "dimension": [2, 3, 8], "disadvantag": 9, "discret": 21, "discrimin": 24, "distribut": [5, 21], "do": 1, "doe": 25, "domain": 21, "down": 1, "dropout": 1, "economi": 25, "element": [0, 21, 24], "elimin": 19, "energi": 24, "ensembl": 10, "entropi": 9, "environ": [0, 15], "equat": [0, 2, 12, 25], "error": [0, 10, 24, 25], "essenti": 24, "etc": 24, "euler": 2, "evalu": 1, "exampl": [1, 2, 3, 4, 6, 7, 8, 9, 10, 24, 25], "exercis": [0, 6, 15, 16, 17, 25], "expect": 21, "experi": 21, "explor": 0, "exponenti": 2, "express": [16, 17, 25], "extrapol": 4, "extrem": [10, 24], "ey": 10, "fall": 22, "famili": [1, 24], "famou": 19, "fantast": 25, "featur": [9, 16, 19, 25], "feed": [1, 12], "final": [12, 25], "find": 16, "fine": 1, "first": [4, 12, 24], "fit": [0, 10, 15, 16, 24], "fix": 25, "forc": 3, "forest": 10, "format": 24, "forward": [1, 2, 12], "foster": 24, "fourier": 3, "frank": 6, "freedom": [0, 17, 25], "frequent": 25, "frequentist": [0, 24], "from": [5, 10, 12, 24, 25], "full": 2, "function": [0, 1, 6, 7, 8, 10, 11, 12, 13, 21, 24, 25], "further": [3, 5, 25], "gan": 4, "gaussian": 19, "gd": 13, "gener": [4, 9, 24], "geometr": 11, "gini": 9, "github": 15, "goal": [15, 16, 17], "good": [0, 24], "grade": [22, 24], "gradient": [1, 2, 10, 13], "growth": 2, "ha": 18, "handl": [19, 24], "hessian": 25, "hidden": 2, "hous": [], "how": 16, "hyperparamet": [1, 17], "hyperplan": 8, "i": [0, 1, 24], "id3": 9, "idea": 11, "ii": 24, "implement": [1, 16, 17], "implic": [5, 25], "import": [5, 19, 24, 25], "improv": 1, "includ": 13, "increment": 11, "index": 9, "inform": 22, "input": 2, "instal": [18, 24], "instructor": 22, "interpret": [5, 11, 24, 25], "introduc": [11, 13, 25], "introduct": [0, 6, 18, 19, 24], "invers": [5, 19], "invert": 25, "iter": 10, "its": 25, "jacobian": 25, "jax": 13, "julia": 24, "jungl": 10, "kera": [1, 3], "kernel": [8, 11], "lagrangian": 8, "lasso": [5, 6, 25], "last": 25, "later": [5, 25], "layer": [1, 2, 3, 12], "learn": [0, 1, 2, 11, 13, 14, 15, 16, 17, 18, 24, 25], "least": [5, 6, 16, 24, 25], "lectur": 24, "level": 10, "librari": [18, 24], "likelihood": 7, "limit": [1, 13, 21], "linear": [0, 8, 13, 15, 19, 24, 25], "link": [5, 11, 23, 25], "logist": [7, 24], "loss": 25, "lu": 19, "machin": [0, 8, 13, 18, 24], "main": [21, 24], "make": [0, 9, 10, 25], "mani": [10, 12], "mass": 24, "materi": 24, "math": [5, 25], "mathemat": [3, 5, 8, 25], "matric": [5, 19, 24], "matrix": [1, 5, 11, 12, 16, 19, 24, 25], "matter": 0, "max": 25, "mean": [0, 25], "meet": [5, 10, 21, 24, 25], "mercer": 8, "method": [6, 9, 10, 13, 24], "min": 25, "minim": 24, "ml": 24, "mlp": 12, "mnist": [3, 4], "model": [0, 1, 4, 6, 12, 15, 17, 24], "momentum": 13, "moon": [8, 9], "more": [3, 6, 19, 24, 25], "multilay": 12, "multipl": [1, 3, 17], "multipli": 8, "need": 24, "network": [1, 2, 3, 4, 7, 12, 24], "neural": [1, 2, 3, 4, 7, 12, 24], "new": 4, "non": 8, "normal": [0, 1], "notat": 12, "note": 25, "now": [1, 9, 13], "nuclear": [0, 24], "numba": 24, "number": [0, 2, 21, 25], "numer": [2, 21], "numpi": [19, 24], "object": 3, "obtain": 11, "od": 2, "off": 6, "ol": [5, 6, 15, 16], "one": [2, 12], "oper": 19, "optim": [1, 8, 13, 18, 24, 25], "order": 13, "ordinari": [5, 6, 16, 24, 25], "organ": [0, 24], "oslo": 23, "other": [4, 9, 11, 12, 19, 24], "our": [0, 4, 5, 11, 13, 24, 25], "outcom": [18, 24], "output": 2, "overarch": [0, 4, 8, 9, 24, 25], "overview": [10, 24], "own": [0, 10, 11, 24, 25], "packag": [19, 24], "panda": [24, 25], "paramet": [24, 25], "part": [13, 18], "partial": 2, "pass": 1, "pca": 11, "pdf": 21, "perceptron": 12, "perform": [1, 9], "period": 3, "perspect": 1, "plan": 25, "plethora": 24, "point": 4, "poisson": 2, "polynomi": [3, 16], "popul": 2, "popular": 24, "practic": [13, 22, 24], "pre": [1, 3], "predict": 4, "preprocess": 25, "prerequisit": [3, 18, 24], "princip": 11, "principl": 3, "pro": 9, "probabl": [5, 21], "problem": [1, 2, 13, 24, 25], "procedur": [9, 24], "process": [1, 3], "program": [2, 13], "project": [6, 22, 24], "prop": 13, "propag": [1, 12], "properti": [5, 21, 25], "python": [0, 9, 15, 18, 19, 24], "quick": 8, "r": 24, "random": [10, 11, 21], "read": [9, 24, 25], "real": [6, 24], "recommend": [24, 25], "recurr": [4, 12], "reduc": [0, 25], "reduct": 3, "reformul": 2, "regress": [0, 5, 6, 7, 9, 10, 13, 15, 17, 24, 25], "regular": 1, "relat": [], "relev": [23, 25], "relu": 1, "remark": 3, "remind": [6, 8, 24, 25], "replac": 13, "repositori": 15, "requir": [2, 18], "resampl": 6, "rescal": 6, "residu": 25, "resourc": 2, "result": 25, "revisit": 13, "rewrit": [24, 25], "ridg": [0, 5, 6, 17, 25], "rm": 13, "rule": 12, "same": 13, "sampl": 11, "scale": [17, 25], "schedul": 24, "schemat": 9, "scheme": 2, "scienc": 24, "scikit": [0, 1, 11, 24, 25], "second": 13, "semest": 22, "set": [0, 2, 3, 9, 12, 15, 20, 24, 25], "setup": 15, "sgd": 13, "should": 1, "similar": 13, "simpl": [0, 4, 9, 13, 24, 25], "singl": 10, "singular": [5, 11, 25], "size": 25, "sklearn": 16, "soft": 8, "softmax": 1, "softwar": 24, "solv": 2, "solver": 13, "some": [13, 19, 25], "specifi": 2, "split": [0, 15, 25], "squar": [0, 5, 6, 10, 16, 24, 25], "standard": [13, 25], "state": 0, "statist": [5, 6, 18, 21, 24], "steepest": [10, 13], "stochast": [13, 21], "strongli": 24, "suggest": 24, "summari": [22, 24], "superposit": 3, "supervis": 1, "support": 8, "svd": [5, 25], "systemat": 3, "t": 25, "take": 16, "taken": 24, "teach": 22, "teacher": [22, 24], "techniqu": [6, 11], "technologi": 18, "tensorflow": [1, 3], "tent": [22, 24], "test": [0, 1, 15, 17, 25], "text": 24, "textbook": [23, 24], "theorem": [5, 8, 11, 12, 21], "theori": 21, "thi": 24, "tip": 13, "togeth": 12, "tool": 24, "top": 1, "topic": 24, "toward": 11, "trade": 6, "tradeoff": 6, "train": [0, 1, 4, 15, 24, 25], "transform": 3, "tree": [9, 10], "tune": 1, "two": [3, 8, 18], "type": [2, 4, 12, 24], "uio": 24, "univers": [12, 23], "unsupervis": 14, "up": [0, 2, 9, 12, 15, 24, 25], "us": [0, 1, 2, 3, 7, 13, 16, 18, 24, 25], "v": 3, "valid": 6, "valu": [5, 11, 21, 25], "variabl": 21, "varianc": 6, "variou": 0, "vector": [8, 12, 16, 19, 24, 25], "versu": 24, "view": [0, 4, 10, 25], "virtual": 15, "visual": [1, 9], "wai": 9, "wave": 2, "we": 24, "week": [15, 16, 24, 25], "weekli": 17, "what": [0, 24, 25], "which": 1, "why": 24, "wisconsin": 7, "write": [4, 11], "x": 25, "xgboost": 10, "your": [0, 10, 16, 25]}}) \ No newline at end of file diff --git a/doc/LectureNotes/_build/html/statistics.html b/doc/LectureNotes/_build/html/statistics.html index aba8d0cc7..015066dc6 100644 --- a/doc/LectureNotes/_build/html/statistics.html +++ b/doc/LectureNotes/_build/html/statistics.html @@ -223,10 +223,11 @@

Weekly material, notes and exercises

diff --git a/doc/LectureNotes/_build/html/teachers.html b/doc/LectureNotes/_build/html/teachers.html index de539ac85..615800cd9 100644 --- a/doc/LectureNotes/_build/html/teachers.html +++ b/doc/LectureNotes/_build/html/teachers.html @@ -221,10 +221,11 @@

Weekly material, notes and exercises

diff --git a/doc/LectureNotes/_build/html/textbooks.html b/doc/LectureNotes/_build/html/textbooks.html index bef340138..91034731e 100644 --- a/doc/LectureNotes/_build/html/textbooks.html +++ b/doc/LectureNotes/_build/html/textbooks.html @@ -221,10 +221,11 @@

Weekly material, notes and exercises

diff --git a/doc/LectureNotes/_build/html/week34.html b/doc/LectureNotes/_build/html/week34.html index 520575b8b..b1ee5fc16 100644 --- a/doc/LectureNotes/_build/html/week34.html +++ b/doc/LectureNotes/_build/html/week34.html @@ -62,8 +62,8 @@ - - + + @@ -223,10 +223,11 @@

Weekly material, notes and exercises

@@ -2517,7 +2518,7 @@ Singular Value Decomposition (SVD) method discussed next week.

@@ -2526,7 +2527,7 @@ Singular Value Decomposition (SVD) method discussed next week.

@@ -2385,7 +2387,7 @@ C(\boldsymbol{X},\boldsymbol{\theta})=\frac{1}{n}\left\{(\boldsymbol{y}-\boldsym diff --git a/doc/LectureNotes/_build/jupyter_execute/cb756715680fbe8cbf1d070371bf3950695ddf24b29ecb476c48fb9e559af08e.png b/doc/LectureNotes/_build/jupyter_execute/cb756715680fbe8cbf1d070371bf3950695ddf24b29ecb476c48fb9e559af08e.png new file mode 100644 index 0000000000000000000000000000000000000000..a16a30cd2fac21eb16932d7c59f2c5cda784fe52 GIT binary patch literal 24495 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 literal 0 HcmV?d00001 diff --git a/doc/LectureNotes/_build/jupyter_execute/exercisesweek34.ipynb b/doc/LectureNotes/_build/jupyter_execute/exercisesweek34.ipynb new file mode 100644 index 000000000..851509f7b --- /dev/null +++ b/doc/LectureNotes/_build/jupyter_execute/exercisesweek34.ipynb @@ -0,0 +1,315 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "232d1306", + "metadata": {}, + "source": [ + "# Exercises week 34\n", + "\n", + "## Coding Setup and Linear Regression" + ] + }, + { + "cell_type": "markdown", + "id": "9b66a351", + "metadata": {}, + "source": [ + "Welcome to FYS-STK3155/4155!\n", + "\n", + "In this first week will focus on getting you set up with the programs you are going to be using throughout this course. We expect that many of you will encounter some trouble with setting these programs up, as they can be extremely finnicky and prone to not working the same on all machines, so we strongly encourage you to not get discouraged, and to show up to the group-sessions where we can help you along. The group sessions are also the best place to find group partners for the projects and to be challenged on your understanding of the material, which are both essential to doing well in this course. We strongly encourage you to form groups of 2-3 participants. \n", + "\n", + "If you are unable to complete this week's exercises, don't worry, this will likely be the most frustrating week for many of you. You have time to get back on track next week, especially if you come to the group-sessions! Note also that this week's set of exercises does not count for the additional score. The deadline for the weekly exercises is set to Fridays, at midnight." + ] + }, + { + "cell_type": "markdown", + "id": "36d8750b", + "metadata": {}, + "source": [ + "### Learning goals\n", + "\n", + "After completing these exercises, you will know how to\n", + "\n", + "- Create and use a Github repository\n", + "- Set up and use a virtual environment in Python\n", + "- Fit an OLS model to data using scikit-learn\n", + "- Fit a model on training data and evaluate it on test data\n", + "\n", + "### Deliverables\n", + "\n", + "Complete the following exercises while working in a jupyter notebook. Exercises 1,2 and 3 require no writing in the notebook. Then, in canvas, include\n", + "- The jupyter notebook with the exercises completed\n", + "- An exported PDF of the notebook (https://code.visualstudio.com/docs/datascience/jupyter-notebooks#_export-your-jupyter-notebook)\n", + "- Optional: A link to your github repository, which must be set to public, include the notebook file, a README file, requirements file and gitignore file.\n", + "\n", + "We require you to deliver a jupyter notebook so that we can evaluate the results of your code without needing to download and run the code of every student, as well as to teach you to use this useful tool." + ] + }, + { + "cell_type": "markdown", + "id": "2a9c7ef8", + "metadata": {}, + "source": [ + "## Exercise 1 - Github Setup\n" + ] + }, + { + "cell_type": "markdown", + "id": "1498aed1", + "metadata": {}, + "source": [ + "In this course, we require you to pay extra mind to the reproducibility of your results and the shareability of your code. The first step toward these goals is using a version control system like git and online repository like Github.\n", + "\n", + "**a)** Download git if you don't already have it on your machine, check with the terminal command ´git --version´ (https://git-scm.com/downloads).\n", + "\n", + "**b)** Create a Github account(https://github.com/), or log in to github with your UiO account (https://github.uio.no/login).\n", + "\n", + "**c)** Learn the basics of opening the terminal and navigating folders on your operating system. Things to learn: Opening a terminal, opening a terminal in a specific folder, listing the contents of the current folder, navigating into a folder, navigating out of a folder.\n", + "\n", + "**d)** Download the Github CLI tool and run ´gh auth login´ in your terminal to authenticate your local machine for some of the later steps. (https://github.com/cli/cli#installation). You might need to change file permissions to make it work, ask us or ChatGPT for help with these issues.\n", + "\n", + "**e)** As an alternative to the above terminal based instructions, you could install GitHub Desktop (see https://desktop.github.com/download/) or if you prefer GitLab, GitLab desktop (see https://about.gitlab.com/install/). This sets up all communications between your PC/Laptop and the repository. This allows you to combine exercises 1 and 2 in an easy way if you don't want to use terminarl. Keep in mind that these GUIs (graphical user interfaces) are not text editors." + ] + }, + { + "cell_type": "markdown", + "id": "c56fbefa", + "metadata": {}, + "source": [ + "## Exercise 2 - Setting up a Github repository\n" + ] + }, + { + "cell_type": "markdown", + "id": "fb9b8acd", + "metadata": { + "vscode": { + "languageId": "plaintext" + } + }, + "source": [ + "**a)** Create an empty repository for your coursework in this course in your browser at github.com (or uio github).\n", + "\n", + "**b)** Open a terminal in the location you want to create your local folder for this repository, like your desktop.\n", + "\n", + "**c)** Clone the repository to your laptop using the terminal command ´gh repo clone username/repository-name´. This creates a folder with the same name as the repository. Moving it or renaming it might require some extra steps.\n", + "\n", + "**d)** Download this jupyter notebook. Add the notebook to the local folder.\n", + "\n", + "**e)** Run the ´git add .´ command command in a terminal opened in the local folder to stage the current changes in the folder to be commited to the version control history. Run ´git status´ to see the staged files.\n", + "\n", + "**f)** Run the ´git commit -m \"Adding first weekly assignment file\"´ command to commit the staged changes to the version control history. Run ´git status´ to see that no files are staged.\n", + "\n", + "**g)** Run the ´git push\" command to upload the commited changes to the remote repository on Github.\n", + "\n", + "**h)** Add a file called README.txt to the repository at Github.com. Don't do this in your local folder. Add a suitable title for your repository and some inforomation to the file.\n", + "\n", + "**i)** Run the ´git fetch origin´ command to fetch the latest remote changes to your repository.\n", + "\n", + "**j)** Run the ´git pull´ command to download and update files to match the remote changes.\n" + ] + }, + { + "cell_type": "markdown", + "id": "f84d0db6", + "metadata": {}, + "source": [ + "## Exercise 3 - Setting up a Python virtual environment\n" + ] + }, + { + "cell_type": "markdown", + "id": "b5a4818a", + "metadata": {}, + "source": [ + "Following the themes from the previous exercises, another way of improving the reproducibility of your results and shareability of your code is having a good handle on which python packages you are using.\n", + "\n", + "There are many ways to manage your packages in Python, and you are free to use any approach you want, but in this course we encourage you to use something called a virtual environment. A virtual environemnt is a folder in your project which contains a Python runtime executable as well as all the packages you are using in the current project. In this way, each of your projects has its required set of packages installed in the same folder, so that if anything goes wrong while managing your packages it only affects the one project, and if multiple projects require different versions of the same package, you don't need to worry about messing up old projects. Also, it's easy to just delete the folder and start over if anything goes wrong.\n", + "\n", + "Virtual environments are typically created, activated, managed and updated using terminal commands, but for now we recommend that you let for example VS Code (a popular cross-paltform package) handle it for you to make the coding experience much easier. If you are familiar with another approach for virtual environments that works for you, feel free to keep doing it that way.\n" + ] + }, + { + "cell_type": "markdown", + "id": "0f6de364", + "metadata": {}, + "source": [ + "**a)** Open this notebook in VS Code (https://code.visualstudio.com/Download). Download the Python and Jupyter extensions.\n", + "\n", + "**b)** Press ´Cmd + Shift + P´, then search and run ´Python: Create Environment...´\n", + "\n", + "**c)** Select ´Venv´\n", + "\n", + "**d)** Choose the most up-to-date version of Python your have installed.\n", + "\n", + "**e)** Press ´Cmd + Shift + P´, then search and run ´Python: Select Interpreter´\n", + "\n", + "**f)** Selevet the (.venv) option you just created.\n", + "\n", + "**g)** Open a terminal in VS Code, the venv name should be visible at the beginning of the line. Run `pip list` to see that there are no packages install in the environment.\n", + "\n", + "**h)** In this terminal, run `pip install matplotlib numpy scikit-learn`. This will install the listed packages.\n", + "\n", + "**i)** To make these installations reproducible, which is important for reproducing results and sharing your code, run ´pip freeze > requirements.txt´ to create the file requirements.txt with all your dependencies.\n", + "\n", + "Now, anyone who wants to recreate your package setup can download your requirements.txt file and run ´pip install -r requirements.txt´ to install the correct packages and versions. To keep the requirements.txt file up to date with your environment, you will need to re-run the freeze command whenever you install a new package.\n", + "\n", + "**j)** Create a .gitignore file at the root of your project folder, and add the line ´.venv´ to it. This way, you won't try to upload a copy of all your python packages when you regularly push your changes to Github. Ignored files should not show up when you run ´git status´, and are not staged when running ´git add .´, try it!" + ] + }, + { + "cell_type": "markdown", + "id": "5d184ab1", + "metadata": {}, + "source": [ + "## Exercise 3 - Fitting an OLS model to data\n" + ] + }, + { + "cell_type": "markdown", + "id": "d19ebd67", + "metadata": {}, + "source": [ + "Great job on getting through all of that! Now it is time to do some actual machine learning!\n", + "\n", + "**a)** Complete the code below so that you fit a second order polynomial to the data. You will need to look up some scikit-learn documentation online (look at the imported functions for hints).\n", + "\n", + "**b)** Compute the mean square error for the line model and for the second degree polynomial model." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "b58fb9bf", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from sklearn.preprocessing import PolynomialFeatures # use the fit_transform method of the created object!\n", + "from sklearn.linear_model import LinearRegression\n", + "from sklearn.metrics import mean_squared_error" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "0208e9ca", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "n = 100\n", + "x = np.random.rand(n, 1)\n", + "y = 2.0 + 5 * x**2 + 0.1 * np.random.randn(n, 1)\n", + "\n", + "line_model = LinearRegression().fit(x, y)\n", + "line_predict = line_model.predict(x)\n", + "#line_mse = ...\n", + "\n", + "#poly_features = ...\n", + "#poly_model = LinearRegression().fit(..., y)\n", + "#poly_predict = ...\n", + "#poly_mse = ...\n", + "\n", + "plt.scatter(x, y, label = \"Data\")\n", + "plt.scatter(x, line_predict, label = \"Line model\")\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "248d8931", + "metadata": {}, + "source": [ + "## Exercise 4 - The train-test split\n" + ] + }, + { + "cell_type": "markdown", + "id": "1efd3376", + "metadata": {}, + "source": [ + "Hopefully your model fit the data quite well, but to know how well the model actually generalizes to unseen data, which is most often what we care about, we need to split our data into training and testing data. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0f8d75fb", + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.model_selection import train_test_split" + ] + }, + { + "cell_type": "markdown", + "id": "edb213fc", + "metadata": {}, + "source": [ + "**a)** Complete the code below so that the polynomial features and the targets y get split into training and test data.\n", + "\n", + "**b)** What is the shape of X_test?\n", + "\n", + "**c)** Fit your model to X_train\n", + "\n", + "**d)** Compute the MSE when your model predicts on the training data and on the testing data, using y_train and y_test as targets for the two cases.\n", + "\n", + "**e)** Why do we not fit the model to X_test?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a03e0388", + "metadata": {}, + "outputs": [], + "source": [ + "polynomial_features = ...\n", + "\n", + "#X_train, X_test, y_train, y_test = train_test_split(polynomial_features, y, test_size=0.2)\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "22e7536e", + "metadata": {}, + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.15" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file diff --git a/doc/LectureNotes/_build/jupyter_execute/exercisesweek35.ipynb b/doc/LectureNotes/_build/jupyter_execute/exercisesweek35.ipynb new file mode 100644 index 000000000..6b559d91e --- /dev/null +++ b/doc/LectureNotes/_build/jupyter_execute/exercisesweek35.ipynb @@ -0,0 +1,539 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "b4005770", + "metadata": {}, + "source": [ + "# Exercises week 35\n", + "\n", + "## Deriving and Implementing Ordinary Least Squares" + ] + }, + { + "cell_type": "markdown", + "id": "2ca1b589", + "metadata": {}, + "source": [ + "This week you will be deriving the analytical expressions for linear regression, building up the model from scratch. This will include taking several derivatives of products of vectors and matrices. Such derivatives are central to the optimization of many machine learning models. Although we will often use automatic differentiation in actual calculations, to be able to have analytical expressions is extremely helpful in case we have simpler derivatives as well as when we analyze various properties (like second derivatives) of the chosen cost functions.\n", + "\n", + "Vectors are always written as boldfaced lower case letters and matrices as upper case boldfaced letters. You will find useful the notes from week 35 on derivatives of vectors and matrices. See also the textbook of Faisal at al, chapter 5 and in particular sections 5.3-5.5 at " + ] + }, + { + "cell_type": "markdown", + "id": "41e92bf9", + "metadata": {}, + "source": [ + "### Learning goals\n", + "\n", + "After completing these exercises, you will know how to\n", + "- Take the derivatives of simple products between vectors and matrices\n", + "- Implement OLS using the analytical expressions\n", + "- Create a feature matrix from a set of data\n", + "- Create a feature matrix for a polynomial model\n", + "- Evaluate the MSE score of various model on training and test data, and comparing their performance\n", + "\n", + "### Deliverables\n", + "\n", + "Complete the following exercises while working in a jupyter notebook. Then, in canvas, include\n", + "- The jupyter notebook with the exercises completed\n", + "- An exported PDF of the notebook (https://code.visualstudio.com/docs/datascience/jupyter-notebooks#_export-your-jupyter-notebook)" + ] + }, + { + "cell_type": "markdown", + "id": "f7a9209d", + "metadata": {}, + "source": [ + "## How to take derivatives of Matrix-Vector expressions" + ] + }, + { + "cell_type": "markdown", + "id": "45f3712e", + "metadata": {}, + "source": [ + "In these exercises it is always useful to write out with summation indices the various quantities. Take also a look at the weekly slides from week 35 and the various examples included there.\n", + "\n", + "As an example, consider the function\n", + "\n", + "$$\n", + "f(\\boldsymbol{x}) =\\boldsymbol{A}\\boldsymbol{x},\n", + "$$\n", + "\n", + "which reads for a specific component $f_i$ (we define the matrix $\\boldsymbol{A}$ to have dimension $n\\times n$ and the vector $\\boldsymbol{x}$ to have length $n$)\n", + "\n", + "$$\n", + "f_i =\\sum_{j=0}^{n-1}a_{ij}x_j,\n", + "$$\n", + "\n", + "which leads to\n", + "\n", + "$$\n", + "\\frac{\\partial f_i}{\\partial x_j}= a_{ij},\n", + "$$\n", + "\n", + "and written out in terms of the vector $\\boldsymbol{x}$ we have\n", + "\n", + "$$\n", + "\\frac{\\partial f(\\boldsymbol{x})}{\\partial \\boldsymbol{x}}= \\boldsymbol{A}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "5fa8a4e6", + "metadata": {}, + "source": [ + "## Exercise 1 - Finding the derivative of Matrix-Vector expressions" + ] + }, + { + "cell_type": "markdown", + "id": "df7a2270", + "metadata": {}, + "source": [ + "**a)** Consider the expression\n", + "\n", + "$$\n", + "\\frac{\\partial (\\boldsymbol{a}^T\\boldsymbol{x})}{\\partial \\boldsymbol{x}},\n", + "$$\n", + "\n", + "Where $\\boldsymbol{a}$ and $\\boldsymbol{x}$ are column-vectors with length $n$.\n", + "\n", + "What is the *shape* of the expression we are taking the derivative of?\n", + "\n", + "What is the *shape* of the thing we are taking the derivative with respect to?\n", + "\n", + "What is the *shape* of the result of the expression?" + ] + }, + { + "cell_type": "markdown", + "id": "c0396734", + "metadata": {}, + "source": [ + "**b)** Show that\n", + "\n", + "$$\n", + "\\frac{\\partial (\\boldsymbol{a}^T\\boldsymbol{x})}{\\partial \\boldsymbol{x}} = \\boldsymbol{a}^T,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "dc39d541", + "metadata": {}, + "source": [ + "**c)** Show that\n", + "\n", + "$$\n", + "\\frac{\\partial (\\boldsymbol{a}^T\\boldsymbol{A}\\boldsymbol{a})}{\\partial \\boldsymbol{a}} = \\boldsymbol{a}^T(\\boldsymbol{A}+\\boldsymbol{A}^T),\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "498d13ec", + "metadata": {}, + "source": [ + "## Exercise 2 - Deriving the expression for OLS" + ] + }, + { + "cell_type": "markdown", + "id": "f3f771de", + "metadata": {}, + "source": [ + "The ordinary least squares method finds the parameters $\\boldsymbol{\\theta}$ which minimizes the squared error between our model $\\boldsymbol{X\\theta}$ and the true values $\\boldsymbol{y}$.\n", + "\n", + "To find the parameters $\\boldsymbol{\\theta}$ which minimizes this error, we take the derivative of the squared error expression with respect to $\\boldsymbol{\\theta}$, and set it equal to 0." + ] + }, + { + "cell_type": "markdown", + "id": "49690237", + "metadata": {}, + "source": [ + "**a)** Very briefly explain why the approach above finds the parameters $\\boldsymbol{\\theta}$ which minimizes this error." + ] + }, + { + "cell_type": "markdown", + "id": "b7cccc9d", + "metadata": {}, + "source": [ + "We typically write the squared error as\n", + "\n", + "$$\n", + "\\vert\\vert\\boldsymbol{y} - \\boldsymbol{X\\theta}\\vert\\vert^2\n", + "$$\n", + "\n", + "which we can rewrite in matrix-vector form as\n", + "\n", + "$$\n", + "\\left(\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\theta}\\right)^T\\left(\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\theta}\\right)\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "8fbecf74", + "metadata": {}, + "source": [ + "**b)** If $\\boldsymbol{X}$ is invertible, what is the expression for the optimal parameters $\\boldsymbol{\\theta}$? (**Hint:** Don't compute any derivatives, but solve $\\boldsymbol{X\\theta}=\\boldsymbol{y}$ for $\\boldsymbol{\\theta}$)" + ] + }, + { + "cell_type": "markdown", + "id": "f37af8f0", + "metadata": {}, + "source": [ + "**c)** Show that\n", + "\n", + "$$\n", + "\\frac{\\partial \\left(\\boldsymbol{x}-\\boldsymbol{A}\\boldsymbol{s}\\right)^T\\left(\\boldsymbol{x}-\\boldsymbol{A}\\boldsymbol{s}\\right)}{\\partial \\boldsymbol{s}} = -2\\left(\\boldsymbol{x}-\\boldsymbol{A}\\boldsymbol{s}\\right)^T\\boldsymbol{A},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "869fca4d", + "metadata": {}, + "source": [ + "**d)** Using the expression from **c)**, but substituting back in $\\boldsymbol{\\theta}$, $\\boldsymbol{y}$ and $\\boldsymbol{X}$, find the expression for the optimal parameters $\\boldsymbol{\\theta}$ in the case that $\\boldsymbol{X}$ is not invertible, but $\\boldsymbol{X^T X}$ is, which is most often the case.\n", + "\n", + "$$\n", + "\\boldsymbol{\\hat{\\theta}_{OLS}} = ...\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "57ca3d74", + "metadata": {}, + "source": [ + "## Exercise 3 - Creating feature matrix and implementing OLS using the analytical expression" + ] + }, + { + "cell_type": "markdown", + "id": "5dc179f7", + "metadata": {}, + "source": [ + "With the expression for $\\boldsymbol{\\hat{\\theta}_{OLS}}$, you now have what you need to implement OLS regression with your input data and target data $\\boldsymbol{y}$. But before you can do that, you need to set up you input data as a feature matrix $\\boldsymbol{X}$.\n", + "\n", + "In a feature matrix, each row is a datapoint and each column is a feature of that data. If you want to predict someones spending based on their income and number of children, for instance, you would create a row for each person in your dataset, with the montly income and the number of children as columns.\n", + "\n", + "We typically also include an intercept in our models. The intercept is a value that is added to our prediction regardless of the value of the other features. The intercept tries to account for constant effects in our data that are not dependant on anything else. In our current example, the intercept could account for living expenses which are typical regardless of income or childcare expenses.\n", + "\n", + "We calculate the optimal intercept by including a feature with the constant value of 1 in our model, which is then multplied by some parameter $\\theta_0$ from the OLS method into the optimal intercept value (which will be $\\theta_0$). In practice, we include the intercept in our model by adding a column of ones to the start of our feature matrix." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "e5ff2a69", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "a3cf2792", + "metadata": {}, + "outputs": [], + "source": [ + "n = 20\n", + "income = np.array([116., 161., 167., 118., 172., 163., 179., 173., 162., 116., 101., 176., 178., 172., 143., 135., 160., 101., 149., 125.])\n", + "children = np.array([5, 3, 0, 4, 5, 3, 0, 4, 4, 3, 3, 5, 1, 0, 2, 3, 2, 1, 5, 4])\n", + "spending = np.array([152., 141., 102., 136., 161., 129., 99., 159., 160., 107., 98., 164., 121., 93., 112., 127., 117., 69., 156., 131.])\n" + ] + }, + { + "cell_type": "markdown", + "id": "5da61481", + "metadata": {}, + "source": [ + "**a)** Create a feature matrix $\\boldsymbol{X}$ for the features income and children, including an intercept column of ones at the start." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "5ad87a65", + "metadata": {}, + "outputs": [], + "source": [ + "X = np.zeros((n, 3))\n", + "#X[:, 0] = ...\n", + "#X[:, 1] = ...\n", + "#X[:, 2] = ..." + ] + }, + { + "cell_type": "markdown", + "id": "e0ddfac2", + "metadata": {}, + "source": [ + "**b)** Use the expression from **3d)** to find the optimal parameters $\\boldsymbol{\\hat{\\beta}_{OLS}}$ for predicting spending based on these features. Create a function for this operation, as you are going to need to use it a lot." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "8f3f68aa", + "metadata": {}, + "outputs": [], + "source": [ + "def OLS_parameters(X, y):\n", + " return ...\n", + "\n", + "#beta = OLS_parameters(X, y)" + ] + }, + { + "cell_type": "markdown", + "id": "0cb6da80", + "metadata": {}, + "source": [ + "## Exercise 4 - Fitting a polynomial" + ] + }, + { + "cell_type": "markdown", + "id": "71015064", + "metadata": {}, + "source": [ + "In this course, we typically do linear regression using polynomials, though in real world applications it is also very common to make linear models based on measured features like you did in the previous exercise.\n", + "\n", + "When fitting a polynomial with linear regression, we make each polynomial degree($x, x^2, x^3, ..., x^p$) its own feature." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "d7476c84", + "metadata": {}, + "outputs": [], + "source": [ + "n = 100\n", + "x = np.linspace(-3, 3, n)\n", + "y = np.exp(-x**2) + 1.5 * np.exp(-(x-2)**2) + np.random.normal(0, 0.1)" + ] + }, + { + "cell_type": "markdown", + "id": "8321451b", + "metadata": {}, + "source": [ + "**a)** Create a feature matrix $\\boldsymbol{X}$ for the features $x, x^2, x^3, x^4, x^5$, including an intercept column of ones at the start. Make this into a function, as you will do this a lot over the next weeks." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "91496e40", + "metadata": {}, + "outputs": [], + "source": [ + "def polynomial_features(x, p):\n", + " n = len(x)\n", + " X = np.zeros((n, p + 1))\n", + " #X[:, 0] = ...\n", + " #X[:, 1] = ...\n", + " #X[:, 2] = ...\n", + " # could this be a loop?\n", + "\n", + "#X = polynomial_features(x, 5)" + ] + }, + { + "cell_type": "markdown", + "id": "b84b1e31", + "metadata": {}, + "source": [ + "**b)** Use the expression from **3d)** to find the optimal parameters $\\boldsymbol{\\hat{\\beta}_{OLS}}$ for predicting $\\boldsymbol{y}$ based on these features. If you have done everything right so far, this code will not need changing." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "034f502c", + "metadata": {}, + "outputs": [], + "source": [ + "#beta = OLS_parameters(X, y)" + ] + }, + { + "cell_type": "markdown", + "id": "d703f788", + "metadata": {}, + "source": [ + "**c)** Like in exercise 4 last week, split your feature matrix and target data into a training split and test split." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "29171358", + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.model_selection import train_test_split\n", + "\n", + "#X_train, X_test, y_train, y_test = ..." + ] + }, + { + "cell_type": "markdown", + "id": "a0e3509f", + "metadata": {}, + "source": [ + "**d)** Train your model on the training data(find the parameters which best fit) and compute the MSE on both the training and test data." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "1e346f4c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Ellipsis" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "..." + ] + }, + { + "cell_type": "markdown", + "id": "7e431889", + "metadata": {}, + "source": [ + "**e)** Do the same for each polynomial degree from 2 to 10, and plot the MSE on both the training and test data as a function of polynomial degree. The aim is to reproduce Figure 2.11 of [Hastie et al](https://github.com/CompPhysics/MLErasmus/blob/master/doc/Textbooks/elementsstat.pdf). Feel free to read the discussions leading to figure 2.11 of Hastie et al. " + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "ceb57457", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Ellipsis" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "..." + ] + }, + { + "cell_type": "markdown", + "id": "5e5b5954", + "metadata": {}, + "source": [ + "**f)** Interpret the graph. Why do the lines move as they do? What does it tell us about model performance and generalizability?" + ] + }, + { + "cell_type": "markdown", + "id": "ad2acfb9", + "metadata": {}, + "source": [] + }, + { + "cell_type": "markdown", + "id": "5994f0c5", + "metadata": {}, + "source": [ + "## Exercise 5 - Comparing your code with sklearn" + ] + }, + { + "cell_type": "markdown", + "id": "8f595b7a", + "metadata": {}, + "source": [ + "When implementing different algorithms for the first time, it can be helpful to double check your results with established implementations before you go on to add more complexity." + ] + }, + { + "cell_type": "markdown", + "id": "8ab310c1", + "metadata": {}, + "source": [ + "**a)** Make sure your `polynomial_features` function creates the same feature matrix as sklearns PolynomialFeatures.\n", + "\n", + "(https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.PolynomialFeatures.html)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "85b964d1", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "73c32c52", + "metadata": {}, + "source": [ + "**b)** Make sure your `OLS_parameters` function computes the same parameters as sklearns LinearRegression with fit_intercept set to False, since the intercept is included in the feature matrix. Use `your_model_object.coef_` to extract the computed parameters.\n", + "\n", + "(https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "35b04126", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.15" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file diff --git a/doc/LectureNotes/_build/jupyter_execute/exercisesweek36.ipynb b/doc/LectureNotes/_build/jupyter_execute/exercisesweek36.ipynb new file mode 100644 index 000000000..843407984 --- /dev/null +++ b/doc/LectureNotes/_build/jupyter_execute/exercisesweek36.ipynb @@ -0,0 +1,383 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "9dd8f8d0", + "metadata": {}, + "source": [ + "# Weekly Exercises 3\n", + "\n", + "## Deriving and Implementing Ridge Regression" + ] + }, + { + "cell_type": "markdown", + "id": "e5cc5739", + "metadata": {}, + "source": [ + "## Learning goals\n", + "\n", + "After completing these exercises, you will know how to\n", + "- Take more derivatives of simple products between vectors and matrices\n", + "- Implement Ridge regression using the analytical expressions\n", + "- Scale data appropriately for linear regression\n", + "- Evaluate a model across two different hyperparameters" + ] + }, + { + "cell_type": "markdown", + "id": "427d9b9d", + "metadata": {}, + "source": [ + "## Exercise 1 - Choice of model and degrees of freedom" + ] + }, + { + "cell_type": "markdown", + "id": "ff6ebdb5", + "metadata": {}, + "source": [ + "**a)** How many degrees of freedom does an OLS model fit to the features $x, x^2, x^3$ and the intercept have?\n", + "\n", + "**b)** Why is it bad for a model to have too many degrees of freedom?\n", + "\n", + "**c)** Why is it bad for a model to have too few degrees of freedom?\n", + "\n", + "**d)** Read [chapter 3.4.1 of Hastie et al.'s book](https://link.springer.com/book/10.1007/978-0-387-84858-7). What is the expression for the effective degrees of freedom of the ridge regression fit?\n", + "\n", + "**e)** Why might we want to use Ridge regression instead of OLS?\n", + "\n", + "**f)** Why migth we want to use OLS instead of Ridge regression?" + ] + }, + { + "cell_type": "markdown", + "id": "a78b2ce2", + "metadata": {}, + "source": [ + "## Exercise 2 - Deriving the expression for Ridge Regression\n", + "\n", + "The aim here is to derive the expression for the optimal parameters using Ridge regression.\n", + "\n", + "The expression for the standard Mean Squared Error (MSE) which we used to define our cost function and the equations for the ordinary least squares (OLS) method, was given by the optimization problem" + ] + }, + { + "cell_type": "markdown", + "id": "93a7ad16", + "metadata": {}, + "source": [ + "$$\n", + "{\\displaystyle \\min_{\\boldsymbol{\\beta}\\in {\\mathbb{R}}^{p}}}\\frac{1}{n}\\left\\{\\left(\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta}\\right)^T\\left(\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta}\\right)\\right\\}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "6b182c01", + "metadata": {}, + "source": [ + "By minimizing the above equation with respect to the parameters $\\boldsymbol{\\beta}$ we could then obtain an analytical expression for the parameters $\\boldsymbol{\\hat\\beta_{OLS}}$.\n", + "\n", + "We can add a regularization parameter $\\lambda$ by\n", + "defining a new cost function to be optimized, that is" + ] + }, + { + "cell_type": "markdown", + "id": "fb065daf", + "metadata": {}, + "source": [ + "$$\n", + "{\\displaystyle \\min_{\\boldsymbol{\\beta}\\in\n", + "{\\mathbb{R}}^{p}}}\\frac{1}{n}\\vert\\vert \\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta}\\vert\\vert_2^2+\\lambda\\vert\\vert \\boldsymbol{\\beta}\\vert\\vert_2^2\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "89ae11e8", + "metadata": {}, + "source": [ + "which leads to the Ridge regression minimization problem. (One can require as part of the optimization problem that $\\vert\\vert \\boldsymbol{\\beta}\\vert\\vert_2^2\\le t$, where $t$ is a finite number larger than zero. We will not implement that in this course.)" + ] + }, + { + "cell_type": "markdown", + "id": "456d58d4", + "metadata": {}, + "source": [ + "### a) Expression for Ridge regression\n", + "\n", + "Show that the optimal parameters" + ] + }, + { + "cell_type": "markdown", + "id": "a5677efd", + "metadata": {}, + "source": [ + "$$\n", + "\\hat{\\boldsymbol{\\beta}}_{\\mathrm{Ridge}} = \\left(\\boldsymbol{X}^T\\boldsymbol{X}+\\lambda\\boldsymbol{I}\\right)^{-1}\\boldsymbol{X}^T\\boldsymbol{y},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "e7b08048", + "metadata": {}, + "source": [ + "with $\\boldsymbol{I}$ being a $p\\times p$ identity matrix.\n", + "\n", + "The ordinary least squares result is" + ] + }, + { + "cell_type": "markdown", + "id": "8bb0e6af", + "metadata": {}, + "source": [ + "$$\n", + "\\hat{\\boldsymbol{\\beta}}_{\\mathrm{OLS}} = \\left(\\boldsymbol{X}^T\\boldsymbol{X}\\right)^{-1}\\boldsymbol{X}^T\\boldsymbol{y},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "2faaae78", + "metadata": {}, + "source": [ + "## Exercise 3 - Scaling data" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "8ed79466", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.preprocessing import StandardScaler" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "59d6f347", + "metadata": {}, + "outputs": [], + "source": [ + "n = 100\n", + "x = np.linspace(-3, 3, n)\n", + "y = np.exp(-x**2) + 1.5 * np.exp(-(x-2)**2) + np.random.normal(0, 0.1)" + ] + }, + { + "cell_type": "markdown", + "id": "c9fc9fe0", + "metadata": {}, + "source": [ + "**a)** Adapt your function from last week to only include the intercept column if the boolean argument `intercept` is set to true." + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "5aa9c86d", + "metadata": {}, + "outputs": [], + "source": [ + "def polynomial_features(x, p, intercept=False):\n", + " n = len(x)\n", + " X = np.zeros((n, p + 1))\n", + " #X[:, 0] = ...\n", + " #X[:, 1] = ...\n", + " #X[:, 2] = ...\n", + " # could this be a loop?" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "2ebf249a", + "metadata": {}, + "outputs": [], + "source": [ + "def polynomial_features(x, p, intercept=False):\n", + " n = len(x)\n", + " X = np.zeros((n, p))\n", + " X[:, 0] = x[:]\n", + " X[:, 1] = x**2\n", + " X[:, 2] = x**3\n", + " return X" + ] + }, + { + "cell_type": "markdown", + "id": "c5924634", + "metadata": {}, + "source": [ + "**b)** Split your data into training and test data(80/20 split)" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "676541e7", + "metadata": {}, + "outputs": [], + "source": [ + "X = polynomial_features(x, 3)" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "id": "f895606f", + "metadata": {}, + "outputs": [], + "source": [ + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)\n", + "x_train = X_train[:, 0] # These are used for plotting\n", + "x_test = X_test[:, 0] # These are used for plotting" + ] + }, + { + "cell_type": "markdown", + "id": "a58f05ad", + "metadata": {}, + "source": [ + "**c)** Scale your design matrix with the sklearn standard scaler, though based on the mean and standard deviation of the training data only." + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "id": "0c07995a", + "metadata": {}, + "outputs": [], + "source": [ + "scaler = StandardScaler()\n", + "scaler.fit(X_train)\n", + "X_train_s = scaler.transform(X_train)\n", + "X_test_s = scaler.transform(X_test)\n", + "y_offset = np.mean(y_train)" + ] + }, + { + "cell_type": "markdown", + "id": "63b86003", + "metadata": {}, + "source": [ + "## Exercise 4 - Implementing Ridge Regression" + ] + }, + { + "cell_type": "markdown", + "id": "a2f52ef2", + "metadata": {}, + "source": [ + "**a)** Implement a function for computing the optimal Ridge parameters using the expression from **2a)**." + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "id": "69f19bde", + "metadata": {}, + "outputs": [], + "source": [ + "def Ridge_parameters(X, y):\n", + " # Assumes X is scaled and has no intercept column\n", + " return np.linalg.inv(X.T @ X) @ X.T @ y\n", + "\n", + "beta = Ridge_parameters(X_train_s, y_train)" + ] + }, + { + "cell_type": "markdown", + "id": "626c81ba", + "metadata": {}, + "source": [ + "**b)** Fit a model to the data, and plot the prediction using both the training and test x-values extracted before scaling, and the y_offset." + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "id": "f9ba0655", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 82, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(x, y)\n", + "plt.scatter(x_train, X_train_s @ beta + y_offset)\n", + "plt.scatter(x_test, X_test_s @ beta + y_offset)" + ] + }, + { + "cell_type": "markdown", + "id": "2993cfae", + "metadata": {}, + "source": [ + "## Exercise 4 - Testing multiple hyperparameters" + ] + }, + { + "cell_type": "markdown", + "id": "e6cdc89a", + "metadata": {}, + "source": [ + "**a)** Compute the MSE of your ridge model for polynomials of degrees 1 to 5 with lambda set to 0.01. Plot the MSE as a function of polynomial degree.\n", + "\n", + "**b)** Compute the MSE of your ridge model for a polynomial with degree 3, and with lambdas from $10^{-1}$ to $10^{-5}$ on a logarithmic scale. Plot the MSE as a function of lambda.\n", + "\n", + "**c)** Compute the MSE of your ridge model for polynomials of degrees 1 to 5, and with lambdas from $10^{-1}$ to $10^{-5}$ on a logarithmic scale. Plot the MSE as a function of polynomial degree and lambda using a [heatmap](https://matplotlib.org/stable/gallery/images_contours_and_fields/image_annotated_heatmap.html)." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.15" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file diff --git a/doc/LectureNotes/_toc.yml b/doc/LectureNotes/_toc.yml index ad41afbdd..88cafbfde 100644 --- a/doc/LectureNotes/_toc.yml +++ b/doc/LectureNotes/_toc.yml @@ -41,7 +41,8 @@ parts: - caption: Weekly material, notes and exercises numbered: false chapters: - - file: E1.ipynb + - file: exercisesweek34.ipynb - file: week34.ipynb - - file: E2.ipynb - - file: week35.ipynb \ No newline at end of file + - file: exercisesweek35.ipynb + - file: week35.ipynb + - file: exercisesweek36.ipynb \ No newline at end of file diff --git a/doc/LectureNotes/exercisesweek36.ipynb b/doc/LectureNotes/exercisesweek36.ipynb new file mode 100644 index 000000000..e3365bb50 --- /dev/null +++ b/doc/LectureNotes/exercisesweek36.ipynb @@ -0,0 +1,383 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "9dd8f8d0", + "metadata": {}, + "source": [ + "# Weekly Exercises 3\n", + "\n", + "## Deriving and Implementing Ridge Regression" + ] + }, + { + "cell_type": "markdown", + "id": "e5cc5739", + "metadata": {}, + "source": [ + "## Learning goals\n", + "\n", + "After completing these exercises, you will know how to\n", + "- Take more derivatives of simple products between vectors and matrices\n", + "- Implement Ridge regression using the analytical expressions\n", + "- Scale data appropriately for linear regression\n", + "- Evaluate a model across two different hyperparameters" + ] + }, + { + "cell_type": "markdown", + "id": "427d9b9d", + "metadata": {}, + "source": [ + "## Exercise 1 - Choice of model and degrees of freedom" + ] + }, + { + "cell_type": "markdown", + "id": "ff6ebdb5", + "metadata": {}, + "source": [ + "**a)** How many degrees of freedom does an OLS model fit to the features $x, x^2, x^3$ and the intercept have?\n", + "\n", + "**b)** Why is it bad for a model to have too many degrees of freedom?\n", + "\n", + "**c)** Why is it bad for a model to have too few degrees of freedom?\n", + "\n", + "**d)** Read [chapter 3.4.1 of Hastie et al.'s book](https://link.springer.com/book/10.1007/978-0-387-84858-7). What is the expression for the effective degrees of freedom of the ridge regression fit?\n", + "\n", + "**e)** Why might we want to use Ridge regression instead of OLS?\n", + "\n", + "**f)** Why migth we want to use OLS instead of Ridge regression?" + ] + }, + { + "cell_type": "markdown", + "id": "a78b2ce2", + "metadata": {}, + "source": [ + "## Exercise 2 - Deriving the expression for Ridge Regression\n", + "\n", + "The aim here is to derive the expression for the optimal parameters using Ridge regression.\n", + "\n", + "The expression for the standard Mean Squared Error (MSE) which we used to define our cost function and the equations for the ordinary least squares (OLS) method, was given by the optimization problem" + ] + }, + { + "cell_type": "markdown", + "id": "93a7ad16", + "metadata": {}, + "source": [ + "$$\n", + "{\\displaystyle \\min_{\\boldsymbol{\\beta}\\in {\\mathbb{R}}^{p}}}\\frac{1}{n}\\left\\{\\left(\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta}\\right)^T\\left(\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta}\\right)\\right\\}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "6b182c01", + "metadata": {}, + "source": [ + "By minimizing the above equation with respect to the parameters $\\boldsymbol{\\beta}$ we could then obtain an analytical expression for the parameters $\\boldsymbol{\\hat\\beta_{OLS}}$.\n", + "\n", + "We can add a regularization parameter $\\lambda$ by\n", + "defining a new cost function to be optimized, that is" + ] + }, + { + "cell_type": "markdown", + "id": "fb065daf", + "metadata": {}, + "source": [ + "$$\n", + "{\\displaystyle \\min_{\\boldsymbol{\\beta}\\in\n", + "{\\mathbb{R}}^{p}}}\\frac{1}{n}\\vert\\vert \\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\beta}\\vert\\vert_2^2+\\lambda\\vert\\vert \\boldsymbol{\\beta}\\vert\\vert_2^2\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "89ae11e8", + "metadata": {}, + "source": [ + "which leads to the Ridge regression minimization problem. (One can require as part of the optimization problem that $\\vert\\vert \\boldsymbol{\\beta}\\vert\\vert_2^2\\le t$, where $t$ is a finite number larger than zero. We will not implement that in this course.)" + ] + }, + { + "cell_type": "markdown", + "id": "456d58d4", + "metadata": {}, + "source": [ + "### a) Expression for Ridge regression\n", + "\n", + "Show that the optimal parameters" + ] + }, + { + "cell_type": "markdown", + "id": "a5677efd", + "metadata": {}, + "source": [ + "$$\n", + "\\hat{\\boldsymbol{\\beta}}_{\\mathrm{Ridge}} = \\left(\\boldsymbol{X}^T\\boldsymbol{X}+\\lambda\\boldsymbol{I}\\right)^{-1}\\boldsymbol{X}^T\\boldsymbol{y},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "e7b08048", + "metadata": {}, + "source": [ + "with $\\boldsymbol{I}$ being a $p\\times p$ identity matrix.\n", + "\n", + "The ordinary least squares result is" + ] + }, + { + "cell_type": "markdown", + "id": "8bb0e6af", + "metadata": {}, + "source": [ + "$$\n", + "\\hat{\\boldsymbol{\\beta}}_{\\mathrm{OLS}} = \\left(\\boldsymbol{X}^T\\boldsymbol{X}\\right)^{-1}\\boldsymbol{X}^T\\boldsymbol{y},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "2faaae78", + "metadata": {}, + "source": [ + "## Exercise 3 - Scaling data" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "8ed79466", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.preprocessing import StandardScaler" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "59d6f347", + "metadata": {}, + "outputs": [], + "source": [ + "n = 100\n", + "x = np.linspace(-3, 3, n)\n", + "y = np.exp(-x**2) + 1.5 * np.exp(-(x-2)**2) + np.random.normal(0, 0.1)" + ] + }, + { + "cell_type": "markdown", + "id": "c9fc9fe0", + "metadata": {}, + "source": [ + "**a)** Adapt your function from last week to only include the intercept column if the boolean argument `intercept` is set to true." + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "5aa9c86d", + "metadata": {}, + "outputs": [], + "source": [ + "def polynomial_features(x, p, intercept=False):\n", + " n = len(x)\n", + " X = np.zeros((n, p + 1))\n", + " #X[:, 0] = ...\n", + " #X[:, 1] = ...\n", + " #X[:, 2] = ...\n", + " # could this be a loop?" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "2ebf249a", + "metadata": {}, + "outputs": [], + "source": [ + "def polynomial_features(x, p, intercept=False):\n", + " n = len(x)\n", + " X = np.zeros((n, p))\n", + " X[:, 0] = x[:]\n", + " X[:, 1] = x**2\n", + " X[:, 2] = x**3\n", + " return X" + ] + }, + { + "cell_type": "markdown", + "id": "c5924634", + "metadata": {}, + "source": [ + "**b)** Split your data into training and test data(80/20 split)" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "676541e7", + "metadata": {}, + "outputs": [], + "source": [ + "X = polynomial_features(x, 3)" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "id": "f895606f", + "metadata": {}, + "outputs": [], + "source": [ + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)\n", + "x_train = X_train[:, 0] # These are used for plotting\n", + "x_test = X_test[:, 0] # These are used for plotting" + ] + }, + { + "cell_type": "markdown", + "id": "a58f05ad", + "metadata": {}, + "source": [ + "**c)** Scale your design matrix with the sklearn standard scaler, though based on the mean and standard deviation of the training data only." + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "id": "0c07995a", + "metadata": {}, + "outputs": [], + "source": [ + "scaler = StandardScaler()\n", + "scaler.fit(X_train)\n", + "X_train_s = scaler.transform(X_train)\n", + "X_test_s = scaler.transform(X_test)\n", + "y_offset = np.mean(y_train)" + ] + }, + { + "cell_type": "markdown", + "id": "63b86003", + "metadata": {}, + "source": [ + "## Exercise 4 - Implementing Ridge Regression" + ] + }, + { + "cell_type": "markdown", + "id": "a2f52ef2", + "metadata": {}, + "source": [ + "**a)** Implement a function for computing the optimal Ridge parameters using the expression from **2a)**." + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "id": "69f19bde", + "metadata": {}, + "outputs": [], + "source": [ + "def Ridge_parameters(X, y):\n", + " # Assumes X is scaled and has no intercept column\n", + " return np.linalg.inv(X.T @ X) @ X.T @ y\n", + "\n", + "beta = Ridge_parameters(X_train_s, y_train)" + ] + }, + { + "cell_type": "markdown", + "id": "626c81ba", + "metadata": {}, + "source": [ + "**b)** Fit a model to the data, and plot the prediction using both the training and test x-values extracted before scaling, and the y_offset." + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "id": "f9ba0655", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 82, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(x, y)\n", + "plt.scatter(x_train, X_train_s @ beta + y_offset)\n", + "plt.scatter(x_test, X_test_s @ beta + y_offset)" + ] + }, + { + "cell_type": "markdown", + "id": "2993cfae", + "metadata": {}, + "source": [ + "## Exercise 4 - Testing multiple hyperparameters" + ] + }, + { + "cell_type": "markdown", + "id": "e6cdc89a", + "metadata": {}, + "source": [ + "**a)** Compute the MSE of your ridge model for polynomials of degrees 1 to 5 with lambda set to 0.01. Plot the MSE as a function of polynomial degree.\n", + "\n", + "**b)** Compute the MSE of your ridge model for a polynomial with degree 3, and with lambdas from $10^{-1}$ to $10^{-5}$ on a logarithmic scale. Plot the MSE as a function of lambda.\n", + "\n", + "**c)** Compute the MSE of your ridge model for polynomials of degrees 1 to 5, and with lambdas from $10^{-1}$ to $10^{-5}$ on a logarithmic scale. Plot the MSE as a function of polynomial degree and lambda using a [heatmap](https://matplotlib.org/stable/gallery/images_contours_and_fields/image_annotated_heatmap.html)." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.15" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}