I believe that the best way to learn ML is by first learning to program the algorithms and then learning the math. This is the opposite to what people is used to do, but I think it's better. The reason is because programming ML is easy, but the math behind it is very complex. I would suggest to start with scikit tutorial http://scikit-learn.org/stable/tutorial/ and later with Ng course https://www.coursera.org/learn/machine-learning. Then a good book is Pattern Recognition and Machine Learning, from Bishop.