<commit_before>Dear Readers, 

again, I tried my best to cut all the little typos, errors, and formatting bugs that slipped through the copy editing stage. Even so, while I think it is just human to have a little typo here and there, I know that this can be quite annoying as a reader!

To turn those annoyances into something positive, I will donate $5 to [UNICEF USA](https://www.unicefusa.org), the US branch of the United Nations agency for raising funds to provide emergency food and healthcare for children in developing countries, for each little, previously unreported buglet you find and submit to the issue tracker.

Also below, I added a small leaderboard to keep track of the errata submissions and errors you found. Please let me know if you don't want to be explicitely mentioned in that list! 


- Amount for the next donation: 90$
- Amount donated: 0$


---


Contributor list:

6. <NAME> ($20)
7. gabramson ($15)
1. Gogy ($10)
12. <NAME> ($10)
2. <NAME> ($5)
3. <NAME> / <NAME> ($5)
4. @gabramson ($5)
5. <NAME> ($5)
7. <NAME> ($5)
8. <NAME> ($5)
9. <NAME> ($5)
10. <NAME> ($5)
11. <NAME> ($5)



<br>
<br>
<br>
<br>





---

### Errata

pg. 13

It says "and and open source community" on this page -- 1x "and" should be enough.

pg. 18

"McCullock" should me spelled "McCulloch."

pg. 28

In the code example in the info box (`sum([j * j for i, j in zip(a, b)])`), it should be `i * j`, not `‘`j * j`’`; otherwise, we would be calculating b^T b, not a^T b.

pg. 37

The existing indices shouldn't be reused:

![](./images/pg37.png)


pg. 55

![](./images/pg55.png)

pg. 56

Earlier prints of the book had a chapter reference in the info box: 

> In ~Chapter 5, Compressing Data via Dimensionality Reduction~ {Chapter 6: Learning Best Practices for Model Evaluation and Hyperparameter Tuning}, you will learn about useful techniques, including graphical analysis such as learning curves, to detect and prevent overfitting.

pg. 81

On pg. 81, I incorrectly state that the `Perceptron` class uses LIBLINEAR. It uses a regular SGD implementation instead for optimization.

pg. 91

On the top of the page, it says "Here, p (i | t ) is the proportion of the samples that belong to class c." The "*c*" should be changed to *i*.

pg. 99

There is a wrong chapter reference at the bottom of this page. It should be *Chapter 6* and not *Chapter 5*.

pg. 101
<commit_msg>add note about perceptron p.55<commit_after>Dear Readers, 

again, I tried my best to cut all the little typos, errors, and formatting bugs that slipped through the copy editing stage. Even so, while I think it is just human to have a little typo here and there, I know that this can be quite annoying as a reader!

To turn those annoyances into something positive, I will donate $5 to [UNICEF USA](https://www.unicefusa.org), the US branch of the United Nations agency for raising funds to provide emergency food and healthcare for children in developing countries, for each little, previously unreported buglet you find and submit to the issue tracker.

Also below, I added a small leaderboard to keep track of the errata submissions and errors you found. Please let me know if you don't want to be explicitely mentioned in that list! 


- Amount for the next donation: 90$
- Amount donated: 0$


---


Contributor list:

6. <NAME> ($20)
7. gabramson ($15)
1. Gogy ($10)
12. <NAME> ($10)
2. <NAME> ($5)
3. <NAME> / <NAME> ($5)
4. @gabramson ($5)
5. <NAME> ($5)
7. <NAME> ($5)
8. <NAME> ($5)
9. <NAME> ($5)
10. <NAME> ($5)
11. <NAME> ($5)



<br>
<br>
<br>
<br>





---

### Errata

pg. 13

It says "and and open source community" on this page -- 1x "and" should be enough.

pg. 18

"McCullock" should me spelled "McCulloch."

pg. 28

In the code example in the info box (`sum([j * j for i, j in zip(a, b)])`), it should be `i * j`, not `‘`j * j`’`; otherwise, we would be calculating b^T b, not a^T b.

pg. 37

The existing indices shouldn't be reused:

![](./images/pg37.png)


pg. 55

![](./images/pg55.png)

Note that in scikit-learn version 0.20 (compared to 0.19) you may get different perceptron results.
In any case, for the perceptron, this is not important as it does not converge anyway when the classes are not linearly seperable, so, the results also depend on the number of iterations and the random seed for data shuffling. The perceptron, in this case, will cyrcle through ~2-9 missclassifications no matter what, since due to the nature of the algorithm, it will never converge on a dataset that is not seperable via a linear boundary/hyperplane.



pg. 56

Earlier prints of the book had a chapter reference in the info box: 

> In ~Chapter 5, Compressing Data via Dimensionality Reduction~ {Chapter 6: Learning Best Practices for Model Evaluation and Hyperparameter Tuning}, you will learn about useful techniques, including graphical analysis such as learning curves, to detect and prevent overfitting.

pg. 81

On pg. 81, I incorrectly state that the `Perceptron` class uses LIBLINEAR. It uses a regular SGD implementation instead for optimization.

pg. 91

On the top of the page, it says "Here, p (i | t ) is the proportion of the samples that belong to class c." The "*c*" should be changed to *i*.

pg. 99

There is a wrong chapter reference at the bottom of this page. It should be *Chapter 6* and not *Chapter 5*.

pg. 101

{'fraction_non_alphanumeric': 0.09452363090772693, 'fraction_numerical': 0.0277569392348087, 'mean_word_length': 3.71113074204947, 'pattern_counts': {'":': 0, '<': 33, '<?xml version=': 0, '>': 35, 'https://': 2, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3670796', 'n_tokens_mistral': 1804, 'n_tokens_neox': 1613, 'n_words': 885}