faizath commited on
Commit
c4dffe4
·
verified ·
0 Parent(s):

feat: add the organization profile README

Browse files

Mirrors the site at fetiai.github.io in the content and order GitHub can render,
so moving between the two surfaces is never disorienting.

It lives at profile/README.md rather than the repository root, because only that
path is surfaced on the organization page -- a root README describes the
repository instead, which looks correct in the repo and blank where it matters.

Each thumbnail is an animated WebP wrapped in a link to that project's live demo,
so the most eye-catching element on the page is also its primary call to action.
WebP carries more quality per byte than GIF here: both are 720px wide against the
480px the GIFs managed, and both came out smaller.

Image sources are absolute raw URLs. Relative paths resolve against the file when
the README is viewed in the repository but against the repository root when it is
rendered on the organization page, so one of the two views would break; absolute
URLs work in both.

Every accuracy in the results table is read against the 0.9248 constant-predictor
baseline, which is why the baseline is a row in that table rather than a footnote,
and phishing recall leads the columns -- it is the number that actually moves.

.gitattributes ADDED
@@ -0,0 +1 @@
 
 
1
+ *.webp filter=lfs diff=lfs merge=lfs -text
profile/README.md ADDED
@@ -0,0 +1,211 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div align="center">
2
+
3
+ # F.E.T.I.
4
+
5
+ **F**aiz · **E**leanor · **T**halita · **I**rfan
6
+
7
+ Group 16 — two projects in search, optimization, and classification.
8
+
9
+ <p>
10
+ <img src="https://img.shields.io/badge/course-IF3070-3b5bdb?style=flat-square" alt="IF3070" />
11
+ <img src="https://img.shields.io/badge/institution-STEI%20ITB-1f2937?style=flat-square" alt="STEI ITB" />
12
+ <img src="https://img.shields.io/badge/year-2024%2F2025--1-6b7280?style=flat-square" alt="2024/2025-1" />
13
+ <img src="https://img.shields.io/badge/group-16-3b5bdb?style=flat-square" alt="Group 16" />
14
+ </p>
15
+
16
+ </div>
17
+
18
+ ---
19
+
20
+ ## Magic Cube Solver
21
+
22
+ [![The Magic Cube Solver replaying a search](https://raw.githubusercontent.com/fetiai/.github/master/profile/assets/magic-cube.webp)](https://fetiai.github.io/magic-cube/)
23
+
24
+ Six search algorithms racing a 5×5×5 diagonal magic cube — replayed move by move.
25
+
26
+ A 5×5×5 diagonal magic cube has 125 cells that must be a permutation of 1..125,
27
+ with all 109 rows, columns, pillars and diagonals summing to 315. Six local-search
28
+ and metaheuristic algorithms attack it server-side in Go, and the browser replays
29
+ the resulting swap log on a scrubber against a live objective-value plot.
30
+
31
+ The Genetic Algorithm is the exception. Being a population method it has no single
32
+ sequence of swaps, so it returns no trajectory — the interface charts it rather than
33
+ animating it.
34
+
35
+ **Algorithms**
36
+
37
+ `Steepest Ascent Hill Climbing` · `Hill Climbing with Sideways Move` ·
38
+ `Random Restart Hill Climbing` · `Stochastic Hill Climbing` ·
39
+ `Simulated Annealing` · `Genetic Algorithm`
40
+
41
+ **Built with**
42
+
43
+ <p>
44
+ <img src="https://raw.githubusercontent.com/fetiai/.github/master/profile/assets/logos/go.svg" width="18" height="18" align="top" alt="" /> Go &nbsp;
45
+ Fiber &nbsp;
46
+ <img src="https://raw.githubusercontent.com/fetiai/.github/master/profile/assets/logos/svelte.svg" width="18" height="18" align="top" alt="" /> SvelteKit &nbsp;
47
+ <img src="https://raw.githubusercontent.com/fetiai/.github/master/profile/assets/logos/threejs.svg" width="18" height="18" align="top" alt="" /> Three.js &nbsp;
48
+ <img src="https://raw.githubusercontent.com/fetiai/.github/master/profile/assets/logos/chartjs.svg" width="18" height="18" align="top" alt="" /> Chart.js &nbsp;
49
+ <img src="https://raw.githubusercontent.com/fetiai/.github/master/profile/assets/logos/tailwind.svg" width="18" height="18" align="top" alt="" /> Tailwind &nbsp;
50
+ <img src="https://raw.githubusercontent.com/fetiai/.github/master/profile/assets/logos/vite.svg" width="18" height="18" align="top" alt="" /> Vite &nbsp;
51
+ <img src="https://raw.githubusercontent.com/fetiai/.github/master/profile/assets/logos/docker.svg" width="18" height="18" align="top" alt="" /> Docker
52
+ </p>
53
+
54
+ **Links** — [Live demo](https://fetiai.github.io/magic-cube/) ·
55
+ [Front end](https://github.com/fetiai/magic-cube) ·
56
+ [Solver API](https://github.com/fetiai/magic-cube-core) ·
57
+ [Report (PDF, Indonesian)](https://github.com/fetiai/magic-cube/blob/master/doc/Tubes1_Kelompok16_18222023_18222056_18222059_18222063.pdf)
58
+
59
+ ---
60
+
61
+ ## PhishGuard
62
+
63
+ [![PhishGuard classifying a URL](https://raw.githubusercontent.com/fetiai/.github/master/profile/assets/phishguard.webp)](https://phiusiil.faizath.com)
64
+
65
+ Phishing URL classifier — KNN and Naive Bayes, each written twice.
66
+
67
+ Trained on the UCI PhiUSIIL dataset: 140,404 URLs, 49 features, 7.5% phishing.
68
+ The pipeline runs EDA, missing-value handling, outlier treatment, feature
69
+ engineering, scaling and SMOTE. KNN and Gaussian Naive Bayes are each implemented
70
+ from scratch and with scikit-learn, so the pair can be compared directly.
71
+
72
+ Dataset: [UCI PhiUSIIL Phishing URL Dataset](https://archive.ics.uci.edu/dataset/967/phiusiil+phishing+url+dataset)
73
+ (repository ID 967). Class 0 is phishing and is the positive class throughout.
74
+
75
+ **Algorithms**
76
+
77
+ `K-Nearest Neighbors (from scratch)` · `K-Nearest Neighbors (scikit-learn)` ·
78
+ `Gaussian Naive Bayes (from scratch)` · `Gaussian Naive Bayes (scikit-learn)` ·
79
+ `EDA` · `Feature Engineering` · `SMOTE`
80
+
81
+ **Results** — measured on a 28,081-row validation split.
82
+
83
+ | Model | Phishing recall | Accuracy | F1 |
84
+ |---|---|---|---|
85
+ | KNN (from scratch) | 0.759 | 0.9805 | 0.856 |
86
+ | KNN (scikit-learn) | 0.763 | 0.9807 | 0.859 |
87
+ | Gaussian NB (from scratch) | 0.788 | 0.9779 | 0.845 |
88
+ | Gaussian NB (scikit-learn) | 0.888 | 0.9819 | 0.883 |
89
+ | **Baseline — constant "legitimate"** | **0.000** | **0.9248** | **—** |
90
+
91
+ Read every accuracy against that 0.9248 baseline. The corpus is 92.48% legitimate, so
92
+ answering "legitimate" to everything scores 0.9248 while catching no phishing at all —
93
+ which is why phishing recall, not accuracy, is the number that actually moves. The
94
+ held-out file shipped with the dataset has no labels, so there is no test score and
95
+ none is claimed.
96
+
97
+ > **This is a coursework reimplementation, not a security product.** It is trained on a
98
+ > static 2023–24 dataset, has no threat intelligence, no blocklist, and no knowledge of
99
+ > any campaign newer than its training data. Do not use it to decide whether a link is safe.
100
+
101
+ **Built with**
102
+
103
+ <p>
104
+ <img src="https://raw.githubusercontent.com/fetiai/.github/master/profile/assets/logos/python.svg" width="18" height="18" align="top" alt="" /> Python &nbsp;
105
+ <img src="https://raw.githubusercontent.com/fetiai/.github/master/profile/assets/logos/scikit-learn.svg" width="18" height="18" align="top" alt="" /> scikit-learn &nbsp;
106
+ <img src="https://raw.githubusercontent.com/fetiai/.github/master/profile/assets/logos/numpy.svg" width="18" height="18" align="top" alt="" /> NumPy &nbsp;
107
+ <img src="https://raw.githubusercontent.com/fetiai/.github/master/profile/assets/logos/pandas.svg" width="18" height="18" align="top" alt="" /> pandas &nbsp;
108
+ <img src="https://raw.githubusercontent.com/fetiai/.github/master/profile/assets/logos/scipy.svg" width="18" height="18" align="top" alt="" /> SciPy &nbsp;
109
+ <img src="https://raw.githubusercontent.com/fetiai/.github/master/profile/assets/logos/streamlit.svg" width="18" height="18" align="top" alt="" /> Streamlit &nbsp;
110
+ <img src="https://raw.githubusercontent.com/fetiai/.github/master/profile/assets/logos/jupyter.svg" width="18" height="18" align="top" alt="" /> Jupyter &nbsp;
111
+ <img src="https://raw.githubusercontent.com/fetiai/.github/master/profile/assets/logos/docker.svg" width="18" height="18" align="top" alt="" /> Docker
112
+ </p>
113
+
114
+ **Links** — [Live demo](https://phiusiil.faizath.com) ·
115
+ [Repository](https://github.com/fetiai/phishing-url-classifier) ·
116
+ [Report (PDF, Indonesian)](https://github.com/fetiai/phishing-url-classifier/blob/main/doc/Tubes2_Kelompok16_18222023_18222056_18222059_18222063.pdf)
117
+
118
+ ---
119
+
120
+ ## Team
121
+
122
+ <div align="center">
123
+
124
+ <table>
125
+ <tr>
126
+ <td width="220" align="center" valign="top">
127
+ <a href="https://github.com/thalitazhrr">
128
+ <img src="https://github.com/thalitazhrr.png?size=140" width="120" height="120" alt="Thalita Zahra Sutejo" style="border-radius:50%" />
129
+ </a>
130
+ <br /><br />
131
+ <b>Thalita Zahra Sutejo</b><br />
132
+ 18222023
133
+ <br /><br />
134
+ <a href="https://github.com/thalitazhrr">
135
+ <img src="https://raw.githubusercontent.com/fetiai/.github/master/profile/assets/github.svg" width="14" height="14" alt="" />
136
+ thalitazhrr
137
+ </a>
138
+ <br />
139
+ <a href="https://www.linkedin.com/in/thalitazahras/">
140
+ <img src="https://raw.githubusercontent.com/fetiai/.github/master/profile/assets/linkedin.svg" width="14" height="14" alt="" />
141
+ thalitazahras
142
+ </a>
143
+ </td>
144
+ <td width="220" align="center" valign="top">
145
+ <a href="https://github.com/IrfanMusthofa">
146
+ <img src="https://github.com/IrfanMusthofa.png?size=140" width="120" height="120" alt="Irfan Musthofa" style="border-radius:50%" />
147
+ </a>
148
+ <br /><br />
149
+ <b>Irfan Musthofa</b><br />
150
+ 18222056
151
+ <br /><br />
152
+ <a href="https://github.com/IrfanMusthofa">
153
+ <img src="https://raw.githubusercontent.com/fetiai/.github/master/profile/assets/github.svg" width="14" height="14" alt="" />
154
+ IrfanMusthofa
155
+ </a>
156
+ <br />
157
+ <a href="https://www.linkedin.com/in/irfanmusthofa/">
158
+ <img src="https://raw.githubusercontent.com/fetiai/.github/master/profile/assets/linkedin.svg" width="14" height="14" alt="" />
159
+ irfanmusthofa
160
+ </a>
161
+ </td>
162
+ <td width="220" align="center" valign="top">
163
+ <a href="https://github.com/EleanorCordelia">
164
+ <img src="https://github.com/EleanorCordelia.png?size=140" width="120" height="120" alt="Eleanor Cordelia" style="border-radius:50%" />
165
+ </a>
166
+ <br /><br />
167
+ <b>Eleanor Cordelia</b><br />
168
+ 18222059
169
+ <br /><br />
170
+ <a href="https://github.com/EleanorCordelia">
171
+ <img src="https://raw.githubusercontent.com/fetiai/.github/master/profile/assets/github.svg" width="14" height="14" alt="" />
172
+ EleanorCordelia
173
+ </a>
174
+ <br />
175
+ <a href="https://www.linkedin.com/in/eleanorcordelia/">
176
+ <img src="https://raw.githubusercontent.com/fetiai/.github/master/profile/assets/linkedin.svg" width="14" height="14" alt="" />
177
+ eleanorcordelia
178
+ </a>
179
+ </td>
180
+ <td width="220" align="center" valign="top">
181
+ <a href="https://github.com/faizath">
182
+ <img src="https://github.com/faizath.png?size=140" width="120" height="120" alt="Muhammad Faiz Atharrahman" style="border-radius:50%" />
183
+ </a>
184
+ <br /><br />
185
+ <b>Muhammad Faiz Atharrahman</b><br />
186
+ 18222063
187
+ <br /><br />
188
+ <a href="https://github.com/faizath">
189
+ <img src="https://raw.githubusercontent.com/fetiai/.github/master/profile/assets/github.svg" width="14" height="14" alt="" />
190
+ faizath
191
+ </a>
192
+ <br />
193
+ <a href="https://www.linkedin.com/in/faizath/">
194
+ <img src="https://raw.githubusercontent.com/fetiai/.github/master/profile/assets/linkedin.svg" width="14" height="14" alt="" />
195
+ faizath
196
+ </a>
197
+ </td>
198
+ </tr>
199
+ </table>
200
+
201
+ </div>
202
+
203
+ ---
204
+
205
+ <div align="center">
206
+
207
+ IF3070 Foundations of Artificial Intelligence · STEI ITB · 2024/2025-1
208
+
209
+ More at **[fetiai.github.io](https://fetiai.github.io/)**
210
+
211
+ </div>
profile/assets/github.svg ADDED
profile/assets/linkedin.svg ADDED
profile/assets/logos/chartjs.svg ADDED
profile/assets/logos/docker.svg ADDED
profile/assets/logos/go.svg ADDED
profile/assets/logos/jupyter.svg ADDED
profile/assets/logos/numpy-dark.svg ADDED
profile/assets/logos/numpy.svg ADDED
profile/assets/logos/pandas-dark.svg ADDED
profile/assets/logos/pandas.svg ADDED
profile/assets/logos/python.svg ADDED
profile/assets/logos/scikit-learn.svg ADDED
profile/assets/logos/scipy.svg ADDED
profile/assets/logos/streamlit.svg ADDED
profile/assets/logos/svelte.svg ADDED
profile/assets/logos/tailwind.svg ADDED
profile/assets/logos/threejs-dark.svg ADDED
profile/assets/logos/threejs.svg ADDED
profile/assets/logos/vite.svg ADDED
profile/assets/magic-cube.webp ADDED

Git LFS Details

  • SHA256: 59d6ccd20917c51fb247438e9042027e6975b3c076346e3f17a730e266581642
  • Pointer size: 132 Bytes
  • Size of remote file: 1.04 MB
profile/assets/phishguard.webp ADDED

Git LFS Details

  • SHA256: e10fb3c7601639b03ea655c19d122d6ceb9e7719bacc8740fa5cf00345ecaf1c
  • Pointer size: 132 Bytes
  • Size of remote file: 2.45 MB