An Introduction to Statistical Learning with Applications in Python by Gareth James