Python Machine Learning, 3rd Ed

Authors: Sebastian Raschka and Vahid Mirjalili
Publisher: Packt
Date: December 2019
Pages: 770
ISBN: 978-1789955750
Print: 1789955750
Kindle: B07VBLX2W7
Audience: Python devs interested in ML
Rating: 5
Reviewer: Mike James
A new edition of a good book on ML is worth a close look.

This is the third edition of a book I reviewed in 2018 and thought was quite good, so I was interested to see if it could get better. It was already a big book and the new addition adds more than 100 pages.

The basic approach of the book remains the same and it introduces the ideas in a practical way using all of the standard libraries that have accumulated around Python. The third edition includes an upgrade to Tensorflow 2 and material on GANs and reinforcement learning.

This book introduces machine learning in the broad sense. Many of the techniques would have been called statistics not so long ago. It does cover neural networks and deep learning, but this isn't the only topic. If you are looking for something that focuses on just deep learning then you probably need a different book.

The book assumes that you know Python and don't need any explanations of how to get a program up and running. It presents a lot of code and practical examples. You can download the code and try things out. The technical level required to read it isn't that high, but be warned there are lots of equations. This isn't a deep theory book but it isn't for the complete beginner either. The ideas are explained reasonably well and as long as you have some idea about math and programming you will get something out of it. The "difficult" math sections are highlighted and you can avoid them on first reading, but I'd advise at least getting to know them a little.


After the usual introductory chapter on what machine learning is and setting up the Python packages you need, the book moves on to look at the first machine learning technique - the Perceptron. You get to implement one in Python and its near neighbor, but much less well known, Adaline. These two are classical machine learning and represent where it all started. It is also nice to see classic datasets being used - Fisher's Iris data must have been used to teach a lot of machine learning practitioners over the years!

Chapter 3 uses scikit-learn to investigate some classical techniques - logistic regression, SVM and decision trees. A very nice introduction complete with a discussion of regularization. Chapter 4 is about working with data - always the most difficult and specific aspect of any project. Oddly at the end of the chapter we have a discussion of L1 and L3 regularization and random forests - surely these should be in another chapter?

Chapter 5 is another classical set of techniques that so many machine learning books ignore. Dimension reduction is important but the techniques are far less well known than more recent approaches such as the auto-encoder. After dealing with standard Principle Components Analysis (PCA) we have an account of Linear Discriminant Analysis (LDA) and finally kernel PCA to account for non-linearities. LDA in particular is almost a forgotten approach, but it is a powerful technique that can give you insights into your data. There is no mention of multidimensional scaling as a dimension reduction method, but this is less important.

in Chapter 6 we move on to model evaluation and how to use cross validation and the various forms of performance measurement. Chapter 7 introduces the interesting idea that two or more classifiers are better than one - ensemble learning. Chapter 8 is a sort of case study on using machine learning for sentiment analysis and Chapter 9 converts this into a web application using PythonAnywhere. 

Chapter 10 gets back to the main subject with a closer look at linear regression. The chapter goes into regularized regression, ridge and lasso. It also covers polynomial regression, but not step-wise regression. For some strange reason this most useful technique hardly ever seems to be covered in machine learning books. What is more there is also a step-wise version of discriminant analysis that is also ignored, even though it is very useful in feature selection problems.The chapter ends with a look at decision tree regression and random forest regression.

Chapter 11 is a basic introduction to cluster analysis. It's not very complete, but enough for you to decide if you might need to use it. If you do then my recommendation for the best book on this topic is still Cluster Analysis 5th Edition by Brian S. Everitt, et al.

If you are, or want to be, a Python programmer working with a wide range of machine learning techniques, I can recommend Python Machine Learning.

For recommendations of Python books see Books for Pythonistas and Python Books For Beginners in our Programmer's Bookshelf section.


  • Mike James is the author of Programmer's Python: Everything is an Object published by I/O Press as part of the  I Programmer Library. With the subtitle "Something Completely Different" this is for those who want to understand the deeper logic in the approach that Python 3 takes to classes and objects.


To keep up with our coverage of books for programmers, follow @bookwatchiprog on Twitter or subscribe to I Programmer's Books RSS feed for each day's new addition to Book Watch and for new reviews.

Grokking Machine Learning

Author: Luis G. Serrano
Publisher: Manning
Date: December 2021
Pages: 512
ISBN: 978-1617295911
Print: 1617295914
Kindle: B09LK7KBSL
Audience: Python developers interested in machine learning
Rating: 5
Reviewer: Mike James
Another book on machine learning - surely we have enough by now?

Visual Complex Analysis

Author:  Tristan Needham
Publisher: Clarendon Press
Pages: 616
ISBN: 978-0198534464
Print: 0198534469
Kindle: B0BNKJTJK1
Audience: The mathematically able and enthusiastic
Rating: 5
Reviewer: Mike James
What's complex about complex analysis?

More Reviews


Last Updated ( Tuesday, 26 May 2020 )