From b3b2ef7918c9c7f1add90523f92a2a3b78a32502 Mon Sep 17 00:00:00 2001 From: Peterson Date: Thu, 3 Apr 2025 12:02:03 -0300 Subject: [PATCH 1/4] modify forest depth --- .github/workflows/cml.yaml | 19 +++++++++++++++++++ train.py | 2 +- 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/cml.yaml diff --git a/.github/workflows/cml.yaml b/.github/workflows/cml.yaml new file mode 100644 index 000000000..e91c61511 --- /dev/null +++ b/.github/workflows/cml.yaml @@ -0,0 +1,19 @@ +name: CML +on: [push] +jobs: + train-and-report: + runs-on: ubuntu-latest + container: docker://ghcr.io/iterative/cml:0-dvc2-base1 + steps: + - uses: actions/checkout@v3 + - name: Train model + env: + REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + pip install -r requirements.txt + python train.py # generate plot.png + + # Create CML report + cat metrics.txt >> report.md + echo '![](./plot.png "Confusion Matrix")' >> report.md + cml comment create report.md diff --git a/train.py b/train.py index 415d9a9f9..f44634667 100644 --- a/train.py +++ b/train.py @@ -12,7 +12,7 @@ y_test = np.genfromtxt("data/test_labels.csv") # Fit a model -depth = 2 +depth = 5 clf = RandomForestClassifier(max_depth=depth) clf.fit(X_train, y_train) From e21fa49b92781e3a2810cdaa99be92dcb8d2247f Mon Sep 17 00:00:00 2001 From: Peterson Date: Thu, 3 Apr 2025 12:17:20 -0300 Subject: [PATCH 2/4] Add confusion matrix plot --- plot.png | Bin 0 -> 2396 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 plot.png diff --git a/plot.png b/plot.png new file mode 100644 index 0000000000000000000000000000000000000000..4a41ccf737239cd900842bc7d3acf0115365d6c9 GIT binary patch literal 2396 zcmeAS@N?(olHy`uVBq!ia0y~yU}|7sV0^&A1{5*9c;^X_vMh0pC<)F_D=AMbN@eg( zEGfvzFUiSFQYcF;D$dN$GuE@zGtyDWC@Co@w$j(ng)7j@FG|-}^kcpWG=#IjBeIx* zfj<$18CTdZ&tzcWIO*x)7*a9k?KMM21_ho21_$;(f5_CQ##L2z{)`R-gVDM7K%MuD z8W Date: Thu, 3 Apr 2025 12:33:24 -0300 Subject: [PATCH 3/4] Update confusion matrix plot with higher resolution --- plot.png | Bin 2396 -> 4408 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/plot.png b/plot.png index 4a41ccf737239cd900842bc7d3acf0115365d6c9..a4d3cee99af2cc46e94b009b04208a30c161d192 100644 GIT binary patch literal 4408 zcmeAS@N?(olHy`uVBq!ia0y~yU_QXWz;uCw4JZ;{F1ZCrS(dm)lmzFem6RtIr84*? zmK5aVm*iw7DU_ua6=&w>8S7c<8R;lwl#~<{Tj}fP!WHP{7p3bf`Z3=G8p2uN5n0T@ zAT9*LjOp_)0j&~P>gnPbQZeW4^@F?z6a)@zxb(N&ZW}}A4dExVO^rV@GB6x?{O>l9 zVkl^01Ug9JAOkZ4!-Rweppb{b0id{wL;{c$;xPb{oNN*d3=J&IJPZsDqsm7^W;79u zW{=U5V6==Jtqw*j%F#B#fzd=Tng~V{!D#PbwBIz^MI7xslQ2#o9pT40XT_{=(1-|w Mr>mdKI;Vst0E=f-2><{9 literal 2396 zcmeAS@N?(olHy`uVBq!ia0y~yU}|7sV0^&A1{5*9c;^X_vMh0pC<)F_D=AMbN@eg( zEGfvzFUiSFQYcF;D$dN$GuE@zGtyDWC@Co@w$j(ng)7j@FG|-}^kcpWG=#IjBeIx* zfj<$18CTdZ&tzcWIO*x)7*a9k?KMM21_ho21_$;(f5_CQ##L2z{)`R-gVDM7K%MuD z8W Date: Thu, 3 Apr 2025 12:43:37 -0300 Subject: [PATCH 4/4] Forced confusion matrix plot --- plot.png | Bin 4408 -> 27937 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/plot.png b/plot.png index a4d3cee99af2cc46e94b009b04208a30c161d192..d9b80cd4a85d76508ded105a8ba4bd069d213b73 100644 GIT binary patch literal 27937 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�z%}+rXm;?)>)V%{D4|oFT-|}c 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 Mr>mdKI;Vst0E=f-2><{9