From 266dcfb2e3fd7c86fad578889f8ec9e2cc504732 Mon Sep 17 00:00:00 2001 From: Vikram Pande Date: Fri, 30 Aug 2024 10:46:39 +1000 Subject: [PATCH] Restructured repo to better suit relative imports --- ECommerce_Churn_Propensity_Model/__init__.py | 11 ----------- .../__pycache__/__init__.cpython-311.pyc | Bin 0 -> 1390 bytes ECommerce_Churn_Propensity_Model/main.py | 6 ------ ECommerce_Churn_Propensity_Model/src/eda/EDA.py | 1 - .../src/eda/__init__.py | 2 +- .../src/eda/__pycache__/EDA.cpython-311.pyc | Bin 0 -> 2803 bytes .../src/eda/__pycache__/__init__.cpython-311.pyc | Bin 0 -> 4784 bytes .../src/model_training/__init__.py | 1 + .../__pycache__/__init__.cpython-311.pyc | Bin 0 -> 2809 bytes .../__pycache__/model_training.cpython-311.pyc | Bin 0 -> 3992 bytes .../src/model_training/model_training.py | 14 +++++--------- .../src/preprocessing/__init__.py | 2 -- .../__pycache__/__init__.cpython-311.pyc | Bin 0 -> 1896 bytes .../__pycache__/preprocessing.cpython-311.pyc | Bin 0 -> 933 bytes ECommerce_Churn_Propensity_Model/tests.py | 4 +++- 15 files changed, 10 insertions(+), 31 deletions(-) delete mode 100644 ECommerce_Churn_Propensity_Model/__init__.py create mode 100644 ECommerce_Churn_Propensity_Model/__pycache__/__init__.cpython-311.pyc delete mode 100644 ECommerce_Churn_Propensity_Model/main.py create mode 100644 ECommerce_Churn_Propensity_Model/src/eda/__pycache__/EDA.cpython-311.pyc create mode 100644 ECommerce_Churn_Propensity_Model/src/eda/__pycache__/__init__.cpython-311.pyc create mode 100644 ECommerce_Churn_Propensity_Model/src/model_training/__pycache__/__init__.cpython-311.pyc create mode 100644 ECommerce_Churn_Propensity_Model/src/model_training/__pycache__/model_training.cpython-311.pyc create mode 100644 ECommerce_Churn_Propensity_Model/src/preprocessing/__pycache__/__init__.cpython-311.pyc create mode 100644 ECommerce_Churn_Propensity_Model/src/preprocessing/__pycache__/preprocessing.cpython-311.pyc diff --git a/ECommerce_Churn_Propensity_Model/__init__.py b/ECommerce_Churn_Propensity_Model/__init__.py deleted file mode 100644 index b1afa1d..0000000 --- a/ECommerce_Churn_Propensity_Model/__init__.py +++ /dev/null @@ -1,11 +0,0 @@ -from .src.config import Config -from pathlib import Path - -# Model version -__version__ = '0.01' - -# Initialise global variables from config module -config = Config() -data_path = Path(config.data_path) -churn_app_path = Path(config.churn_app_models) -seed = config.seed \ No newline at end of file diff --git a/ECommerce_Churn_Propensity_Model/__pycache__/__init__.cpython-311.pyc b/ECommerce_Churn_Propensity_Model/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6337db98420218516cf7231302d75648ad8cf347 GIT binary patch literal 1390 zcmd5)&uIw@(25YZuw|LJ5EXb47rBk?92cV%?qDa6?Wn}dxXdfK!mGH- zYq-YixXxYd@&<13CT?;Md%T5PkiQZ-(JF7_HebVQIW9%(yn{Osm+>zJM6I_V(M3SNEzu=Fn@hA6 zR`yY^`q`Y@v$V4#;vqZe6|^U*9}>osQA$bZr@n54!jGvULm~Mn@*%sCNJcW8A*s@5gj^Lb1xT~GKI><|CtXO(P{xo+#AcVy%C8VDmeJ$UD!bcJPLtcjS%)?a=!JiZ@ z%le2ePR?3}ZcKh;8M-<-YbOO{-7B2HmOqEj(DliWEJNMNSvzr1bA4QcU)6irdDVU0 z9XnawdwKh~Gi_~tsBcZ{TjNUBT0dSp9!@(~KeYPOR)5^cO74s2V>@fEPn%ogdggVe X-safNIvbEQLG3))hG1rL8+!c>@Fa>b literal 0 HcmV?d00001 diff --git a/ECommerce_Churn_Propensity_Model/main.py b/ECommerce_Churn_Propensity_Model/main.py deleted file mode 100644 index bc15226..0000000 --- a/ECommerce_Churn_Propensity_Model/main.py +++ /dev/null @@ -1,6 +0,0 @@ -import argparse - -parser = argparse.ArgumentParser(description='Churn propensity pipeline') -parser.add_argument('--module', type=str, choices=['eda', 'preprocessing', 'model_training']) -args = parser.parse_args() - diff --git a/ECommerce_Churn_Propensity_Model/src/eda/EDA.py b/ECommerce_Churn_Propensity_Model/src/eda/EDA.py index 37e4257..70c3994 100644 --- a/ECommerce_Churn_Propensity_Model/src/eda/EDA.py +++ b/ECommerce_Churn_Propensity_Model/src/eda/EDA.py @@ -2,7 +2,6 @@ from pathlib import Path from ydata_profiling import ProfileReport from phik import phik_matrix, significance_matrix - # Load variables from __init__.py from . import Config, read_impute_data, doanes_formula diff --git a/ECommerce_Churn_Propensity_Model/src/eda/__init__.py b/ECommerce_Churn_Propensity_Model/src/eda/__init__.py index e203fa8..850872f 100644 --- a/ECommerce_Churn_Propensity_Model/src/eda/__init__.py +++ b/ECommerce_Churn_Propensity_Model/src/eda/__init__.py @@ -47,7 +47,7 @@ def read_impute_data(df_path, float_cols, categorical_cols, output_path, sheet_n elif '.csv' in df_path.suffix: df = pd.read_csv(df_path) - # Cast float_columns as integers, impute NaN values using MissForest + # Cast float_columns as integers, dynamically impute values using MissForest with suppress_stdout(): df = missforest_imputer.fit_transform(x=df, categorical=categorical_cols) diff --git a/ECommerce_Churn_Propensity_Model/src/eda/__pycache__/EDA.cpython-311.pyc b/ECommerce_Churn_Propensity_Model/src/eda/__pycache__/EDA.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..01a67a64a2f3c38352241953e150799f031c8aca GIT binary patch literal 2803 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 literal 0 HcmV?d00001 diff --git a/ECommerce_Churn_Propensity_Model/src/model_training/__pycache__/model_training.cpython-311.pyc b/ECommerce_Churn_Propensity_Model/src/model_training/__pycache__/model_training.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b259c40bce7d7e2c88e223b1797669c83b47fd3f GIT binary patch literal 3992 zcmd5;OH3O{8ZO&qyAAjaHaHjzfe>dB8#9wkKzXq|67qm-V0I=Qc6%Ck*)(z6R(BHu zmqDwQmO~DV6lt>BMB`;snp1WTt7_CzT78PNr`(8U4%sA`QM;Jk$&deV0`LtGfM6>C$;R4jbZ#%$ zB?s$}APXfY>$G@|f=hC{6!PxacT7pv{;eWOslH}(*T#erJUA;I&c>9K=YBv18XJIP-2QoOcC z(Yy_H3gCS}*4o*yZr-~VS{}j%k6o74?sryws4H(5yia`f`LI4B2Weyt`~=}UQ9|$w z-n{)upkcQM^=$RlZ0~(PCW~+1F>HWXVU`Zp7-VHbf%-^=;2P7ZCdJ?I($sVtZ z<9Pk91{t8h75iPsO|U|~pf`by+?)1$DzWcd z`nYDFtoEO-_(63ilK%go*L9Gd0B1q6`!#i#w3+ZauP!DXW_MXeSy2&7MUG7PLV?RE z*^-PnWw~4~$*LL1mWsJ$OF-gPS-fjT#%i2v7Gqpg$_0Lv7}Jv1q!;1SzWN zUac|6gfe{D#bvq3@#V6mwAL{;bM4y1^w`w&#l+l=(Wz-VnVh+i7+A9pjF`*{67!2H z5=gji{tlA)JbFz}Q4*TYYcyQbbG-(M>AGQIvc^niPR!Dn=ZIR1m@iU<#G-)iPA2U# z`I!W!PpHDc75D{`^IDq~x0O0q1uj)C=GVeAGqa6MGh8U;MMV{}qy~8c3`Kh_l9)ui zx-6r_lte4R7qdtiX);@GOpX_lz1ue zQR1g0KuM625Fw`1%EWY*WwEH5j+{sugfz4uW{Hngj!w-(yM@@rEX%93*>^k8Gfui~ zQsyOOx{GLqlS?ZEr&5tfnZbP(G@G&#w_9fu(zHysLYjy+cXPELt3G42HM#78E(6s) zawK;9!gOX!D94$txoW++_k~k9GbHCYy0M3Ax@M6qlJn!vmI}*KQ8E3E63uy}atpK{ zkZgMB!b;c--OcZ_21{jBG+|C81%bk{R5o2|i6h1SEBKLs41T^lHZuR2f@Ed>H{xxA zRpL6S8k(OK1;kyKOG_xLD%{bT&*o;Q#wWNN6W3>w^AlqwNkVcKabwo`Byz-yBC4yL zb;{-yIXiDvuX>)vV!mOSDzE;`oFO911$0inLIR;*73F)*l^)V@Q!{eRF`-q;QpvJJkWWPQSbp7jabl-XJ)q&hS>q{AT$ zhjv`R8QSdEVf#zixeYrXe7=>}U`mH63{!?T_TZ%M?Rn`;0#gS<(GOb6Z*Joa} zAI0rQE77M%wDw`WeHgd7RDTTZ=d-YC%yCitCpR==OCTcUG*u`vxcjJ%2t;OIcb^|V=wp3$RcFl?hX*opTtbeAW8H-OwuIy??fECq{S}ju}d5N zeMY-AW>jZJF*8bydA8jh*xgYx_A-8UJAPJ+pV#B(U&g1l<5QUZ633^sIIqWf>Zc(_ zoEg)Yah(~*%s44vlW(JSqlmkQD^5bHL-P$k`$Y3x&^;G+fXzAheB5Bd8?JlJo7cAb z_12@6K8;E1Od2z3@||!FT0$0iL&blhaH87!r30xZr{rUR)nfA*G Q=MM>ZxzF>%fQ`_90~O^Q>Hq)$ literal 0 HcmV?d00001 diff --git a/ECommerce_Churn_Propensity_Model/src/model_training/model_training.py b/ECommerce_Churn_Propensity_Model/src/model_training/model_training.py index dd436a3..d9e44c2 100644 --- a/ECommerce_Churn_Propensity_Model/src/model_training/model_training.py +++ b/ECommerce_Churn_Propensity_Model/src/model_training/model_training.py @@ -1,14 +1,10 @@ -import pandas as pd +from pathlib import Path from sklearn.metrics import precision_recall_fscore_support, confusion_matrix, ConfusionMatrixDisplay from matplotlib import pyplot as plt -from pathlib import Path import pickle - +import pandas as pd # Load variables from __init__.py -from . import models_config, insample_scores, outofsample_scores, X, X_train, X_test, y_train, y_test, Config, data_path - -config = Config() -churn_app_path = Path(config.churn_app_models) +from . import models_config, insample_scores, outofsample_scores, data_path, X, X_train, X_test, y_train, y_test, churn_app_path for model in models_config: print(f'COMMENCING TRAINING FOR \'{model}\':') @@ -29,7 +25,7 @@ train_conf_matrix = confusion_matrix(y_train, y_pred) cm_display = ConfusionMatrixDisplay(confusion_matrix=train_conf_matrix, display_labels=[False, True]) cm_display.plot() - plt.savefig(Path(data_path / 'train_conf_matrix.png')) + plt.savefig(Path(data_path) / 'train_conf_matrix.png') # Test set predictions (Out of Sample) y_test_pred = models_config[model].predict(X_test) @@ -46,7 +42,7 @@ test_conf_matrix = confusion_matrix(y_test, y_test_pred) cm_display = ConfusionMatrixDisplay(confusion_matrix=test_conf_matrix, display_labels=[False, True]) cm_display.plot() - plt.savefig(Path(data_path / 'OOS_conf_matrix.png')) + plt.savefig(Path(data_path) / 'OOS_conf_matrix.png') if model == 'logistic_regression': print(f'{model} Feature Importances:\n', models_config[model].coef_) diff --git a/ECommerce_Churn_Propensity_Model/src/preprocessing/__init__.py b/ECommerce_Churn_Propensity_Model/src/preprocessing/__init__.py index 9ff49f1..a288722 100644 --- a/ECommerce_Churn_Propensity_Model/src/preprocessing/__init__.py +++ b/ECommerce_Churn_Propensity_Model/src/preprocessing/__init__.py @@ -22,11 +22,9 @@ def pre_processing(df_path, bins, onehot_cols, output_path, bin_cols=str, sheet_ df[bin_cols] = pd.cut(df[bin_cols], bins, right=False) print(df.value_counts(bin_cols)) - df.set_index('CustomerID', inplace=True) df = pd.get_dummies(df, columns=onehot_cols, dtype=int) # Rename the closed interval '[' columns to suit XGBClassifier() class. Otherwise XGBClassifier() will raise column name errors df.columns = [col.replace('[', '(') for col in df.columns] - # df = df.drop(['Unnamed: 0'], axis=1) # Save PreProcessed Data Frame for downstream consumption df.to_csv(output_path, index=False) diff --git a/ECommerce_Churn_Propensity_Model/src/preprocessing/__pycache__/__init__.cpython-311.pyc b/ECommerce_Churn_Propensity_Model/src/preprocessing/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..92e317c22eac6d19d941b32700f37a94b227e613 GIT binary patch literal 1896 zcmZuy%WE4)7@u9ORu4yc*>N5EVDe~Xkyb7(G$0$%#&JMt5}P{d!%?!`?2M#!R=b;- z-P8_iP)ne0G1M)F=#Ya?Zi;irq5T(nmOuxy5GeGNo5A$rQ@>eNa@2Mhjplp(zHh#V z^m8VYMzGdL+LfI+LVpUPw_^WX_AbNa5h9347OG1Nl7xs%VwSuRlM$7+K)T(tK?{f~ zBvz4$LSu`7*j+%!AI29{5}QXk^@R-FoD{0lj$JXUFNDsuP-WEfnQf?DljsxxB8Q3v#t z9zRe6nL!M)ceF<# z^fW#g!HP=Mhv0KD)zi6%1`8IbT3-gSMeWej?R^I^cw1sHqY|J(F_Zd-kf=0>yhf>~39~F7pPjp2n!WbXm0SVO+SW2=^qy}r!1}62ZJ=~w+EqNWWKauNOba}L z6VoQ9p?egRL=;_V1S_P%D2mv$f%0k;Uxe3OV&E_z@gKzVOBP>xpyUmH{}PNwoSD^{ zmy^Q;Jjk!xJd8&X8~v_?+K4_HhRod@{$NoI_sA znkJe?)AH`}etOD+${SAIEj~C6YTAKbe#&wT-Qq>K^mJZ>K>1s6G*IhUvAds4ub+8z z?x%B2WApv?@oeXKwlCTf84{_6+R>%lP^fahQZbi8*(G6GluVyPS~5k6mI$Na5T{FQItHgp54f| z5*YUL%#pQQ&GVa=+nI?@W@1%dm3LA{*3WMgTd7m9h5Tmom3HP-Cv$35{!2w8qZ=PI zPd7h*{Pq*&*-UG=&>k*yh6{}gjis-zJXcbyr+=9EexfvlD`d!8nJh{yarV_yt9FQI__T zQ+0><7A>-KpfBc!*WlQVNs_dKUTqET9W>nP?Ok}t(bduK#@5CfDiD{XlGM8K#V$H2 U9gdFH?JqmG7Z2$FyG4=w4TnVJ8~^|S literal 0 HcmV?d00001 diff --git a/ECommerce_Churn_Propensity_Model/src/preprocessing/__pycache__/preprocessing.cpython-311.pyc b/ECommerce_Churn_Propensity_Model/src/preprocessing/__pycache__/preprocessing.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..915db2cd4cf10f88485f38c9e59568e0ddb9eda7 GIT binary patch literal 933 zcmZuu&1(};5T8wUH`z3`!AeQ7g&-BXms0d5#Y+;fhnQeLzz|%v`(Dzm*$>`s3hikt z1r@wo!9)C@BKk*o^5AI;JuG_?JoOf-c<9M_iLt~w@4X*yW_~koX5Rbp@eH8YZ@)CZ zCIG&3Whm)Cm(yQ(c>x57&<0DW3j&Y?NwyPKvYxcWx+p*bsCbC1kHc7~OH|sDhiY9$ zE%jGRBR`2ppz@)BQFsPI#N9D~77*!;KsoCoL*@*U`jkGDFcQx|>I$+mROzDkqKwuy z`ewg+jQrP1loe1jCp?)d#9~eNH&1w>Y9hYmGOD@EF{tO6b}N>Pj@>j{yR+q@V_B3L zR4eJe?onS`uGH36%cTXw+g4?UBZiYKhdhTx4oe*FBJ5tPFc`mg*)8El54x#Oa z$BYI}{Cwb}+Jd`tmR_Y!=Jl-{gHp=p_X~h#()1?r$&`{%`kW$mE_*J}E|)}z_$Jw=pn`~ZZX9D+nI1A-h#!N!x;