Elements of Statistical Learning is a great book. If you read and understand the material, you should be able to discern what algorithms might be better suited for what type of problem. If you'd like a simpler version of that book, try An Introduction to Statistical Learning from the same authors. This simpler book focuses more on practical application, providing a comparison of the different methods in the book. It's less comprehensive than the ESL book though.
This diagram from SciKit-Learn is a pretty good one for illustrating machine learning possibilities.
But as User777 has already pointed out, usually we narrow down to a few possible procedures and use some sort of cross validation method to test the out-of-sample error rate.