No Black Box Machine Learning Course - Learn Without Libraries
In this No Black Box Machine Learning Course in JavaScript, you will gain a deep understanding of machine learning systems by coding without relying on libraries. This unique approach not only demystifies the inner workings of machine learning but also significantly enhances software development skills.
✏️ Course created by @Radu (PhD in Computer Science)
🎥 Watch part two: • Machine Learning & Neu...
HOMEWORK
🏠 1st assignment spreadsheet: docs.google.com/spreadsheets/...
🏠 Submit all other assignments to Radu's Discord Server: / discord
GITHUB LINKS
💻 Drawing App: github.com/gniziemazity/drawi...
💻 Data: github.com/gniziemazity/drawi...
💻 Custom Chart Component: github.com/gniziemazity/javas...
💻 Full Course Code (In Parts): github.com/gniziemazity/ml-co...
PREREQUISITES
🎥 Interpolation: • Linear Interpolation (...
🎥 Linear Algebra: • Learn 2D Vectors with ...
🎥 Trigonometry: • Learn Trigonometry wit...
LINKS
🔗 Check out the Recognizer we'll build in this course: radufromfinland.com/projects/...
🔗 Draw for Radu, Call for help video: • Help me make a NEW Mac...
🔗 Draw for Radu, Data collection tool: radufromfinland.com/projects/ml
🔗 Radu's Self-driving Car Course: • Self-driving Car :: Ph...
🔗 Radu's older Machine Learning video: • Learn Machine Learning...
🔗 CHART TUTORIAL (mentioned at 01:45:27): • Build a Chart using Ja...
🔗 CHART CODE: github.com/gniziemazity/javas...
TOOLS
🔧 Visual Studio Code: code.visualstudio.com/download
🔧 Google Chrome: www.google.com/chrome
🔧 Node JS: nodejs.org/en/download
(make sure you add 'node' and 'npm' to the PATH environment variables when asked!)
TIMESTAMPS
⌨️(0:00:00) Introduction
⌨️(0:05:04) Drawing App
⌨️(0:46:46) Homework 1
⌨️(0:47:05) Working with Data
⌨️(1:08:54) Data Visualizer
⌨️(1:29:52) Homework 2
⌨️(1:30:05) Feature Extraction
⌨️(1:38:07) Scatter Plot
⌨️(1:46:12) Custom Chart
⌨️(2:01:03) Homework 3
⌨️(2:01:35) Nearest Neighbor Classifier
⌨️(2:43:21) Homework 4 (better box)
⌨️(2:43:53) Data Scaling
⌨️(2:54:45) Homework 5
⌨️(2:55:23) K Nearest Neighbors Classifier
⌨️(3:04:18) Homework 6
⌨️(3:04:49) Model Evaluation
⌨️(3:21:29) Homework 7
⌨️(3:22:01) Decision Boundaries
⌨️(3:39:26) Homework 8
⌨️(3:39:59) Python & SkLearn
⌨️(3:50:35) Homework 9
Пікірлер: 497
Next, learn from Radu how to create a virtual world, populated by self-driving cars: kzread.info/dash/bejne/iJN3ma5wqsjSqps.html
I woke up here
@reynoxhaha2365
17 күн бұрын
bruh same
@Schnickenpick
17 күн бұрын
@@reynoxhaha2365 I saw someone who woke up here but some how when I wanted to reply the comment disappeared😂
@Ar7xM
17 күн бұрын
💀 me too
@Schnickenpick
17 күн бұрын
@@Ar7xM we’ve gotta start a club
@Ar7xM
16 күн бұрын
@@Schnickenpick hahahaha
Best part the course is not using a Library. So by learning implementation steps one can write in any language. Dr. Radu is just awesome
@Radu
Жыл бұрын
Thanks :-) glad you like the course.
Hope you have fun with this course! If you have questions, comments, or suggestions, please reach out in the comments section or on my Discord server. Happy Coding :-)
@2plus2eqaul5
Жыл бұрын
Your channel’s ‘My Weird Stuff’ section captivated me, even though I was looking for ML 😆wish u all the best
@Radu
Жыл бұрын
@@2plus2eqaul5 Haha! Good :-)
@davidmurphy563
Жыл бұрын
Hey buddy! I so enjoyed our exchange in the car AI course. I'm dying to do this but I'm still very busy... I'm curious why you convert to csv for python, json works just fine in python. I suspect that json is just as common in python as csv, maybe more so. Meh, csv works fine too. Anyway, just wanted to thank you for spending so much time helping me and listening to my silly ideas. A huge thank you!!!
@Radu
Жыл бұрын
@@davidmurphy563 True, they are both natively supported in python. It's just my guess that CSV is more popular (me and my colleagues, at least, used it in combination with Excel and it made some things easier)
@thatsalot3577
Жыл бұрын
You're the one of the best and wholesome teachers I've met in my entire life.
This guy is one of the best teachers on KZread and he is totally underrated.
@Radu
Жыл бұрын
Thanks, Aitor :-)
@niyagentleman8143
Жыл бұрын
@Franks Laboratory too
@aitorplaza2560
Жыл бұрын
@@niyagentleman8143 I know his channel and I agree with you, he is also a really good teacher.
@niyagentleman8143
Жыл бұрын
^^@@aitorplaza2560
This man is the most underrated in this community. The content he made is just insane.
@Radu
Жыл бұрын
Thanks Iván for the nice comment :-)
@nikachkhobadze7710
8 ай бұрын
Yeah and it's free 🤯🤯🤯 its unbelievable for me
@m.h.6494
4 ай бұрын
@@RaduI really love your calm and friendly teaching style. I feel you’re a very good person. Thankyou!
This Guy is a genius and really good teacher, be blessed
@Radu
Жыл бұрын
Thanks :-) but not really a genius. Just a lot of practice.
I have a saying for myself "I don't want to learn to use a library, I want to learn how to write that library." Free online courses like this help everyone. Thank you. I haven't started it, but I've wanted to get into learning more about ML, specifically from Javascript. I have a feeling this is going to fit my needs perfectly.
@Radu
8 ай бұрын
Glad to hear you found this course. Hope you'll like it :-)
@stbuchok
8 ай бұрын
@@Radu 30 minutes in while also modifying the code slightly for what I like. I don't want to use Node, so I'm going to try to translate it to C# for the server side stuff. But I'm enjoying it so far. Although I we aren't at the ML part yet, still nice to see everything. Huge thanks from all of us.
@Radu
8 ай бұрын
@@stbuchok Good luck porting it to C#. I don't think there'll be any problem with that.
Hi Radu, I just finished the first part of the course. Great so far, thank you. You asked if there was a better way to handle the download anchor click. I'd like to suggest the following: const element = document.createElement("a"); element.setAttribute( "href", "data:text/plain;charset=utf-8," + encodeURIComponent(JSON.stringify(data)) ); const fileName = data.session + ".json"; element.setAttribute("download", fileName); element.click(); There shouldn't be any need to actually inject the anchor into the document. You can simply create the element and invoke the click directly in memory. Hope this helps :)
@Radu
Жыл бұрын
Ok. Thanks! I'll try it out.
I really love your calm and friendly teaching style. Also very well explained! WOW! Thank you so much
@Radu
4 ай бұрын
Thanks for watching :-)
phenomenal course! Dr Radu is the best and with such a patient and explanatory demeanor, a genuine pleasure to watch and learn from.
@Radu
8 ай бұрын
Thanks :-)
loved the earlier part of the video but it got kinda hard for me since I'm not that proficient in JS, will definitely revert back later. Thanks Dr. Radu
@Radu
Жыл бұрын
Sure. You can also ask if something is unclear.
Imagine having this guy as your professor So good 👍 👏
@Radu
Жыл бұрын
Thanks :-)
@PhilR0gers
10 ай бұрын
By watching this video, we do!
@Radu
10 ай бұрын
@@PhilR0gers :-)
This is fantastic. I've been following along, keystroke for keystroke all day today, 5 hours to reach the 54 min mark - I pause a lot to double check everything. Unfortunately, I've hit a wall and I think it might be a Mac thing. When trying to run the dataset_generator for the first time, about 54:30 in the video, it throws an "unexpected token in JSON at position 0" (two spaces after 'token" implying a null/undefined value there). figured I'd share this in case, 1) someone else has worked through it, and 2) you might not have received much feedback from mac users if your students are a PC clan. In any event, I'll eventually debug this, I'm just so thankful for you and this content. Please keep up the good work.
@Radu
7 ай бұрын
Can you share your code on my Discord? I'll have a look.
The fact this is free content blows my mind, incredible value. Thanks!
@Radu
9 ай бұрын
You're welcome!
Really looking forward to part two. This is a very effective teaching style for this subject.
@Radu
11 ай бұрын
Thank you. Working on it now.
@KiyotakaAyanokoji1
9 ай бұрын
@@Radu eagerly waiting ☺
@Radu
9 ай бұрын
@@KiyotakaAyanokoji1 there are already few videos out on my channel.
Am i the only one who woke up here
@threeuniquefingers
6 күн бұрын
Apparently No!
@marshallwilson9344
4 күн бұрын
I Did
@gordjy
2 күн бұрын
Lol, me too
@W.H.A.P.
2 күн бұрын
Me too - must be destiny
@SweetLilitis
Күн бұрын
Lmao
awesome loved it was no library, great way to get a grasp of how things are made under the hood. great tutorial doc! make more!!!!! always the best free code camp, I learned coding better with you guys.
@Radu
Жыл бұрын
Thank you :-)
I decide watch this course just to validate the summer, and it catch all my attention. Thank you very much.
@Radu
8 ай бұрын
Thanks for watching :-)
He's very genius, I'm amazed by his fundamental understanding of concepts. True computer scientist
@Radu
7 ай бұрын
Thank you :-)
Dr. Radu is a true inspiration for me, I always liked the way he delves deep into the underlying implementation and the inner workings of these complex topics. Sir, You are truely awesome.
@Radu
Ай бұрын
Happy to hear you like my content :-)
Just as a quick aside in the beginning part, if you set the content type to "text/plain" in the data string, you may run into issues when downloading file data because the browser thinks it should be a .txt file. If you instead set the content type to be "application/json", it will download just fine without a warning. Like so: "data:application/json;charset=utf-8" Chrome warned me on MacOS whenever I wanted to download this file with a .json extension that had a content type of text/plain.
@Radu
Жыл бұрын
Hi, thanks for the tip!
vow, best teacher ever! thank you so much! On touchscreen scetchpad and whole page starts scrolling when I draw. As suggested fix in css file: body{ overscroll-behavior: none; } did not work, but html{ overscroll-behavior: none; } worked
@Radu
7 ай бұрын
Thanks!
Hey Dr.Radu, can you create a video on how you went about creating your own Chart component? That was an amazing moment when you went out of your way to create something like that and inspired me to build my tools like this. Any source or recommendations for learning this?
@Radu
Жыл бұрын
The tutorial for how I made the Chart is in linked in the description. Or is your question: Why I decided to do it?
Occasionally I have to play you at 0.25 speed just to keep up with the coding ( because I want to write it with you ), which it might take me more than a day's working hours to complete. But I'll make it, and thank you for the engaging teaching style!
@Radu
Ай бұрын
Sure, what I do is really scripted so I can be quite fast. Understanding these things well can be really time consuming, though. Just implementing by following along may not be enough :-)
'Code without libraries and create my own machine learning driven application' is what I dreamed of before I got my laptop. Thank you guys for this course
Looking forward to part 2. This one was very interesting
@Radu
10 ай бұрын
It starts next week on my channel :-)
This is an awesome course, but I just want to add, so many of the little annoyances on the drawing app can be avoided by using pointerevents, which work for touch and mouse events, and allow you to capture the event instead of having to put the listener on the document itself.
@Radu
8 ай бұрын
Thanks for the tip!
Excellent course Sir! I have learnt so many things from this video that it is difficult to note them down! Sir , you should come to any university in India for teaching computer science since your teaching style and personality skills are in most demand here 😀
@Radu
7 ай бұрын
:-) thanks for the invite
I've apple silicon, somehow I was finding difficulty in most of the node version on using canvas. When I tried with node version 10 it worked. sharing it as information. as it might help someone out there.
Such a great course , I am enjoying it 😊
Watched the first 30 minutes & really looks great
@Radu
Жыл бұрын
Thanks! Let me know if you eventually go all the way :-)
Great job Radu (felicitari sunt mandru de tine)
@Radu
Жыл бұрын
Merci, Alex :-)
Always delivery fire ❤️
Amazing! Radu is probably one of the best programming teachers, easy to follow and comprehensive delivery of complex content. Bravo!
@Radu
8 ай бұрын
Thank you!
Machine learning is not a metaphysical abstraction that will allow machines to dominate humanity. Which is already dominated by the interests of large corporations that have governments in their pockets. Technically it's just fine-tuned probability based on sophisticated code and a lot of processing power. And this guy is a root programmer with excellent teaching skills. The best and most demystifying introduction to the topic I've seen in 5235 YT videos...
@Radu
Жыл бұрын
Thank you :-)
you can change all the onmouse*** to onpointer*** to not set the ontouch*** events. THe onpointer**** registers the event for both mouse and touch.
@Radu
Жыл бұрын
Thanks! I'll try it out :-)
I havent watched yet but can tell by the comments that you are a great teacher
@Radu
9 ай бұрын
Thank you :-) hope you'll watch it at some point :-D
i want more videos like this where i can learn depper concepts of cnn , rnn like that . This video was great 🔥🔥
Fantastic hack! I did everything you showed here and it worked! Thanks a lot!
@Radu
9 ай бұрын
Glad to hear :-)
I would like to thank u, I dont work in the software industry but it was nice listening u when improving my english novadays!!
@Radu
22 күн бұрын
You know I'm not a native English speaker, right? Maybe not the best to learn from me :-))
@northernsamiko
21 күн бұрын
@@Radu Yup I know but It's good to hear you, man Maybe you could stop talking tech and sing a song? I'm a rock guitarist anyway, and we could blast a good English song together.
@northernsamiko
21 күн бұрын
@@Radu Man, if I listen to you any more, I'm gonna put my guitar away and start coding :))
@Radu
9 күн бұрын
@@northernsamiko :-))))
@Radu
9 күн бұрын
@@northernsamiko :-)) I do have an intro song on videos on my channel :-D if you listen to that you might change your mind about me singing :-)))
Completed after one and a half weeks. This channel is amazing!
Better and secure way to save json data - create blob, create a temporary url for the blob, trigger the download, clean up the temporary url
@Radu
7 ай бұрын
Thanks for the tip!
Great content, thank you!
@Radu
Жыл бұрын
You're welcome!
Pretty cool both from a thearical point, of view and from a pure JS code pov. It makes it pretty accessible. Thanks a lot, great job
@Radu
7 ай бұрын
Thank you.
Bro, do videos for newbies too. This is very complex. Why did you create image recognizer? why did you do this with simple text values?
Ooooooo Radu's going mainstream now, this is so cool! Hopefully he's going to gain some subscribers from this, which is super great, Radu deserves the recognition for the amount of valuable education he provides! Gonna code, debug, and have fuuuuun, Coding with Radu... Coding with Radu
@Radu
Жыл бұрын
Haha, thanks :-)
Very good post. Guy was coding non-stop without error. Funny laugh at 40:37 😆"Please draw an undefined"
I like the "Garbage --> cogs --> Garbage" diagram at 2:40 in the explanation to summarise the importance of understanding your training data. 🤣
@Radu
9 ай бұрын
Thanks! :-)
Is there any specific reason or benefit he doesn't use spaces when assigning variables, declaring conditionals, or creating for loops? Is it simply preference? I think most people (including me) would write like this: const foo = 'bar'; for (let i = 0; i ... } but he writes like this (and I've seen some others): const foo='bar'; for (let i=0;i
@Radu
9 ай бұрын
I normally use spaces (as you describe). But when I make tutorials I try to keep the font size as large as possible (some people watch on their phones). I also don't want the code to go off-screen to the right so that viewers don't have to scroll through the video to see the part they need to see... Removing spaces helps with that. But in phase 2 of this course I tried using a wider screen and added the spaces (experimenting all the time...)
May I ask how do you insert your video in the output window in VS Code?
@Radu
Ай бұрын
I'm using OBS to record my videos. You can add a video input on top of any window and resize it so it fits :-)
@robertosotoalvarez817
Ай бұрын
Wow! Thanks Radu. I already usted OBS, but I thought you used the Visual Studio Output Window with something like a web page. I googled trying to find how to do that in vain. The simplest solutions are the best as you always do. Thanks again!
@Radu
Ай бұрын
@@robertosotoalvarez817 no, nothing fancy like that :-)
We need part 2! Please!
@Radu
8 ай бұрын
It's now out :-)
You didn't get the DOCTOR House joke apparently, which I found quite funny 😁 Really nice course!
@Radu
8 ай бұрын
There was a Doctor House joke? :-)) I don't remember adding one
This, Monte Carlo, Linear Algebra, GeoSpatial, Trees and Classifiers and you have a good background of ML and Stats
@Radu
Жыл бұрын
I do plan to extend this course with more things. Thanks for the tips :-)
Hi, to fix the issue with moving screen on apple devices touch screens, in the css stylesheet, body selector, set the touch-action to none and you good to go.
@Radu
Жыл бұрын
Really? Thanks! I'll try it out as soon as I get my hands on an apple device :-)
@meso9497
Жыл бұрын
@@Raduall good, it worked perfectly for me on my iphone!.
@Radu
Жыл бұрын
@@meso9497 Awesome, thanks!
Thanks Radu bhai kya course banaya phad diye bhaiii
@Radu
9 ай бұрын
You're welcome!
You are outstanding ❤
thank you sir, appreciated!! ❤❤
@Radu
Ай бұрын
You're welcome!
Your video is very good, deserves a subscription and I hope so too. Thank you for your enthusiasm.
@Radu
2 ай бұрын
You're welcome :-)
Great topic, thanks 👍
omg it's Radu! yay!
@Radu
Жыл бұрын
Yey :-)
Does this course have any prerequisites? Do you need to know JS, or can you be a beginner programmer? What about maths requirements?
@Radu
Жыл бұрын
Yes, check the description for some videos that teach what you need to know (math and code fundamentals)
perfect 🎉 thanks a lot!!
@Radu
Жыл бұрын
You're welcome!
thats fantastic
foreign variables that apply to UTF-8
Can't we combine this with Python? JS for the web app and Python for the ML code implementation?
@Radu
2 ай бұрын
Sure you can, you just need to reimplement some of the functions that are used both on the front-end and back-end.
Thanks!
really good teacher, thanks
@Radu
2 ай бұрын
Thanks!
Hey Radu, great course ! But when I run the final project on my computer, it lags and is pretty slow. Is it because my computer only has 8 gb RAM?
@Radu
9 күн бұрын
The implementation could be made more efficient. I gave some homework tasks about optimizing, you can try them out, or see phase 2 where I implemented some of them (that may work faster for you).
Yup I always used to wonder why do we learn from existing datasets, when we have to built a dataset from scratch for real-time applications
@Radu
Жыл бұрын
Because you can jump right in... and datasets have some 'good properties' that can demonstrate some specific things better than others. It's also the reason why courses change datasets from time to time to demonstrate different things. Here I hope to have a more realistic setting :-)
You are the best❤
@Radu
Ай бұрын
Thanks :-)
My favorite course
@Radu
7 ай бұрын
Glad to hear :-)
At 2:24:00 hrs, professor asks about the possibility for some heights or widths going beyond 400, the most easy solution could be fault in the user's code where instead of 400 height and width, the user accidentally filled a bigger value!
@Radu
6 ай бұрын
Yes, but I've collected the data using the app on my website = my code :-) and it was 400 x 400.
@duke_adi
6 ай бұрын
@@Radu That's true for me as well, which might mean that in certain laptop_os+browser set, mouse click beyond the borders results in >400 width/height.
@Radu
6 ай бұрын
@@duke_adi could be :-) the beauty of web development...
28:11 try to change height of #content to height:90vh
Sir, I need help on this because the canvas doesn't show up
@Radu
7 ай бұрын
You can try submitting your code on my Discord and I'll have a look.
thank you for helping us to learn
@Radu
2 ай бұрын
Glad to hear you're learning!
sometimes people just want to go vanilla all the way. amazing content.
@Radu
Жыл бұрын
Thanks! :-)
@Dr. Radu add the following to your css will make the font responsive: :root { font-size: calc(0.5em + 1vw); }
@Radu
4 ай бұрын
Hi, Thanks for the tip :-)
Why this is interesting and enjoy the course alot.
@Radu
Жыл бұрын
Happy you like the course!
bro please do this python js code makes my head hurt and i think python makes the code more readable and easy to follow
@Radu
7 ай бұрын
Sorry :-( I don't publish many videos about Python (not at the moment, at least).
Helpful❤
Essentially centering a div in the first ten minutes. What a flex.
@Radu
10 ай бұрын
:-))
Parabéns manoooo
A course of federated learning with a project please!!
Amazing!!!!
Thanks a lot!
Got introduced to REST API!
Masterpiece
@Radu
Жыл бұрын
Thanks!
1:00:52 Don't you get import and export keywords in JavaScript?
@Radu
Ай бұрын
They are... But they only work via http, not locally. And for some reason, the live server extension was slow and glitchy (for me) when I implemented this project. So... some things could have been made nicer.
Jenius
(1) Thank You. (2) iCON Use For Graph. (3) # of Neighbors For Classification. (4) "Country-Bubble-Color" For Each Object iNSTANCE, Was Enlightening. (5) Details = Better Graphical Pointing. (6) Label Which Pieces Of Code, Correct Which Errors (Error Database)...To Differentiate Between Base Code & ECC (Error Correcting Code). (7) Play Video @ A Faster Speed (For Longer Videos). (8) What Are Your Top 10 Companies That You Work For?
20:56 Can someone explain what he has done here? Why create a const draw with the curly brackets and what is draw.path? You can also just tell me the topic name if you don't want to explain here, I can do research on it myself then
@Radu
Жыл бұрын
I'm just grouping drawing methods part of the draw object. So, draw.path is just calling the path function (method). I do this because it will be easy to import the object later in Node, as well.
@fahad_hassan_92
Жыл бұрын
@@Radu Thanks!
@Radu
Жыл бұрын
@@fahad_hassan_92 No problem.
Very nice, thanks.
@Radu
Жыл бұрын
You're welcome!
As always, just on time
Apparently KZread really wants me to learn this but I haven't even started on trying to learn C# as my first language which I'd already have use cases for.
I am planning to learn ML AI and all, which language will be better for long term? PY or JS ?
@Radu
Жыл бұрын
Python is more useful because it has a lot of learning methods implemented in various libraries. But it's a slippery slope if you just use those blindly without understanding what ML is what those methods actually do.
@nocopyrightgameplaystockvi231
Жыл бұрын
PY works really good, but start with Tensorflow.
Fascinating
@Radu
11 ай бұрын
:-)
cool
For web developers that js, css and html code is a messy, but lets exchange skills 😁
@Radu
Ай бұрын
Sure! Can you share some tips to make it better? :-)
1:01:03 it creates a buffer with black color, it does not take ctx data into it... all of the images are black... anyone has a hint here?
@Radu
3 ай бұрын
Strange. Can you try drawing a white rectangle over the canvas first, before drawing the paths?
@Artavazd.kirakosyan
3 ай бұрын
@@Radu thank you very much for advice, I will report back after trying.
@Artavazd.kirakosyan
3 ай бұрын
I have resolved the issue by doing this: // draw.paths = (ctx, paths); // commented out for (const path of paths) { draw.path(ctx, path, "black") }