First of all, I am not sure if this is the right place to post this so please do let me know if it isn't and tell me where it should be. I really just don't know where to go with this question.

Some backstory: I am going through my 2nd semester of my 2nd year of Software Engineering. I love math, I love computers, I love data and I love image processing so the most logical place for me to be is Data Science because I seem to be gravitating towards ML/CV a lot.

Thing is, I want to start learning Data Science/ML but I don't know where to start. Everyone keeps recommending online courses such as Andrew's coursera course but I have become somewhat skeptical of most online courses because they seem to love simplifying info too much that I feel like it just passes the threshold of it being useful info.

My assumption is: learning Data Science/ML/CV requires a very strong and rigorous foundation. I shouldn't start learning it with high level tools and little understanding of what makes it what it is. This is my problem. I don't know where to begin learning that way.

I searched for books and the two books I found people talking about were:

  1. Pattern Recognition and Machine Learning, by Christopher M. Bishop. This book seemed to be very rigorous with a strong focus on the mathematics and intuition of things (looking at its index). Not much skepticism towards this one.
  2. Hands-On Machine Learning with Scikit & TensorFlow, by Aurelien Geron. This one seems to be extremely popular and almost unanimously praised/liked/recommended by people but just looking at its name I felt a bit skeptical that it might have less focus on building strong foundation/intuition and more focus on using high-level tools.

I am open for other suggestions if you think some 3rd book/resource is more adequate for my need. I'd also greatly appreciate it if you briefly explain why you think it is more adequate.

Also it's worth noting that I have no problem with high-level tools and I know that I will eventually have to use them. I just feel like I'd be significantly better at what I want to do and valuable if I start from there.


2 Answers 2


Welcome to the community!

I normally don't answer questions like this, they're pretty broad and there are many others just like it. It seems like you're not actually asking how to get started, you already seem set on reading some books (which is great!), so let me answer that question, rather than a very broad 'how to get started'.

First of all, I'd like to challenge your assumption about learning from the bottom up, and offer an alternative opinion (yes, this part is just an opinion). I'd instead encourage you to get your hands on the high level tools and start using them right away. If everything we ever did required us to forego abstractions and learn everything from the beginning, we'd still be reinventing the wheel over and over. Start experimenting with the existing tools and supplement that with your reading. You'll develop an excellent understanding this way.

So to answer your question... I'd recommend the second book you quoted: Hands-On ML with Scikit Learn and Tensorflow. This book will teach you good habits right from the beginning, give you a good understanding, and get you using those tools right away.

Best of luck.


I tryed to give an answer to similar question in What skills do I need to become a data scientist? And how to show them?, there are a lot of online courses and they are pretty usefull but if you feel like they are oversimplified you can try other courses from Stanford and Mit for example, like:

Also, Data Science performs better when you have basic knowledge of the subject area, Digital Image Processing from Rich Radke will give you the basics to understand CV algorithms, he also has a course in Computer Vision for Visual Effects that is marvellours.

Udacity and other online courses come from universities. Is important to note that Data Science is academia is still getting confy and until there the courses will discuss a lot about that is really relevant to teach.

Don't get me wrong, books are lovely but if you look for rigorous books such as Bishop's you might be a little outdated, while if you only use books such as Data Science from Scracth and Data Smart your knowledge might still be a bit shallow.

I suggest you try simplied crash courses such as Google's Machine Learning Crash Course but after that don't fall into the illusion you know everything.

Most of theses shallow courses will get you ready for basic tasks and you can improve your knowledge gradually by making Kaggle's competitions and more deep courses later. If you don't get your hands on doing you might feel a bit disapointed and lose motivation.

It is good to learn everything from the beggining but that is after you get knowledge of high level stuff. YOU SHOULD NEVER DO SOMETHING THAT ALREADY EXISTS FROM ZERO WHEN YOU ARE WORKING. Don't be offended your code will surelly be bad and unefficient at first, so unless popular libraries are REALLY lacking in functionality you need, use them.

Note: You should try to get your hands on with OpenCV and Algorithms such as Random Forests and such. Don't fall for Deep Learning yet, it is easy for you bud really expensive for computers and organizations since they usually take long to train and if you're a good programmer you know that most things don't work in the first time around.


Not the answer you're looking for? Browse other questions tagged or ask your own question.