Skip to content

Commit a14c6b4

Browse files
authored
first pass at page for 187 bayes (#1924)
* first pass at page for 187 bayes * add nebula slug * revise timecodes * images
1 parent f8a210b commit a14c6b4

File tree

4 files changed

+125
-0
lines changed

4 files changed

+125
-0
lines changed
35.8 KB
Loading
127 KB
Loading
Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
{
2+
"title": "Bayesian Text Classification",
3+
"description": "In this coding challenge, I struggle my way through implementing a Naive Bayes text classifier in JavaScript using p5.js. I explain Bayes' theorem, demonstrate word frequency analysis, implement Laplacian smoothing, and build a working sentiment classifier that runs entirely in the browser.",
4+
"videoNumber": "187",
5+
"videoId": "g3-PXyF8U70",
6+
"date": "2025-10-11",
7+
"nebulaSlug": "codingtrain-coding-challenge-187-bayes-classifier",
8+
"languages": ["JavaScript", "p5.js"],
9+
"topics": [
10+
"Bayes theorem",
11+
"text classification",
12+
"naive Bayes",
13+
"sentiment analysis",
14+
"natural language processing",
15+
"machine learning",
16+
"word frequency",
17+
"Laplacian smoothing"
18+
],
19+
"canContribute": true,
20+
"relatedChallenges": ["40-word-counter", "42-markov-chain-name-generator"],
21+
"timestamps": [
22+
{ "time": "0:00:00", "title": "Hello!" },
23+
{ "time": "0:03:34", "title": "Explaining Bayes' Theorem" },
24+
{ "time": "0:12:07", "title": "What is Naive Bayes?" },
25+
{ "time": "0:13:49", "title": "Setting up the Classifier in p5.js" },
26+
{ "time": "0:15:41", "title": "Coding the train() function " },
27+
{ "time": "0:22:14", "title": "Coding the classify() Function" },
28+
{ "time": "0:24:45", "title": "Revising the train() function" },
29+
{ "time": "0:29:06", "title": "Implementing Probability Calculations" },
30+
{ "time": "0:33:24", "title": "Laplacian (Additive) Smoothing" },
31+
{ "time": "0:42:21", "title": "Ignoring the enominator (Normalization)" },
32+
{ "time": "0:45:36", "title": "Quick User Interface" },
33+
{ "time": "0:49:42", "title": "Final thoughts and next steps." }
34+
],
35+
"codeExamples": [
36+
{
37+
"title": "Text Classifier - Initial Version",
38+
"description": "Raw (but corrected) version in p5.js web editor.",
39+
"image": "classify.png",
40+
"urls": {
41+
"p5": "https://editor.p5js.org/codingtrain/sketches/RZ8a1z4DN"
42+
}
43+
},
44+
{
45+
"title": "Text Classifier - Refactored Version",
46+
"image": "classify.png",
47+
"description": "Refactored version with better structure and comments.",
48+
"urls": {
49+
"p5": "https://editor.p5js.org/codingtrain/sketches/P3ngrAANX",
50+
"other": "https://github.com/Programming-from-A-to-Z/bayes-classifier-js"
51+
}
52+
},
53+
{
54+
"title": "Text Classifier - File Loading Version",
55+
"description": "Version that loads training data from three novels (romance, horror, sci-fi).",
56+
"image": "classifyfiles.png",
57+
"urls": {
58+
"p5": "https://editor.p5js.org/codingtrain/sketches/WowR2Q9xg"
59+
}
60+
}
61+
],
62+
"groupLinks": [
63+
{
64+
"title": "References",
65+
"links": [
66+
{
67+
"icon": "📓",
68+
"title": "Naive Bayes Classifier",
69+
"url": "https://en.wikipedia.org/wiki/Naive_Bayes_classifier",
70+
"description": "Wikipedia article explaining naive Bayes classification algorithms."
71+
},
72+
{
73+
"icon": "📓",
74+
"title": "Laplacian Smoothing",
75+
"url": "https://en.wikipedia.org/wiki/Additive_smoothing",
76+
"description": "Wikipedia article about additive (Laplacian) smoothing technique."
77+
}
78+
]
79+
},
80+
{
81+
"title": "Videos",
82+
"links": [
83+
{
84+
"icon": "🚂",
85+
"title": "Word Counting",
86+
"url": "/challenges/40-word-counter",
87+
"description": "Video series on text analysis and word counting fundamentals."
88+
},
89+
{
90+
"icon": "🚂",
91+
"title": "Regular Expressions",
92+
"url": "https://youtu.be/7DG3kCDx53c?list=PLRqwX-V7Uu6YEypLuls7iidwHMdCM6o2w",
93+
"description": "Video series covering regular expressions for text processing."
94+
},
95+
{
96+
"icon": "📺",
97+
"title": "Bayes theorem, the geometry of changing beliefs",
98+
"url": "https://youtu.be/HZGCoVF3YvM",
99+
"description": "Visual explanation of Bayes' theorem with geometric visualization from 3Blue1Brown."
100+
},
101+
{
102+
"icon": "🚂",
103+
"title": "p5.js 2.0: async and await",
104+
"url": "/tracks/p5js-2.0/p5js-2.0/async-await",
105+
"description": "Asynchronous programming in p5.js using async and await."
106+
}
107+
]
108+
},
109+
{
110+
"title": "Live Stream Archives",
111+
"links": [
112+
{
113+
"icon": "🔴",
114+
"title": "Full Live Stream",
115+
"url": "https://youtube.com/live/TsBDm0P0qaA",
116+
"description": "Complete unedited live stream showing the development process with all mistakes and problem-solving."
117+
}
118+
]
119+
}
120+
],
121+
"credits": [
122+
{ "title": "Editing", "name": "Mathieu Blanchette" },
123+
{ "title": "Animations", "name": "Jason Heglund" }
124+
]
125+
}
127 KB
Loading

0 commit comments

Comments
 (0)