By Developers, For Developers
PDF Pg | Paper Pg | Type | Description | Fixed on | Comments |
---|---|---|---|---|---|
Many | TYPO | PAGE48,“The GA need pairs” —- Shouldn’t this be “The GA needs pairs”? PAGE49,“lets cerate a GA” —- Shouldn’t this be “let’s create a GA”? PAGE66,“Staying with particles tending to follow each other, but keep track of good directions give a different approach.” —- I could not pin down the subject of the sentence. PAGE74,“In contrast, [1, 0, 1, 1] and [0, 0, 1, 1] agree on one of the fours bits, so have a distance of 3.” —- Shouldn’t this be “three of the four bits”? PAGE78,“wieght” —- typo. | 2018-08-21 | ||
Book | SUGGEST | CONTEXT: I picked up this book to assess if it would serve as a good hands-on introduction to GA and ML for senior undergrads and beginning grad students who are good at programming. SUGGESTION: After reading the book, in its current state, here’s why and how I think it can be improved for the intended audience. 1) I had a hard time following the examples as they switched between languages. I am wondering if non-polyglots interested in ML would also face this issue as they have to switch between languages (while switching between different styles of algorithms). I think the content would be easier to follow if all examples were in the same language (say, Python). 2) The lack of pseudo code of each algorithm hinders setting up the skeleton of the algorithms before grokking the details that flesh out the skeleton; more so, when there are multiple options to flesh out the details, e.g., different kind of crossovers in GA. I think providing the pseudo code for each algorithm and then highlighting which step in the pseudo code is realized by a (set of) functions will make the content more comprehensible. 3) Since the book is geared towards programmers, I think describing few software engineering or software systems related problems that could be tackled with the described algorithms will help programmers appreciate the benefits for the algorithms. It would be cool if these problems are used as examples to illustrate the examples. For example, mutation testing could be used to illustrate the benefits of GP (GA). I hope this feedback helps improve the book :) | 2018-09-30 | These are good suggestions. \n \n1) I have deliberately used a mix of languages to make the point the choice doesn't really matter. \nI hear you, but don't want to change this. \n \n2) I do have a high-level view of each algorithm in each chapter, without the gory details of, say, different crossover methods. I have tweaked the words to call out the main algorithm in chapters where this wasn't clear. \n \n3) I do have mutation testing with Cosmic Ray in the first GA chapter, \n \nThanks for the suggestions. \n \n \n \n | |
vi | TYPO | In Acknowledgments, Kevlin Henny => should be Henney | 2018-08-21 | ||
26 | TYPO | When giving an example of the python code to load the data from the previous chapters, I believe the read command should look more like: L = pickle.load(f) instead of : L = pickle.load(L, f) You may wish to add an L = [] above the pseudo sample to make a a bit more digestible for someone starting out. | 2018-09-30 | Oops. Good spot. \nThe actual code with the book uses L =[], then L = pickle.load(f) as you suggests. \nFixed the code in the chapter to match. \n | |
27 | SUGGEST | Just wondering if err’ing on the side of more explicit variable names might help the reader comprehend the components that make up your functions for calculating things. For example, might it not be better if the entropy function was closer to this? def entropy(data): | 2018-09-30 | I've used ``item instead of i, and called the inner function item_entropy. \nHope that helps. | |
21 | TYPO | I’ve been trying to run escape.py in Visual Studio Code and as usual had a few teething troubles setting up the environment. I found what I guess is an error (this is my first time playing with python) which is in the routine draw_squares I’ve also had problems with getting the windows version of python 3.7.1 to properly understand method references here and there. I’ve also added breaks into the draw_squares and draw_triangles routines so they terminate when leaving the paper bad. Anyhow, I’ve copied my own version of the code below. I must admit I’ve made all the lines drawn by turtles as I like turtles! Best wishes, Mark Lawrence
import argparse def draw_bag(): def draw_line(): def draw_square(t, size): def draw_squares(number): def draw_triangles(number): def escaped(position): def store_position_data(L, t): def draw_spirals_until_escaped(): i = 0 return L def draw_squares_until_escaped(n): def draw_random_spirangles(): with open(“data_rand”, “wb”) as f: if name == ‘main’: parser = argparse.ArgumentParser() try: | 2018-12-01 | I left the print behind when checking 2.7, so have removed it now. \nThanks for the if escaped suggestions - the point is you can try either. You guess a number, or let the code run until it stops. I think either way works. I have left the code as it is though. \nGlad you like the turtles. \n | |
41 | TYPO | “let’s cerate a GA since right now” | 2018-12-01 | Fixed in copy edit process. | |
68 | TYPO | They can even move randomly but do not improvement over time if that is all Should be: | 2018-12-01 | ||
30 | ERROR | This | |||
30 | ERROR | if x < 35.0 or x > 35.0 or y < 35.0 or y > 35.0 then True else False | |||
48 | ERROR | I can’t find the definition of “random_tries()” in this book. |