- You'll save an extra 5% on Books purchased from Amazon.ca, now through July 29th. No code necessary, discount applied at checkout. Here's how (restrictions apply)
Machine Learning in Action Paperback – Apr 19 2012
Special Offers and Product Promotions
Frequently Bought Together
Customers Who Viewed This Item Also Viewed
No Kindle device required. Download one of the Free Kindle apps to start reading Kindle books on your smartphone, tablet, and computer.
Getting the download link through email is temporarily not available. Please check back later.
To get the free app, enter your mobile phone number.
About the Author
Peter Harrington holds a Bachelors and a Masters Degrees in Electrical Engineering. He is a professional developer and data scientist. Peter holds five US patents and his work has been published in numerous academic journals.
What Other Items Do Customers Buy After Viewing This Item?
Most Helpful Customer Reviews on Amazon.com (beta)
In the preface Harrington emphasizes the importance of knowing the theory and being able to connect the theory to the algorithms and applications. I wholeheartedly agree with this statement, but it appears Harrington forgot this was his stated goal. The mathematics contained in the book is wishy-washy and vague, and its connections to the algorithms is at best tenuous. Harrington rarely explains why a particular formula is used, and when he does he's really explaining how it's used and not why it makes sense to use it (given, this is a common criticism of applied mathematics). He will often throw in mathematical jargon without a useable explanation. And for every paragraph spent on mathematical theory, five paragraphs are spent on how to use various third-party libraries for graphing, UI, and data collection (e.g., Tkinter, Matplotlib, Yahoo! PlaceFinder API, Google Shopping API, etc.). These are great, but they massively clutter the text. I'd much rather have a 200 page appendix than have circuitous detours sprinkled throughout the book.
One big plus is in his treatment of support vector machines. He includes (unlike many texts which are solely about support vector machines) a complete python implementation of the Sequential Minimal Optimization algorithm. That being said, it's a horrendous piece of code clearly not written for legibility. This page (page 109) is littered with at least fifteen 1-3 letter variable names and pointless statements like "if L==H: print 'L==H'; continue". Harrington is apparently afraid of using whitespace, and as the function goes on it becomes increasingly cramped and impossible to read (mostly due to the pervasive use of backslashes to denote line continuations). Instead of breaking the code into functions and explaining the pieces, Harrington uses a comment-style typeset code annotation. In my opinion this only helps to clutter the page. It's clear this piece of code (as with his other code samples) were heavily constrained by the page width. It's the author and editor's job to compensate for that; they failed.
So while this book has a lot of valuable resources in it, they should fix it in two ways. First, quit pretending this is a useful mathematical treatment. Second, reorganize.
I will say at least, that with these minor modifications, this text is *vastly* better than Marsland's attempt, "Machine Learning, an Algorithmic Perspective."
The introduction chapter got me really excited, just like other Manning's "in Action" books do. But once I started executing the code in chapter 2 "Classifying with k-nearest neighbors" I realized that the code had bugs. Though I could figure out what's wrong and fix the bugs, I did not expect this from Manning, after having read some of their excellent books like (The Quick Python Book, Second Edition, Spring in Action and Hadoop in Action).
Moreover the book has some introduction to python and numpy in appendix A. I believe the author could have pointed the reader elsewhere for learning python and those pages could have been used to explain more of numpy and matplotlib, which the author uses freely without any explanation in the text. (Yup, be ready to read some online numpy and matplotlib tutorials and documentation.)
If you don't know python, then you can do what I did: read The Quick Python Book, Second Edition and then attempt this book.
The figures in the book are not in color so you need to execute the code to understand what the author is telling. It forces you to actually run the code, which is good, but you can't read this book without a computer in front of you.
Finally, I am a big believer in following the conventions of a language. I would have been really happy had the author followed PEP8 ([...]), because along with learning machine learning, you could have learnt some good python coding practices.
Since I found the violations of the Don't Repeat Yourself (DRY) principle to be both the most prolific and impactful, I will share some examples. Sorry about the lack of indentation; apparently Amazon does not like whitespace.
xMid = (parentPt-cntrPt)/2.0 + cntrPt
yMid = (parentPt-cntrPt)/2.0 + cntrPt
if trainCategory[i] == 1:
p1Num += trainMatrix[i]
p1Denom += sum(trainMatrix[i])
p0Num += trainMatrix[i]
p0Denom += sum(trainMatrix[i])
wordList = textParse(feed1['entries'][i]['summary']
wordList = textParse(feed0['entries'][i]['summary']
if int(labelMat[i]) == 1:
xcord1.append(dataArr[i,1]); ycord1.append(dataArr[i, 2])
xcord2.append(dataArr[i,1]); ycord2.append(dataArr[i, 2])
Keep in mind these are just the examples I found by doing a cursory scan while writing this review. A few instances would have been forgivable, but the problem is widespread and it had a major impact on my ability to reason about the code. Unless a revised edition with cleaner code is released (and I hope it is, there's a lot of potential here) I cannot recommend this book.
Unfortunately, in many cases the author doesn't explain what he is trying to achieve with his code snippets. Once that is clear, there is usually a much simpler way to accomplish the same thing; with less numpy calls and more regular Python. I get an overall feeling that the book is for mathematicians and statisticians, who will look at code snippets as illustrations - and not for programmers. This feeling is reinforced by the fact that many code snippets in my electronic copy are *images* where nothing can cut and pasted; not to mention that 'el' and 'one', 'oh' and 'zero' look the same.
Last, the book is published in 2012, but the author seems completely oblivious to the fact that there is Python 3 in the market.
In summary, if this text was accompanied by competent code - it probably would be the best book on the subject
Look for similar items by category
- Books > Computers & Technology > Computer Science > Artificial Intelligence > Computer Mathematics
- Books > Computers & Technology > Computer Science > Artificial Intelligence > Human Vision & Language Systems
- Books > Computers & Technology > Computer Science > Artificial Intelligence > Machine Learning
- Books > Computers & Technology > Databases > Data Mining
- Books > Computers & Technology > Programming > Algorithms
- Books > Computers & Technology > Software > Mathematical & Statistical
- Books > Textbooks > Computer Science & Information Systems > Algorithms
- Books > Textbooks > Computer Science & Information Systems > Artificial Intelligence
- Books > Textbooks > Computer Science & Information Systems > Computer Science
- Books > Textbooks > Computer Science & Information Systems > Database Storage & Design
- Books > Textbooks > Computer Science & Information Systems > Programming Languages