基本信息
- 原书名:Python Machine Learning
- 作者: (美)塞巴斯蒂安·拉施卡(Sebastian Raschka)
- 译者: 高明 徐莹 陶虎成
- 丛书名: 数据科学与工程技术丛书
- 出版社:机械工业出版社
- ISBN:9787111558804
- 上架时间:2017-9-18
- 出版日期:2017 年3月
- 开本:16开
- 版次:1-1
- 所属分类:计算机 > 软件与程序设计 > Python
教材

内容简介
作译者
他还积极参与到开源项目中,由他开发完成的计算方法已经被成功应用到了机器学习竞赛(如Kaggle等)中。在业余时间,他沉醉于构建体育运动的预测模型,要么待在电脑前,要么在运动。
首先,我要感谢Arun Ross和Pang-Ning Tan教授,以及那些曾经启发我并激起我在模式分类、机器学习、数据挖掘领域兴趣的人。
我还想借此机会对Python社区和开源包的开发者表示感谢,他们帮助我创建了一个用于科学研究和数据科学的完美开发环境。
在此,还要特别感谢scikit-learn的核心开发人员。作为此项目的一个参与者,我有幸与这些极客合作,他们不仅对机器学习有着深入的了解,同时还都是非常出色的程序员。
最后,我还要感谢所有对本书感兴趣的读者,也真心希望我的热情能够感染大家一起加入到Python与机器学习社区中来。
审校者简介
Richard Dutton 8岁就开始使用ZX Spectrum编程,对于编程的痴迷使得他深入探索了技术在金融领域中的应用。
他曾在微软工作,现在是Barclays的董事,正痴迷于Python、机器学习和区块链的综合应用。
Dave Julian是一位IT顾问,同时还是一位具有15年经验的教师。他曾做过技术员、项目经理、程序员和Web开发人员。他目前的项目中有一个是开发农作物分析工具,这是温室虫害集成管理系统的一个组成部分。他对生物与技术的交叉领域具有强烈的兴趣,并且坚信智能机可以帮助人们解决世界上最重要的问题。
Vahid Mirjalili拥有密歇根州立大学机械工程专业的博士学位,他利用动力学模型开发出模拟蛋白质结构细节的新方法。结合自己在统计学、数据挖掘与物理学领域的知识,他设计了一种基于数据驱动的强大方法,这使得其研究团队在2012年和2014年两次赢得世界性的蛋白质结构预测技术评估(CASP)竞赛。
在攻读博士学位期间,他决定加入到密歇根州立大学计算机科学与工程系,专门从事机器学习领域的研究。目前的研究项目包括海量数据的无监督机器学习算法等。他还是一位充满激情的Python程序员,并且在个人网站http://vahidmirjalili.com 上分享了他对聚类算法的实现。
Hamidreza Sattari是IT领域的专业人士,曾参与过开发、架构和管理等软件工程中的各个环节。他拥有伊朗德黑兰阿萨德大学电气工程专业的学士学位,以及英国海威瓦特大学的软件工程硕士学位。近年来的研究领域是大数据与机器学习。曾与人合著Spring Web Service 2 Cookbook一书,其个人博客地址是:http://justdeveloped-blog.blogspot.com/。
Dmytro Taranovsky是一名软件工程师,对Python、Linux和机器学习感兴趣,并且在这些领域有一定背景。他出生于乌克兰的基辅,1996年移居到美国生活。他从小就表现出了对科学知识的热爱,并曾在数学与物理竞赛中获奖。1999年,被选为美国物理竞赛小组的成员。2005年,他毕业于麻省理工学院的数学专业。此后,担任医疗信息计算机辅助转换(eScription)文本转换系统的软件工程师。虽然最初工作中使用的是Perl,但他更加中意于Python的强大功能和代码的清晰性,Python使得系统轻易扩展到具备处理海量数据的能力。后来他在算法交易公司担任软件工程师与分析师等职务。他在数学基础领域也做出过重大贡献,包括提出了扩展集理论及其与大基数公理之间的关系,提出了真值构建的符号系统,还用Python实现了一个有序符号系统。他享受阅读,喜欢户外运动,希望人们能够生活在一个更加美好的世界中。
目录
推荐序
作者简介
审校者简介
前言
第1章 赋予计算机学习数据的能力1
1.1构建智能机器将数据转化为知识1
1.2 机器学习的三种不同方法1
1.2.1 通过监督学习对未来事件进行预测2
1.2.2 通过强化学习解决交互式问题4
1.2.3 通过无监督学习发现数据本身潜在的结构4
1.2.4 基本术语及符号介绍5
1.3 构建机器学习系统的蓝图6
1.3.1 数据预处理6
1.3.2 选择预测模型类型并进行训练7
1.3.3 模型验证与使用未知数据进行预测8
1.4 Python在机器学习中的应用8
本章小结9
第2章 机器学习分类算法10
2.1 人造神经元—早期机器学习概览10
译者序
随着科技的进步,特别是互联网技术的发展,使得我们在不知不觉中被卷入了大数据时代。传统的方法已经无法处理如此庞大的数据量,而机器学习技术正是解决此问题的良方。
不同于晦涩的学术书籍,本书是为程序员而作,因此没有过多枯燥的理论讲解,而是借助于Python语言及其机器学习库scikit-learn来帮助程序员快速理解算法的核心与本质,并能在生产环境轻松地加以应用。
本书对机器学习的各种算法进行了系统的讲解。第1章对机器学习以及Python在机器学习中的应用进行了简要的介绍,在后续章节分别讨论了数据分类(第2、3章)、数据预处理(第4、5章)、模型优化(第6章)、集成学习(第7章)、回归(第10章)、聚类(第11章),以及当前流行的神经网络及其深度学习(第12、13章)。每个章节基本上都是按照算法介绍、Python实现,以及使用scikit-learn来应用算法这样的模式进行讨论的,让读者既能掌握算法的本质,又能尽快将其应用到实际开发中去。
第8、9章介绍了机器学习与其他技术相结合的使用情况。第8章通过与自然语言处理方法相结合,以IMDb电影评论数据集作为信息来源,借助于文本处理技术,对用户的情感倾向进行了分析。第9章包含许多实用的主题,包括如何序列化训练得到的模型、使用SQLite存储数据等,并通过实例演示了如何通过Web来分享分类模型的使用。
翻译的过程本身也是一个学习提高的过程,我们已经尽量去保证译文的准确性,但错误仍旧在所难免,如有问题还恳请读者不吝指教。此外,在本书出版后,我们将与同济大学和深圳大学合作,分别在上海、深圳两地就本书的内容与读者进行多次交流与讲解活动,有兴趣的读者可以邮件联系:gaomingsz@vip.163.com。
在翻译本书的过程中得到了深圳市意行科技开发公司、上海市公安高等专科学校、深圳市六度人和科技有限公司等单位领导的支持,在此一并表示感谢。
高明
gaomingsz@vip.163.com
前言
如果你想参与机器学习的实践,或是成为解决问题的能手,抑或是考虑从事机器学习研究方面的工作,那么本书正适合你。不过,对初学者来说,机器学习的理论知识是比较有难度的。幸运的是,近年来出版了许多非常实用的书籍,通过实现一些功能强大的算法来帮助读者步入机器学习的殿堂。在我看来,代码示例起到了重要的作用,通过示例代码的实际操作可以对概念进行更好的阐释。不过请记住:能力强大了,责任就接踵而至!机器学习背后的概念美妙且重要,就如同黑盒一样令人无法琢磨。因此,我旨在为读者提供一本不一样的书籍:讨论与机器学习概念相关的必要细节,并以直观且详实的方式来说明机器学习算法是如何工作的,以及如何在实际中应用它们。尤为重要的是,如何避开常见的误区。
如果在“谷歌学术”中搜索“机器学习”一词,会返回一个大的文献数:1 800 000。当然,我们无法讨论过去60年中所提出的算法和应用的全部细节。不过,本书涵盖了机器学习领域最核心的主题和概念,可以让大家率先踏入这一领域,从而开启一段令人兴奋的旅程。如果本书内容无法满足你对此领域的求知欲,你可以利用作者所列出的丰富资源,追寻这一领域最核心的突破。
如果你已经详细地研究过机器学习理论,本书将教会你如何把所学知识付诸实践。如果你曾经使用过机器学习技术,并且希望能更深入地了解机器学习算法是如何工作的,本书也适合你!如果你刚接触机器学习领域,也不用担心,反而更应该感到高兴。我保证,机器学习将改变你解决问题的思考方式,并且让你见识到如何通过发挥数据的力量来解决问题。
在深度进入机器学习领域之前,先回答一个重要的问题:为什么使用Python?答案很简单:它功能强大且使用方便。Python已经成为数据科学领域最为流行的编程语言,它不仅可以让我们忽略掉编程中那些繁杂的部分,还可以提供一个交互式环境,让我们能够快速记录自己的想法,并且将概念直接付诸实现。
回顾我的个人经历,实事求是地说,对机器学习的研究让我成为一名优秀的科学工作者,让我变得善于思考,并且成长为问题解决能手。在本书中,我将与读者分享这些知识。知识经由学习获得,而学习热情是其中的关键,真正掌握某项技能只有通过实践才能够实现。学习的历程不可能一帆风顺,某些主题相对来说难度会比较大,但我希望大家能把握住这个机会,并享受学习的回报。请记住,在机器学习的旅途中,我们共同前行,通过此书,你将学会许多新的技能,借助于它们,我们甚至能够以数据驱动的方式解决那些最棘手的问题。
本书内容
第1章介绍了机器学习算法的划分。此外,还讨论了构建一个典型的机器学习模型的必要步骤,对此过程的理解有助于后续章节的学习。
第2章追溯了机器学习的起源,介绍了二元感知分类器和自适应线性神经元。该章还介绍了模式分类的基础,并着重介绍优化算法和机器学习的相互作用。
第3章介绍了机器学习中分类算法的基本内容,并使用一个流行且包含算法种类相对齐全的开源机器学习算法库scikit-learn,来完成几个机器学习分类算法实例。
第4章讨论了如何处理原始数据中常见的问题,诸如数据缺失等。该章还讨论了几种如何从数据集中找出蕴含信息最丰富特征的方法,并讲解了如何处理不同数据类型的变量,以使其与机器学习算法的输入要求相匹配。
第5章介绍了如何通过降维来压缩数据的特征数量,以便将数据集压缩到一个容量相对较小的子集上,同时还能保持原数据中有用的区分信息。该章主要讨论了通过主成分分析来降维的标准方法,并将其与监督以及线性变换技术进行了比较。
第6章讨论了对预测模型进行评估时应该做什么和不应该做什么。此外,还探讨了衡量模型的不同标准以及机器学习算法调优的相关技巧。
第7章介绍了有效地组合多个机器学习算法的不同方法,并讲授了如何通过构造继承模型来消除个别分类器的弱点,从而最终得到更加准确和可信的预测结果。
第8章讨论了将文本数据转化为有意义的表达方式的方法,根据人们的留言借助机器学习算法来预测其观点。
第9章继续对预测模型进行了探讨,并将引导你完成将机器学习模型嵌入到Web应用中的核心步骤。
第10章讨论了当自变量和因变量都为连续值时,建立线性模型来完成预测的基本方法。在介绍了不同的线性模型后,又讨论了多项式回归和基于树的方法—随机森林。
第11章将关注的焦点转移到了另一类型的机器学习方法:无监督学习。我们使用了三种基本的聚类算法将具备一定相似度的对象划分为几个组别。
第12章扩展了第2章中提及的梯度优化的概念,并基于流行的反向传播算法来构建强大的多层神经网络。
在上一章内容的基础上,第13章提供了更加有效地训练神经网络的实用指南。该章关注的重点是Theano,它是一个开源的Python库,借此,我们可以充分利用现代GPU上众多的计算内核。
序言
我们生活在数据洪流中。根据最新的估计,每天会产生大约2.5艾(1018)字节的数据。这个数据量非常之大,其中超过90%都是近十年产生的。然而,大部分信息都没有得到充分的利用,究其原因,可能是因为数据量超出了常用分析方法的处理范围,也可能是因为人类智力有限,无法处理如此庞大的数据。
通过机器学习,我们可以使用计算机处理数据、对数据进行学习,从而打破大数据看似牢不可破的禁锢,并形成我们自己的见解。无论是支持谷歌搜索引擎的超级计算机,还是人们每天使用的智能手机,机器学习在日常生活中确实起到了不可或缺的作用,通常,我们并没意识到它的存在。
大数据的开拓者为人们打开了一个崭新的领域,我们有必要进一步了解机器学习。什么是机器学习?机器学习是如何工作的?如何利用机器学习去探索未知,处理个人事务,抑或是在互联网上找到自己最喜欢的电影?Sebastian Raschka 是我的好友兼同事,本书不仅涵盖了上述几点,还包含更多的精彩内容。
Sebastian坚持不懈地将他的业余时间都贡献给了机器学习开源社区。过去几年,Sebastian已经完成了许多本使用Python进行机器学习及数据可视化的入门教程。他还是多个Python开源包的贡献者,其中有几个已经成为Python机器学习工作流中的核心组件。
Sebastian精通机器学习,我确信他对Python机器学习的深刻见解将会让不同层次的从业者从中收益。对于任何想开阔自己在机器学习领域的视野,或者想获得更多实操经验的读者来说,我强烈推荐此书。
Randal S. Olson博士
宾夕法尼亚大学人工智能与机器学习领域的研究员