From e97c990a68b4abc186d7fae6ad7e4932960ee851 Mon Sep 17 00:00:00 2001 From: Joaquin Torres Bravo Date: Tue, 14 May 2024 12:24:23 +0200 Subject: [PATCH] regen hyperparam excel --- model_selection/hyperparam_tuning.py | 19 ++++++++++++------ .../output_hyperparam/hyperparamers.xlsx | Bin 13682 -> 13438 bytes 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/model_selection/hyperparam_tuning.py b/model_selection/hyperparam_tuning.py index bfd8141..ca31f54 100644 --- a/model_selection/hyperparam_tuning.py +++ b/model_selection/hyperparam_tuning.py @@ -149,7 +149,7 @@ if __name__ == "__main__": # Use group of models with class weight if needed models = models_CS if j == 1 else models_simple # Save results: params and best score for each of the mdodels of this method and group - hyperparam_df = pd.DataFrame(index=list(models.keys()), columns=['Parameters','Score']) + hyperparam_df = pd.DataFrame(index=list(models.keys()), columns=['Best Parameters','Best Precision', 'Mean Precision', 'SD']) for model_name, model in models.items(): print(f"{group}-{method_names[j]}-{model_name}") # Find optimal hyperparams for curr model @@ -158,11 +158,18 @@ if __name__ == "__main__": search.fit(X,y) # Access the results results = search.cv_results_ - hyperparam_df.at[model_name,'Parameters']=search.best_params_ - hyperparam_df.at[model_name,'Best Precision']=round(search.best_score_,4) - hyperparam_df.at[model_name,'Mean Precision']= np.mean(results['mean_test_score']) - hyperparam_df.at[model_name,'SD']= np.std(results['std_test_score']) - + # Best parameters and best score directly accessible + hyperparam_df.at[model_name, 'Best Parameters'] = search.best_params_ + hyperparam_df.at[model_name, 'Best Precision'] = round(search.best_score_, 4) + # Finding the index for the best set of parameters + best_index = search.best_index_ + # Accessing the mean and std of the test score specifically for the best parameters + mean_precision_best = results['mean_test_score'][best_index] + std_precision_best = results['std_test_score'][best_index] + # Storing these values + hyperparam_df.at[model_name, 'Mean Precision'] = mean_precision_best + hyperparam_df.at[model_name, 'SD'] = std_precision_best + # Store the DataFrame in the dictionary with a unique key for each sheet sheet_name = f"{group}_{method_names[j]}" sheets_dict[sheet_name] = hyperparam_df diff --git a/model_selection/output_hyperparam/hyperparamers.xlsx b/model_selection/output_hyperparam/hyperparamers.xlsx index 11584750562141b2d42534cde438f9f0cb40a299..598578e577cf2b89b361f358a0fcc87f12b68552 100644 GIT binary patch delta 8998 zcmZ8{byOVN@-^;(8JJ+f-7UBTC&As_2~LnOSmQwk2n-}R0Rn^&T!UM1hu{vu3GVhI z_kHiX@814nYIU#b(>1l$*|m3_I<~*J!%n6-#Zv8!i>o`QrOO*@4sR#Nym)2R4lbPVhrUGL-OuD?IUFCURj8=BF+156 z8jEwT)GQ``FO7dFMsAC-ynPYi$Qlzl78G?+~xS(nPI)xq@bz{E9!Ui99l~k)~3Vrb@72y-S0M`S2<@XRRTR)mNC4Td|{vSqgP*VkzVRJ4pp{b z+3BvK$QMLB^O85&*R$Alxx$up%p%(emQ61)caiR2j6bRX+<(yPn57TZ<{@+mna28Lzh_XGY9|kCYIfE z`>LY=-;~XL3rp5<6JA5Zj)AXkNk?2ByNwIN4j(eqwKq_x<8|}Dyd0NjYL^~AH#22- zL=HQWHx1@D-81FNxClO2>mluYBpy6Bsd|^;>7(~==bii8kxP%P`2&y;)&SEAH|yqM z-N{QL+c~Otx{JL;B?!t9>=;wB#;^xP^#D^gtMgrmG1DN!)h_i9?@aqhu%AP3GEH~i z+wMLLa30@g0!!rUvb~>icB7eu?%NQ7!)>zDfJdsA0Op%c<3jsPyr2?!71%@&k z12=NFRYqG)Eb8){C`88g@pPGCd7L-byHj*bN8_JHP{C3iBGMWiUZ5Puthb5{XU|5= z3f8Fx=!D!LMd7<5G;ecSQO9`v=yJJ*!0?cSd?b<1&vFKzdwVm}$>=Vws8LliTaZ(a z&+gEevUGO&CpflDm4NLfVG{X|P-r@f2Dkqq!KjdS_&h#LgM&^NOinVz^~I1>KAQ@) zd>NK^^o1ghwAr@BU;aql_G;d%Kt+u#ifJ<$AJGMeNz71puA=DbN40`wd&fqy7HLYsIYo#f;?RvuC+)rRa{bb zjb#ws6MF1=JXu=5D@k$E>wV6yw!0~tJmVlD59(~R`U|vk|K&8NmluUc&4u;dPfqV9 zQBjjk`C<;xvnhjqKO`mJ)11S#E2QpKNtajkAn)td{}Z>6$EuZBr$O| zrjtH+X&`Da8!yP~7TRB&Q?L@@$SALVv+UC;xLa}|n`PssHZY0kULx^*k>VyQMtn27 zSLHPtSMeoPztO#2;pI|H3_UgA24P9mD zuRS}1Y|U*`Z!6C1o-V!dw^PZa%^Ha2E)6)G@*$*cVKm-KI-!Q#Hf3&H zxtz*bJUP93e*2Lhm|l#wKP_gyADnU)h#nU-*o~Pb`aMbp+)q#n9hn*$u@r1*I^f2i z^$r!VK9n66)%J#nmWqC5v^D2{cQ)^r{ftPAsYqeJ$|*lGg#D_}>I}Sm{uW8EsZXo{ z@!?n9LzB+WFAocK591XFaD>2Eq^r-a(sCheEx2rrR74XG%Bl4|d-I_pf4qYj-s%=fy9qw#s)eu7pso>oPfi*9z4uJa4arFY!V}@_ZNw zBWT+|sw8WToXxw@;2aHabUCnc7$l<}Ja}jQ~GdA);mN34S~=`v9ZYqtzD=p zw0tp^o8f}5vlt#N&Z0<-@;H(daHt3LxYZB3NjXk$!u5lJu z-IAyf)#LE#wZ!C?3J!y3pFLxveHJ8Vj=#HMu^bCu+h6#+r@~giLba|EB{Gvkke7R| zfE>yu@v3f_xto}lhF%CNCKlQ#-SZN>$QHhJ6n%`*}s{} zyck@vB zqxa-^LigpDUg9V+CMa)wzdaSC=l+pg&YPt7W*IpC>Xa8vh%Lx00+U0_15vE5_@y2x z(b$1gdzTR!b{)VQg;pdV61b!2tr3&g*A;CwTbHfR7`&?%*45MjJta@GDK(ri+k0c96rGrx0UX~_vLm~ z^OQh+i^JNxeX+DI6W!mXekA-vmV6ZK`+be|hk8yxWkd319Q$IjnT@8Y)5{lVB0w6) z>M~2oA{yQfltf(&6;IV&k8_~Jkw6ZwE3F-EH|;f{nc|Up&9qS6Jqh|E$8nEy>-|R6 zT@&9g`J1`%b5#NVG#msENDpI};+wJFK}uw7(|Fq12bI*>Ux?nyLoeaBk9*IWmwBM} zsxS3$$BE$AVV~hu`{pOia@p*nNx)r~Z*aYZdW;ggYcC)z`*|KymW|5|6W-IZ)>Imf zst=LJPNpQ(LrhPV2-p(Qu;&Xe-jCvvh(+!lIb)EBMSXi`p7HSt^t@F%r!gIQg6!+3 zWA)f_(sfw^G8la$F67HbDtBi*NQ$x1u3hm}3A1jp8eKJhN1fig=nM{m%5dP*l=Q%~ zx(z0UU%1x*spf>U>W4!b94o`MXea@W)ymb@P+b=;kCnenDubRg?o*7gxK?6#NV+Aa zv^>{_9!nc{yH=rjL}N&gs#Iem>1ub}vHRpD{+Hn<%yVSI37jM(T>L@VXl7+TDRl0m z7pRf4!P^o+*kLK5Ul6r&{Q3a`CDP}zm^Q=-n&6>#+>y9&!N~0cQ*@!otc}nij4DEE zI%xy7m}Soce3#d|Wr$BaU#Tbvy;3=~K(&1xOwIz5dFsK$q(ejShK5~ZsE`gu5NhrL zOW*71g|9b@;s(LHhlBc>{L_(sL#v%Fc7sJ=ZYxbm@hkkCzTB_cBNu@iIuG1L=2mkx zsMhG`g@rzp*o5?skFhQUtb^ezUvOiE{l@~DD06aS$G$r&#>#(#m}7w1LFiJPlOHE# zB|LvEz5^GU(2-%$w!QiE>C@t;)lbFJs|-fheGyUF5|1uCceJcEQ-fJ3(i&lTDet^kc`ChqyVHI%YjG zYHv0(&z81~M*62+Rsyr`yzm4|lvyG99&6u=5%1w<0SeqEoAo`c^j3qBi`(uWXO{S1 z>rrov!qlGbyCPrs@8%+jnrdrrF&wSV--RXL{ZEDdi^l)>`pxkVjhFmG zZc*sO=4|M!z5G+02YxGP7TVj|UOf43MrF_OSe!j{ZWb;C^GIB!c=00EFM-&7%1yGg zqw*@wpF_k%{{59XsW@Ik`!1_>2K!1SMe5%LP+^V=X%6V6Ue9!W9Zu`L`YMyDI@gQ} zewYcDIN^B-bKr3(VxO4h0z2(o*a2JP8pt9&1d<#22RyQ zR;svbYQ5H%nRH|bG4!ictA1I0nVM?pc}{jUDEjeNG;n1pMncuX08e==(7b+4sUmRe z7x>@SvouHA;^dn)uTEZGs-E4OLx<~m-ddmQ)_XPdO5o;H&umF=02KXe2OCud>)rU9 zv)kL#AG&+42UWURAGl5`r_#`&2Hsk#L+y50C*QXRv^ac5bT+$43}Y?N@uLHITkORY!u0FXc`h*O$cqoa|>P|f17Wsb=Ugm3z z3?D`?yHw;IIII2D1=zhU%RlzI>~*;5%l{PG1YP52A6o&86PFlIQtpIhX_=FVyGu8T z=a3XqK*0pepX(u<96vDBKTG@|M&#QNeZ5XpXBQHEzUp&35f*LoSN7oG(h@n7o0)`!y-J+LF9zd$rI~nnTM9E0Sk?K9noh~5sU35wZ-F_d>F+6CbQlmKbrwFBBxq zOfR`YO<`t_3E*cFx8pF-%D?{*P1h;|LVb#VxU%e?#{&(Cys)^wsZ~+AEfC5Ev!Pg~ zwAKq!C%StnG*r(tWE4!G6$l>Cb%)%l%S)87OT4mBqEke{s&H#F6pK+q(?z1j?7%Rl zW+Z)+^KpK&o5OYW8mwkhdVnsGS34`fQP;FJ&;->C2O82EF?=-Cq)%ManNXcfB;+J1 zv9Ny|DZP9zgRcqWRz}$vyY+bz;TYI+A9A+qPXvZ0^%xu5z}|!s--Zf;@d;4POknIv z8{hZ(_lnbCIQAI*2+E37knkZIFfT1QJtxt) z?-Oq&fqj+kEWVjG+kOt?Qswf2)3ow_mOB#xkEGUDdI=p>-o-kkNG=UCg$OYiGu5a# zEQac6844(T-|HZ>NWFAIM3{c+y&Z6_7Y#nwMQ2Slt`pkoHvAye7?e|yn*d#Z!0lJF z&5e<;?#9^~Zpmer4rhgwJZ@TPfH z7z(8Et2VRQ`|ehp7k&j`zA1ARGg)zmTgI-sjy25$>y_I>j(bgKz+Nk2K9tf{TdT%7 zI)5nLI4h3haHjgVsBrW_*g|bqm%iYD^tfnv??KTC7|XXJ&-fbD-r8d8`?{Y;=8;9* z5qg}K+a2DD2H-v9iHJKMv{ju~Fh8*A1o*zt$aS=y+9*7II|$qh+;}nEm;Yd08+6=B z_1|bWw;i`89_ZLvSZQngg8bF@K*F%qCxE}Uc-T4SdD7Wr_4s_phhP@dX4Jad6oes; z=vIyufNu}5R2JI;#P$Hda|@0fn27`}aFs+0G4fYr6J=!l_CQ|SP;uDm;P)Yh5~20- zqoYv@Wpp*)J zY^Kmho&SL@5=Mca4K917T(tq?-lBcQLr7vejzO#gM6mYeL1f%xtVoG>gUVN=xYLx? zT{I@92AcbQDrnsb%lK4t&ve-hToAVO&j-b3=p+e$CBi@y+h92eek>@6 zIT}=fL2a2pzz&vHqRtybfvUd8!*5J3SU!RuDmWND=^+~Oo*UIPc&$Kc9U?M`kM(h1pqKv9Mj>aFQ&u}!JJQB*pT)j>j z6>Hwk2PoDjEnKndm03C)Ez=3OVT5MTN|h_ZuBSdV9cj;a-B6 zfKbo=t}#}cs6RUIuan&;YA?PCIBn@41_0c7z_u0L!m9Ped+&7lZZs_d7Ot03QFZfH z^W|Kdp_Y%xl*%2?kmEyRe`$Xg0GG;9q4~ZSrNq)#7&wV}lMk~)II%N!>W{@1B>8BQ zn`5$gwtXQ^<|fQGQzRqkHC z;9V5Z7MO2uSgJQexb_^s48W%txg%4JoO$>sNRU^mu^Bvq#NuBfAK?G15%}SeNC<-- zi9{liiB3#uxiO-~w(RDs0*#-)f0gq*@(BFOSi>4&;iWs6bQ&r_jxt4A_XEkCxD8p{ z+sP*0XO@1)MJ&5E3C@j6CN}z&)5!_~L|zW|#QOTWuknm)hf<55`^*SyTg!p^Diw%4 zg~@Ac&;`inbWH)mYN)IHiGlWP)3DO(w{S>7R(Q8X(@`;XT5PS4Qzq=81{HnF#yH(t zJ*A%6F+;F2^|S8fu}&35@v5)6*Px^bW?G8j4ZbkI$;gc5z>}wc36km~5P9L(Nz9BYFVN4+6l^*oDpHtA434dOmRO2m=}y1?hr zG-bO-EhOhH0`(N9E#&7wz0i3tg2c-pKaDz?5J~6e^G6b4JMj>k>ZI?z%vY}@=Z?U2 zod9FG19qX-Re)zcrq^Y^;Z6I~M-qX$R{te>6!1^HfQJnPq~&1umJ!>!ydzdc`QF3a zf%Tl_4V0}}j8J-ps~w!1NYDmhfHI1=%ZeCzfTq@rDLH%yr@%;>zP7ao(mgx2W(E>q zJ)%A0coVDBWDMC?qKT1mBUd0gA%bRCyIuJWRQEeyIa`LvCit0^w?~n z`+bHrad|t@7P47xkrUJ`dO6-~?zOI%fC=(q|GLV@m~GU)9EeB{T&$A-aoC;uQCwh> za$A9=Iov-*#G?dg$d3-ce~WWP)lsBR`67VO^mSDc;&tWtV%4`qxH( z=FDOhj4Dr~RDhHtg=nF|9Vv7a0T0E08oZ&v^u@q4TyxQ_4_)Z)WV)MK9H^K%b^=P0 zPJY&7{=_h~Hom@?l)J_&y|u%`Dim~6K}n~jMqNvn52B^%wg~0MKjdOy{*XQvK$U|` z6W&6!bZ`?9Q7Kb0=a_Be7M4u&9TW->U>cdgij-$85E=KcMpVZ`*1v}>66g(XVK+Es-3O4eP>JD{Vh!V_&!)knet=iP6jJDb<`Yv=`P7w5h@ zIWON^8-ZFc`wW&m+hy|`#*`n>|G5L1Y9az|9(Uj$g%1ye5CH=JX~xevuknMzO=S;b zT%sauHG(Xu3Y@SV1F2@5eQmk;ov=sS^0vIka}E}>_m~Kkv3H+E=K|sB!_Vo&W`3Sm z>pxpdptM%!)6K1RPwVG(+Hla^*~nQ;##&@^FtmScwJD^<@cE1iC&?;+@Lw06*z;yo z)w~qRm@ou%*OQ=C@|En0PD?II>IWrq-lyi?eYy@)q+{Dwxw;!Ob>jTX2pv_?l|71@ zd{AThNw!kCsmtRR4q^sBF6Q@Ab2mE~Pc)_;n{79%_Mx|_O6D6w??w*KY@C(VFJF}< zwBSj;%!2z2uWiO1n$F&uLpkfYYdw!_n_YK{;z{0#pf?)=GG-Mbt!&URvz-dyP7}k;^lx&=zQ!VnN!kueT(I*TJrT-%?8Q4q%_Bbc;&}oP5!OtB z1h+z9;DcO4F<(q=hw9?&COenT|v|S@Wx2U=b%EM@)d0Ec3y<1QauFLC(%UPwRs!RBF*Pt#5@$ z?iYmHLu%|CMQa#{{k&|yirqG59O0Db%BGe<;r$t+n_NY%s>F$m5?B+K0AoUUI%0*W zOovIItPnI6U_oc)0I+FP!=o~`z#T7LYcU29HMOno#_6%?KhlAt$de9s6I za00DH?2shm6ca2HNfN=v}5qS9_QI@{|V zd?eLkch@?DlQ2K^>Gi_2KK!9_X`$Suw2ZkMdNw)0Cu8zs+gftL6+9vWc2!wvB+$UB zlS4VZw!oRfL3IjWDfkf_emIuv`=!NJ+zxxw1P-ymlr-a*KG?fot*5N>8L#j!%qZ$V zcYAW-Z`p*f$hkY~iA)8!{l1q{`Zr979zg27_BISV#Yn-^k&(FpIYgDpYm}kRt>YbA&pV+VhT_rR%B(ZAtylMs z?LA^R4?HbLnVN0AbSbOhuE`(2`aH>4BGRRWoLjkzT(pG+0WRm08_+`(k*k|!kJImV zWuneN-NRTqWzB_!y|3Xfzy`aenY2*7qD--J@J_S(1{kCm>J+c_wrxyNF{)NH65R9P z!HY>N^KtinZ)+`awnsi-Q;Q4c2fwLmc|-}tAV0M_h7gtC&1Yfn9YZo}Z}OhP zL4!umGdbRzP^=QJjfm=FT+Z3!oRG%M=F_7bTc{`Tw+fzTNIFA-c4*9M-??H__VQ#K zxG>bg#hQp9dKt^Gr@z3Qq(?ceTCcL1G)I8-sw^T0X!!~qH>=>;S3FV?Z1&X<&Jjcd zrzqt`SX;SDQ2eJk65RoN7ldu=<3T4UPU%V6PGZ?C!0q%bf;w67LjpDFiWRpCU3{>f zb}BagddlG%yUL4*lk5CAI&npw+ODKlU;|eBM1di3RYO6U&QbnChTOWT(>pOZLIy}w zLD8dPFV|4gAfayB1T(~9~=YI7F5Wd`zSzVzVO!x-0gH*(HQYe&2 zuI2&(Pl7X-;q_T*TNW!Y*?ARI5Ie^6Arzrr9kBb_t2f!y#(5yE%wCiW)zalN>n_oZP(VmghY&gXi{!azeyLo6RC zDb%G@zV>E{I>+FV%_rR5kGzw~kbN^}MH2K$m+ULYc;YfhtaLJo-=!=t#_i5dOY3`B z>_|EmNLvd0tq`_5>932U{tctUK(S45Wk-p5jGaX6*6-?i`lVbJ{dglz3?M!qHncGZ z;@ovCFZ;zNa4D6RSC71j{xz`&f89$82!Q|W8DkWWF#y!c=Mcd%D-DTEqq_`m%ldeAfM=E zF*Z`NsZNrM$jYzz`|wA(|Bu;+N@L~`B&042I49fYqp2ijFGl=hyE*XwveTS)e=J;z zTNLBJGZOG{Zh=3~TDZmkJrsb$BS`hf?e8l0(Z9PG|MuZ0{wsoI zVpO==^Z!Kfx0?C4vpv}#XYRlB&A-F=Uk3KiKY2|FZ>1uI&;P&W|Hj~dFV9N%S1jbb z;6DlF;w3{eW`e8mKKpa$z)NPp$%=qr`o`MPos;9w@4q9s-Yy;uew_{CG|d5j$w!YS!S!dQ{{zkA Bh2j7J delta 9203 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 -- 2.24.1