前言
在本书第2版的写作过程中,我时刻以程序员的需要为出发点。本书面向程序员群体,致力于向广大程序员介绍数据挖掘技术。我认为,数据挖掘技术对于计算机科学领域的所有从业人士来说都不可或缺,因为它正迅速成为下一代人工智能系统的基石。你即便不亲自构建人工智能系统,也会使用它们、与它们产生联系、接受它们的指引。人工智能系统的幕后过程是重中之重,理解该过程有助于你发挥这些系统的最大效用。
由于第2版在第1版的基础上编写,因而许多章节和练习与第1版中类似,但是第2版中引入了一些新的概念,扩大了练习所涉及的范围。第1版的读者应该能迅速读完本书,轻松掌握新的知识,然后参加本书建议的额外活动。而新读者则可以多花一些时间,解答习题并动手实验。你可以随意拆解本书中的代码以加深理解。如有疑问,可以联系我寻求帮助。
由于本书是面向程序员群体的,因此我假定你已经掌握了关于编程与Python的知识。有鉴于此,除非Python代码的意义不明确,否则本书将不会详细解释其工作机制。
本书内容
第1章,数据挖掘入门,介绍本书中将会用到的技术,并从实现两个基础算法入手。
第2章,用scikit-learn
估计器解决分类问题,介绍一种重要的数据挖掘形式——分类。此外,你还可以了解一些数据结构,这有助于你顺利完成数据挖掘实验。
第3章,用决策树预测获胜球队,介绍决策树和随机森林这两个新算法,然后创建有用的特征,并将其交由算法来预测获胜的球队。
第4章,用亲和性分析推荐电影,着眼于根据既往经验推荐产品的问题,并介绍Apriori算法。
第5章,特征与scikit-learn
转换器,介绍更多类型的特征,以及如何处理不同的数据集。
第6章,用朴素贝叶斯算法探索社交媒体,利用朴素贝叶斯算法在社交媒体网站Twitter上自动解析文本信息。
第7章,用图挖掘实现推荐关注,应用聚类分析和网络分析的方法,在社交媒体中找出适合关注的人。
第8章,用神经网络识别验证码,介绍如何提取图像中的信息,用以训练神经网络,使其能从图像中识别单词和字母。
第9章,作者归属问题,抽取文本特征,然后用支持向量机(support vector machine,SVM)判断文档的作者。
第10章,聚类新闻文章,用-均值(
)聚类算法,根据内容对新闻文章分组。
第11章,用深度神经网络实现图像中的对象检测,应用深度神经网络,判定图像中显示对象的类型。
第12章,大数据处理,关注在大数据场景中应用数据挖掘算法的工作流,以及如何从中获取有用的见解。
附录A,下一步工作,回顾之前的每一章,并提供扩展学习资源,帮助读者加深对前述概念的理解。
阅读前提
毋庸置疑,你需要有一台计算机,或者至少能接触到一台计算机,才能完成对本书内容的学习。计算机的配置要比较新,但也不必过高,只要配备任意一款现代处理器(大概产于2010年以后)和4 GB内存就可以了。即便是在性能差一些的系统上,也几乎可以运行本书中的全部代码。
但最后两章是例外。在这两章中,我用AWS(Amazon Web Services)运行代码。这很可能会产生一些花费,不过比起在本地运行代码,少了一些配置系统的工作。如果你不想使用付费的AWS,本书用到的工具也可以在本地计算机上安装,不过这样,对计算机的配置要求会较高:它必须具备2012年以后出厂的处理器和4 GB以上的内存。
我推荐使用Ubuntu操作系统。尽管本书中的代码在Windows、Mac和其他Linux发行版中均可正常运行,但是如果你使用Ubuntu以外的操作系统,可能需要在配置或安装依赖时查阅相关文档。
本书使用pip
来安装代码,它是安装Python库的命令行工具。另一个选项是Anaconda,你可以登录http://continuum.io点击Download下载它。
我在Python 3中测试过本书中的全部代码,多数示例代码无须修改即可在Python 2中运行。如遇到无法自行处理的问题,可以通过邮件联系我解决。
读者对象
本书是数据挖掘的入门读物,写给注重从应用上手的程序员。
如果你从未涉足编程,我强烈建议你在阅读本书之前至少了解一下编程的基础知识。本书不会介绍编程技巧,也不会花太多篇幅论述代码实现细节。这就是说,虽然你无须成为编程专家,但需要具备编程的基础知识才能顺畅地阅读本书。
我强烈建议你在阅读前积累一些Python编程经验。如果没有也没关系,请尽管阅读,只不过你需要先熟悉一下Python代码,比如看看用Jupyter Notebook编写的教程。在Jupyter Notebook中编写代码会与其他方式(比如在成熟且功能完备的IDE中编写Java程序)有些不同。
排版约定
你会在本书中发现一些不同的文本样式,它们区分了不同类型的内容。下面的示例解释了不同样式的意义。
文本中的代码、数据库表名、文件夹名、文件名、文件扩展名、路径名、用户输入和Twitter手柄均以如下形式呈现:“下一行代码读取链接,并传给dataset_filename()
函数。”
代码块的样式如下。
import numpy as np
dataset_filename = "affinity_dataset.txt"
X = np.loadtxt(dataset_filename)
命令行输入和输出的样式如下。
$ conda install scikit-learn
新术语和重要词汇会以黑体字标明。而在屏幕上显示的词语(比如菜单和对话框中的词语)会采用这样的样式:“为了下载新模块,请点击文件|设置|项目名称|项目解释器。”
此图标表示警告和重要注解。
此图标表示提示与技巧。
读者反馈
我们非常乐于接受读者的反馈。请告诉我们,你觉得本书如何,喜欢或不喜欢哪些内容。我们重视读者的反馈,这有助于我们写出真正对大家有帮助的图书。
一般的反馈可以直接发邮件到feedback@packtpub.com,记得在邮件主题中注明书名。
如果你专精于某个主题,并且有兴趣撰写图书或供稿,请参看我们的作者指南:https://www.packtpub.com/authors。
客户支持
请为拥有一本Packt出版的书而骄傲吧!我们的许多服务会让你觉得物有所值。
下载示例代码
你可以在http://www.packtpub.com登录账号,下载本书的示例代码。如果你是从别处购买本书的,那么请在http://www.packtpub.com/support注册,我们会通过电子邮件把示例代码文件发送给你。
下载示例代码文件的步骤如下:
(1) 访问我们的网站,用邮箱和密码登录或注册账号;
(2) 把鼠标指针放置在顶部的SUPPORT标签上;
(3) 点击Code Downloads & Errata;
(4) 在Search框中输入本书名称;
(5) 选择本书以下载示例代码文件;
(6) 在下拉菜单中选择本书的购买途径;
(7) 点击Code Download。
文件下载完成之后,请确保用最新版本的解压工具来解压缩,解压工具如下。
- Windows:WinRAR / 7-Zip
- Mac:Zipeg / iZip / UnRarX
- Linux:7-Zip / PeaZip
本书的代码包也托管在GitHub上:https://github.com/PacktPublishing/Learning-Data-Mining-with-Python-Second-Edition。
GitHub仓库的好处是可以记录下任何与代码相关的问题(包括软件版本变化带来的问题),还可以让全世界的读者参与代码的修改工作。我们的许多其他图书和视频的代码包也托管在了GitHub上,欢迎访问:https://github.com/PacktPublishing/。
为了避免缩进出现问题,不要直接从PDF复制代码,请运行代码包中的文件。
勘误
尽管我们全力确保内容准确无误,但出错在所难免。如果你能把书中的错误反馈给我们,哪怕只是文字或代码上的错误,我们都将感激不尽。如此义举不仅能使其他读者受益,也能帮助我们在本书的后续版本中改正错误。如果你发现任何错误,请访问http://www.packtpub.com/submit-errata反馈给我们,只需选择书名,并点击Errata Submission Form链接,然后输入勘误建议。1你提交的勘误建议通过验证后将被采纳,然后会被上传到我们的网站,或添加到现有勘误表中。
1本书中文版勘误请到http://www.ituring.com.cn/book/2652查看和提交,本书彩色图片也请到该网址查看和下载。——编者注
要查阅之前提交的勘误,请访问https://www.packtpub.com/books/content/support,然后在搜索栏中输入书名,之后在Errata部分就可以找到勘误信息。
反盗版
现今,所有类型的媒体都面临互联网侵权问题。在Packt,版权和许可证受到严格保护。如果你在互联网上遇到任何形式的盗版Packt作品,请立即向我们提供地址或网站名称等线索,以帮助我们采取补救措施。
问题
如果你对本书有任何方面的问题,请发邮件到questions@packtpub.com,我们会尽全力解决。
电子书
扫描如下二维码,即可购买本书电子版。