From 83b76a66e2f3c0aa954b4404c626b124e783d657 Mon Sep 17 00:00:00 2001 From: Joaquin Torres Bravo Date: Thu, 9 May 2024 15:57:46 +0200 Subject: [PATCH] hyperparam pre orig --- model_selection/hyperparam_tuning.py | 12 ++++++------ model_selection/output/hyperparam.xlsx | Bin 14138 -> 0 bytes model_selection/output/hyperparam_pre_ORIG.xlsx | Bin 0 -> 5351 bytes 3 files changed, 6 insertions(+), 6 deletions(-) delete mode 100644 model_selection/output/hyperparam.xlsx create mode 100644 model_selection/output/hyperparam_pre_ORIG.xlsx diff --git a/model_selection/hyperparam_tuning.py b/model_selection/hyperparam_tuning.py index 0e5bcda..fa7dc54 100644 --- a/model_selection/hyperparam_tuning.py +++ b/model_selection/hyperparam_tuning.py @@ -11,6 +11,7 @@ # -------------------------------------------------------------------------------------------------------- import pandas as pd import numpy as np + from xgboost import XGBClassifier from sklearn.model_selection import StratifiedKFold from sklearn.ensemble import RandomForestClassifier, BaggingClassifier, AdaBoostClassifier @@ -78,7 +79,7 @@ if __name__ == "__main__": "AB" : AdaBoostClassifier(algorithm='SAMME'), "XGB": XGBClassifier(), "LR" : LogisticRegression(max_iter=1000), - "SVM" : SVC(), + "SVM" : SVC(max_iter=1000), "MLP" : MLPClassifier(max_iter=500) # "ElNet" : LogisticRegression(max_iter=1000, penalty='elasticnet') } @@ -89,7 +90,7 @@ if __name__ == "__main__": "Bagging" : BaggingClassifier(estimator= DecisionTreeClassifier(class_weight='balanced')), "AB" : AdaBoostClassifier(estimator= DecisionTreeClassifier(class_weight='balanced'), algorithm='SAMME'), "LR" : LogisticRegression(max_iter=1000, class_weight='balanced'), - "SVM" : SVC(class_weight='balanced'), + "SVM" : SVC(max_iter = 1000, class_weight='balanced'), # "ElNet" : LogisticRegression(max_iter=1000, penalty='elasticnet', class_weight='balanced'), # "XGB": XGBClassifier(), # <- # "MLP" : MLPClassifier(max_iter=500) # <- @@ -142,7 +143,7 @@ if __name__ == "__main__": # Store each df as a sheet in an excel file sheets_dict = {} for i, group in enumerate(['pre']): - for j, method in enumerate(['', '', 'over_', 'under_']): + for j, method in enumerate(['']): #['', '', 'over_', 'under_'] # Get dataset based on group and method X = data_dic['X_train_' + method + group] y = data_dic['y_train_' + method + group] @@ -154,18 +155,17 @@ if __name__ == "__main__": print(f"{group}-{method_names[j]}-{model_name}") # Find optimal hyperparams for curr model params = hyperparameters[model_name] - search = RandomizedSearchCV(model, param_distributions=params, cv=cv, n_jobs=3, scoring='precision') + search = RandomizedSearchCV(model, param_distributions=params, cv=cv, n_jobs=8, scoring='precision') search.fit(X,y) hyperparam_df.at[model_name,'Parameters']=search.best_params_ hyperparam_df.at[model_name,'Score']=round(search.best_score_,4) - os.system('clear') # 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 # Write results to Excel file - with pd.ExcelWriter('./output/hyperparam_pre.xlsx') as writer: + with pd.ExcelWriter('./output/hyperparam_pre_ORIG.xlsx') as writer: for sheet_name, data in sheets_dict.items(): data.to_excel(writer, sheet_name=sheet_name) # -------------------------------------------------------------------------------------------------------- diff --git a/model_selection/output/hyperparam.xlsx b/model_selection/output/hyperparam.xlsx deleted file mode 100644 index cf23ae22eda7fecc10b15ae0a5a978074eb30f38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14138 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 E1380llmGw# diff --git a/model_selection/output/hyperparam_pre_ORIG.xlsx b/model_selection/output/hyperparam_pre_ORIG.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..c1d30a63285d6fa1958c1db6b784d69e0b233314 GIT binary patch literal 5351 zcmZ`-1yodP*B-j1MQJ3YyE~-QD=`8B64D_0xiD9<7ek$xZO=PGx7wLFbT`hjub=wclGwNDyK!=N5eJ^P(eWL427z zvWav6*iG*)5Yk=bN7%0jsKZg{lAHMWSdo$38b~cY;u%3aXW7kANzsd9LaN3$l6FnC zS1Y4w5e^W%Npt}e^2ax~( z!hic~=ICtk%i)4pbpD0N$=gd*YROZhSFkqSmDaF4$s%@r&94574~l>tmi}t z7KNb)>%Dd3%&q2+;&J>Ph*N&>uMnVdwu4J~Ij5+%fc z2!1FYyyWCc_VjEkd1TBxqI;0Ht9YkwmG1C!Un){B&}wz2EnM@@$b2wNrzb!M0MefV z0K|yMc-V2dSXtOx{9bu}#b#gM05mU5;&)In>R}1D$AJn4*3}S$tlbuBK7jW%Xo3lW zQFfl@v0(o;ML~kWB)t7N^`#5qZU}ZDG%oADpJ!Az=x}9wu{K3)5ffxt3S; zco_&~xE~i)9JXT@s2SDjTLZd;efx=tx)y^XFjYNB2B!^I4am9Zr@z-MEa`%+?Q$L| znw$6$#p^mb8HFh*I$eI&f0} zY5hkWi#9a$!@g>FcDLJDO6l76j*Tk?1oitSpfxGO^Cn0!dGW+VGk_y*KJf1StjK|R z7k+#4)%7C};kv=`2q#L^)#qO_J2Ou0+VW+vYVxc{&1d2B<*|jIqF!iD{PbPfO|weJ zjxx}kuytRWhz^IAje6j<9%+Vlm4`!1MqPHTnV#O1+ve{)w31a=-}NFQt=*KKpalS( z+@^=dQId>UE?pDI=cv9c$rv62e~5$=-a>m&r>(~yC-EydXF$*%0ED{7)U^BrJzE#q^MS)16zMNq^@9yPA%&sWRsONeJn`sT>CJv z?(Ijgi9Qi@%tK?mhVc4jsX)A>N#EXZtn0{h>;u9$BO%1QBM}h7HtG;zmDK&*w?NdJ zOrtL4j_shqH#ZG_Aya&I?9o3JC&^Sc@R^FFc6j+Q@={-7wSaYPvOb0KOBPe}Vxt{3 zQcG@nd0-1AL7TP8gS?UM#^!}OOU{GZMf^E^VFd?`rxH2i^+NQ%mK_rj2FnT#2HjWX zJo7XBoXlo=&cl7Z+7}spyd1c;#coJ1_*l{l1kDQPcSeIO=r?+v6Wg=9I zpTyp-l!0BL-lSpXh@E8B+=L?=<6XsbY7Wc>YPyQ0=v`!(mEE!m~_}rmG1=BG&u57iDs3FyW-M%dA%fcnpc!)!!WR^fy zsFHi~_(kg$n{u~~aGN||9Z~Y5=JjvAZ#7;t5V_UiBl9+X5&7t4!DCr?yuyKt#cmMx zl4wo+)&A60T6($H6SvD`_YRZe8>fCn{7tbfzR$k-V?O zMWZ8gUOza9w{ef0xnvKt2W#`1PmvACg?C8sIm^vzGoF;sGvNd;tZ5H_A#Y_eQSI__ z$l!Q-w_r3WQ9~x7aFX|7mAX0+jp&T_h@L#c`gS zp!Y73nX6fCpn+N4I9+tM;5kRIr|HY8Z-Fn`wy%4R8GV&$48Te-M8nzO`* z%SwL43vlxzYu1)?&vTvnDPFrMEu*8St+ke13qhNjO>8V;#d6URBVEMtl{&&6P;uuk zwtpc)9#;0P6#UU;vW~gfhZ=?KDu<$hE9CK@P?MlXo{T)G0pq4c7Guv#J)M*-TU#w5 z8hkd|f_+K+m-i$+_2a!M}@#> zJ1C|LC-2TpyXS*Ke@5%X%Yg9=O^u@Lwk_LiFE*LSVu(ga~RSi=b^T}e3S9@Qst1-*+QfxH3u8RO)nMK|uJxx==l{^ZS1cnnq%G5}zY0|4Ot z<_*Zj)6N3)YvfweU5HNOCb%K(#z;`tdR{D>FF3A}IB!$16xy0<62xd+%u{0C*2-5$ z9Jlvi3H~`7d_FL@v_*k zb-pPCi=*F++qx-`rwNCJ=0Q&RvIoVKlAW%8McbqYW41&DzYW{v_) ztABg|Eq?a~qQ=d%LUXTO_UKw$EP8v6&Ad7e@ts~!EI4^@G8YTl_8WxavcWUR(sz!Y zQ*1@bek8PW0@=J;y0~wEs^i4Z`$6}^>rggQ+nN7;L~j{wE&{V>02LV z$~iHnSaD(BQwDG3JsRpp6K&upi!`2nb(^+iBu??u0vuUmd`BL&j-OP&wmK8)h8@7$ zMmzK_^Q=YOFUhom6o0O5Vg1dpMsq%&ZgYT8dOsDjaO56ey~dsviaIu$Xw7GpE#wR5 zS5vp8>W9)gJNV+o$4|z*NXD_K^fIi-%Z=*+dt$m>njMKKvr~sjQR5OB9jqA}2hD_e ztgtWCl@H&}F!*;pHzb*`Mz@p|x^7RiH=Os~??FX%qNw2R6B=!4!wfS=g9H#T_{P45 zl(y6R-o$v8Z8sw;DKvOd=#Q0>4r4b9<&?E48>5zhBa|B1PnwzgjveY9Lq9Xx0!hy4 zaN`J{gq{X3-_{-Tp>XpF`lsMk4OW}U6^iranh)?LDuxx)IS<4=0*sS6_Z32jgJlR> zohC7LGtIL4G5gIVQ4$%kzCws53`n$du$#mEVndl>gK-FlI{QFGohV``v9C>N84|X> z%6pwi4r&}U+FibDxxo7~qw5uS-?t+&`5_{!5lIa&cDAqsadG}yGvZVoka=*WD~K$N z)joD3^OVk3%7x)Hgm2}2=#Dk(K7~ikw$oY>s@`R0a#Y~+XS-2?77Fa3+}(zAx&mc@ zDq9wl%(uBfRsmIMjvRi-=-Dg*`?nLuK8`Mj>3TKLwel%;>~0gN#=;$&2D{}YAPemA~AP=aV=_O#g&*(BL zv*KMpJ$N%`7fd~dc_@p+{-NpNQfn{x(T+~^ElF~!usxmLSA~P!VVlRVP+fKKq8YNw zkB>;Y0`#VYPGvu3D_~5iN?!r1;SMe|*X~epRQvr*Wj(2BPWKG|dt(LP z?s`)hBDPnEIFtX5@$Y>4cclN$t=d?L2k*FXgDZ$O0gs9&bC3%;OG(MXf-VRHpM5Ur z+^6UOC{ZQ=SU9*CYkN9bfL{Gdrm}dL211yC8W((bwc!(XlHTQvWZP@U0e8R3`<7+u z=;9c&P^FUn881;a4+{SYx@Ih?H$xo~wUp5Hlp~=DmYxcT2Zmr~(z_~Y5Zx7Kg#A_P zjIrj|=tIEjfvkykMts(-!vaR-n1|ImKnxtJF5>xYsnZxaM$Q<%zP5UXuW}^M z-00lb0exoZB%2vt9Y%M`_Er1bDBy z5{Z=$MGr{lP#o(aGRzVQF|(fXinU-p57Rcd*bKZ9C%Mx6vRU{@xs1JR7fEb1__x2<^LC@ z5CQ%B2tY*m|4LN%(f1{y-&g=30IBld=>HXr?!)ivDF46*5TE}qs>*!>_vh&U7zo6{ z{M*2PovQC!xj$9>#|n}hq9h~S_-Dqr54~T$|ACS|_@kKL2i`A-{{U|hK*TryP1*b4 x`#k>#Y>E&T5#axa_4n=Er_w)m6cK{oe<7BZDjGue0sycOrzE0~#}oZ}`X3JCbQ%Bv literal 0 HcmV?d00001 -- 2.24.1