程序员通过从头实现技术来学习。
这是一种学习方式,可能比其他学习方式慢,但更充分,因为所涉及的每一个细微的决定都变得熟悉。实现是从头到尾自己拥有的。
在本文中,我们将仔细研究Joel Grus的畅销书《Python数据科学从零开始》。
我最近读完了纸质版,我认为这可能是今年我最喜欢的一本入门机器学习书籍。赶快入手一本!
本书概述
让我们鸟瞰一下这本书。
作者:Joel Grus
这本书的作者是Joel Grus,他是谷歌的一名软件工程师。
他曾担任过初创公司的Data Scientist和Analyst,以及谷歌的工程师。他拥有加州理工学院的博士学位。背景非常扎实。
在LinkedIn个人资料、博客和Twitter上了解更多关于Joel的信息。
目标读者:初学者
本书的目标读者是希望开始数据科学和机器学习领域的入门级程序员。
Python不是阅读本书的先决条件(第二章有Python速成课),但如果你已经是一名Python程序员,会加快学习进程。
本书不假定任何机器学习的数学背景(第4-7章有速成课),但同样,一些统计学、概率和代数背景会加快学习进程。
书的写作方法:从零开始编写代码(Python)
这是一本入门级的数据科学和机器学习书籍。
大部分内容侧重于机器学习算法的实现。书中简要介绍了Python,并涵盖了一些基础数学、数据可视化和数据收集主题。
它将带你从入门级程序员成长为能够实现机器学习算法来解决各种数据科学问题。
从零开始编写代码
本书采用的方法是描述概念,然后用Python从零开始实现它们。这意味着不使用机器学习和数据处理库(例如scikit-learn)。
作者实现算法的stated goal是
……手工构建工具和实现算法,以便更好地理解它们。
好的代码示例必须首先易于阅读,然后才考虑效率和有效性。它们是为了教学目的而编写的,以便理解,而不是生产级别的代码。请注意,你将从零开始进行的编程仅用于教学目的,不可操作化。
我花了很多心思来创建清晰、注释良好、易于阅读的实现和示例。在大多数情况下,我们构建的工具将是启发性的,但不可行的。
图书内容
本书共311页,包含25章。这是一本经典的O'Reilly书籍,尺寸合适,可以放在你面前,让你一边敲代码实现示例,一边学习。
本节我们看一下目录
数据科学家是提取杂乱数据中见解的人
- 第1章:引言(什么是数据科学?)
- 第2章:Python速成课(语法、数据结构、控制流和其他特性)
- 第3章:数据可视化(使用matplotlib绘制条形图、折线图和散点图)
- 第4章:线性代数(向量和矩阵)
- 第5章:统计学(集中趋势和相关性)
- 第6章:概率(贝叶斯定理、随机变量、正态性)
- 第7章:假设检验与推断(置信区间、P值、贝叶斯推断)
- 第8章:梯度下降(梯度、步长、随机变异)
- 第9章:获取数据(网页抓取、JSON API)
- 第10章:数据处理(基本可视化、数据转换)
机器学习……[指的是]创建和使用从数据中学习到的模型……这可能被称为预测建模或数据挖掘
- 第11章:机器学习(拟合、偏差-方差、特征选择)
- 第12章:k近邻(维度灾难)
- 第13章:朴素贝叶斯
- 第14章:简单线性回归(梯度下降)
- 第15章:多元回归(Bootstrap、正则化)
- 第16章:逻辑回归(SVM)
- 第17章:决策树(随机森林)
- 第18章:神经网络(感知机和反向传播)
- 第19章:聚类(K-Means)
自然语言处理(NLP)是指涉及语言的计算技术。
- 第20章:自然语言处理(n-gram、语法、Gibbs采样)
- 第21章:网络分析(中心性和PageRank)
- 第22章:推荐系统(基于用户和基于物品)
- 第23章:数据库与SQL(基本用法)
- 第24章:MapReduce(各种示例)
- 第25章:勇往直前,做数据科学(你应该使用的库)
“从零开始”实现事物在理解它们的工作原理方面很棒。但它通常在性能、易用性、快速原型设计或错误处理方面并不理想。实际上,您需要使用精心设计的库来稳固地实现基本原理。
对本书的看法
我总体上喜欢目录,只是会做一些改动。
我会删除一些后续章节,比如NLP、网络分析等(第20-24章),并将书名改为“机器学习算法从零开始”。这样书名虽然不那么吸引人,但更诚实和准确。
数据科学是关于提出问题,然后收集数据,并构建模型来回答它们。我们并不真正需要一本“数据科学从零开始”的书,除非它包含一系列业务案例研究加上建模。数据科学中的“从零开始”实际上是指算法部分。
我并不沮丧,事实上我读这本书非常愉快,但我可以想象有些人会期待系统化的流程来处理业务数据问题,而不是仅仅是建模,可能会觉得有点误导。
我并没有从头实现所有算法。我读完了整本书,研究了所有的例子,但我只实现了几个作为乐趣。
我觉得代码很容易阅读,注释也足够了。我认为使用纯Python(而不是NumPy)是一个不错的选择。它降低了门槛,你只需要一些基本的Python语法就可以开始了。
资源
我收集了一些与本书相关的额外资源,如果你有兴趣深入了解。
- Amazon上的《Python数据科学从零开始》
- GitHub库,提供书中所有代码(含错误修复和示例数据)
总结
我喜欢这本书。我读得很开心,主要是因为我一直喜欢阅读编程书籍,并且我自己也写过一本这样的书(例如Clever Algorithms)。
如果你已经是个老手,并且现在非常专注于scikit-learn或R,并且对干扰不感兴趣,那么这本书可能不适合你。但是请记住,学习永无止境,重温初级内容并巩固知识可以很有趣。
如果你了解一些Python(或者你是一名优秀的开发者并想学习Python),并且想通过实现机器学习算法来深入了解它们,那么这本书就适合你。
赶快入手!
你读过《数据科学从零开始》吗?你觉得怎么样?请留言。
我其实已经买了这本书,但还没读,甚至还没开始!有很多令人分心的东西!:) 但我觉得你的评论给了我额外的动力去完成它!
Sergey,快开始吧,告诉我你的看法。
我已經有這本書了,到目前為止我才讀完第一章。
Jason,既然你也在支持这本书,我为选择这本书开始我的数据科学学习之旅感到很高兴。
不错,我很想听听你对这本书的看法,Aman。
我现在正在读这本书。和你一样,我通读了它,看了例子,但并没有真正自己实现。偶尔我会玩玩提供的代码。
这是一本写得很好的书,我认为它对于获得数据科学和机器学习的高层视角非常有益。尽管它从头开始实现,但它并没有深入探讨背后的数学概念。但它让你知道你可以做什么。
除了代码实现,我还希望有更多的数学符号与之搭配。
一篇不错的评论,谢谢。
你好,
我订购了这本书,但我想知道这是否适合我。你有什么关于机器学习的书推荐给有工程学位的吗?我数学基础很好,也能做一些编程,但统计学和计算机科学的整体背景有限。
谢谢!
你好Ayan,
我发现开发者和工程师喜欢从头实现算法,以便真正理解它们。
我们也喜欢直接投入建模。如果这听起来像你,可以看看这本书
https://machinelearning.org.cn/machine-learning-with-python/
感谢您分享这个精彩而详细的书籍评测,很多人想学习数据科学,而最好的方法之一就是选择一本好书来入门,这个评测将帮助人们决定它是否是适合他们的选择!
谢谢Proquotient。
你好,
我能知道你花了多少天完成这本书吗?给我一个大致的 ধারণা,以便我安排我的时间表。
我花了一周的时间,在几次火车旅程中读完了它。
请按自己的节奏阅读。不必更快或更慢。
嗨,Jason,
你见过这本书代码的仅Notebook(Jupyter)版本吗?
如果没有,你认为创建该存储库的Notebook版本是否值得一试?
感谢您提供的任何想法。
没有,我没见过。这对你来说可能是一个有趣的练习,但我建议不要在线发布,以免侵犯版权。
数据科学是关于提出问题,然后收集数据,并构建模型来回答它们。我们并不真正需要一本“数据科学从零开始”的书,除非它包含一系列业务案例研究加上建模——
有什么书可以学习这个吗?
也许你是对的。
我没见过这样的书。
你好 Jason,
《数据科学从零开始》一定是一本很棒的书。我也愿意学习Python进行数据科学。这篇关于Python书籍的博文“https://data-flair.training/blogs/best-python-book/”推荐了我《Python for Data Analysis》和《Python machine learning》。你还有其他推荐吗?
提前感谢。
祝好!
谢谢。
我建议你开始做项目,只有当你需要深入研究某个主题时才去查书。
内容很棒,对所有希望在该领域开始数据科学培训生涯的数据科学培训候选人都很有用。
谢谢。
我读过的最好的书!不知道接下来该读什么。有什么推荐吗?
谢谢。
也许其中一些教程会让你感兴趣
https://machinelearning.org.cn/start-here/#code_algorithms
嗨,Jason,
我开始自学数据科学。我也有一些博客。我一直在找入门的书,但一直没找到。你对这本书的评测帮助我选择它作为起点。谢谢你的帮助!期待更多建议。有什么线索吗?
谢谢,很高兴听到这个。
这真的取决于你想学习什么。
也许从这里开始
https://machinelearning.org.cn/faq/single-faq/what-other-machine-learning-books-do-you-recommend
这本书在数学上对我来说有点太松散了。我不是说“我更喜欢理论”的那种意思,而是说许多算法(尤其是第8章及以后)在清晰度方面可以大大受益于说明各种函数的定义域、值域等。准确描述梯度下降也很有帮助,而不是用(x,y)作为数据变量的Python代码。我明白写通用代码的诱惑,但这样做的话,最好能澄清每个变量的含义,以及正在最小化哪个函数等。
这些问题从小处着手并逐渐扩大。我完全没有问题处理算法的数学,也没有问题处理Python。但有时,将数学翻译成Python文本是一场噩梦,并使某些部分难以阅读,因为数学是黑盒化的,但仍然包含在代码中以保持“从零开始”的原则。
很好的建议,谢谢Andres。
数据科学是“一个概念,旨在统一统计学、数据分析、机器学习及其相关方法”,以“理解和分析实际现象”以及数据。
我曾在TGC India学习过数据科学课程。他们提供各种教程,涵盖从数据科学过程到如何开始数据科学的一切内容。
感谢分享。
感谢分享如此翔实的数据科学帖子,我找这个信息找了很久了。
不客气。
读完你的评测后,我刚买了这本书。我对学习路径和目录的结构感到满意。我真的迫不及待想收到它了:)
干得好!
这些内容对于所有渴望在数据科学培训领域开展职业生涯的数据科学候选人来说都非常有价值。
谢谢你。
Anil,非常欢迎!如果您有任何问题,请告诉我们。