前言
你是不是向往数据挖掘的殿堂,却不得其门而入?如果是的话,这本书就是为你而写的。
很多讲授数据挖掘的书涵盖了大量数学知识,倘若读者有较好的数学背景,这自然不错,但我觉得这些书往往只见树木不见森林;也就是说,它们过于关注算法的工作原理,而忘记了我们使用这些算法的初衷。
本书的目标读者是具备一定编程能力、渴望学习数据挖掘的人。我的目标是,如果你认真学完本书,能较好地理解数据挖掘的基础知识,掌握用数据挖掘知识解决问题的最佳实践,此外还能从书中找到几个值得你深入研究的方向。
本书的每一章都会介绍一个新的主题,我会给出该主题的相关算法和数据集。因此,各章主题之间跳跃有点大,阅读本书的过程中需要你的大脑能快速切换。每学完一章,你都要思考一下有没有什么办法能够提升该章中算法的效果,然后尝试去实现它!
我最喜欢的格言中有一条出自莎士比亚的《亨利四世》:
但是你叫他们的时候,他们真的会来吗?
在剧中,有人声称自己会招魂,于是霍茨波(Hotspur)回复了上面这句话。霍茨波的意思是每个人都会招魂,但问题是招过之后,魂来不来。
跟招魂类似,学习数据挖掘无外乎做实验,获得结果。实现一个新的数据挖掘算法或是改善现有实验结果的想法,每个人都能提出来,但真正重要的是你能不能实现它,还有结果是否尽如人意。
本书主要内容
第1章 开始数据挖掘之旅,介绍我们即将用到的技术,接着通过讲解两个基础算法的实现方法达到热身目的。
第2章 用scikit-learn估计器分类,涵盖了数据挖掘的一个重要主题——分类。这一章还会介绍将数据挖掘流程标准化的流水线结构,便于你管理实验流程。
第3章 用决策树预测获胜球队,介绍决策树和随机森林两个新算法。我们将通过抽取区分度高的特征来预测获胜选手。
第4章 用亲和性分析方法推荐电影,思考根据以往消费记录推荐产品的问题,介绍Apriori算法。
第5章 用转换器抽取特征,介绍不同类别特征的抽取方法及不同数据集的处理方法。
第6章 使用朴素贝叶斯进行社会媒体挖掘,使用朴素贝叶斯算法自动分析来自社交网站Twitter的文本信息。
第7章 用图挖掘找到感兴趣的人,采用聚类和网络分析方法,发现社会媒体上感兴趣的人。
第8章 用神经网络破解验证码,从图像中抽取信息,然后训练神经网络,用来发现图像中的单词和字母。
第9章 作者归属问题,通过抽取文本特征,使用支持向量机算法,找出文档的作者。
第10章 新闻语料分类,使用k-means聚类算法,根据新闻文章内容进行分类。
第11章 用深度学习方法为图像中的物体进行分类,采用深度神经网络算法确定图像中的物体。
第12章 大数据处理,探讨对大数据进行数据挖掘的流程及方法。
附录依次介绍各章的参考资料,便于读者深入了解各章内容。
本书的阅读前提
毫无疑问,要完成本书的学习,你需要准备一台电脑。电脑不能太旧,但也不用配置太高。只要是最近几年的处理器(2010年以后),4GB内存(RAM)就足够了。在性能稍差一点的机器上运行本书中的大部分代码,应该也不会有问题。
最后两章的代码对机器性能要求较高。在这两章中,我介绍了如何使用亚马逊网络服务(AWS)运行代码。这多少可能会让你破费一些,与在本地运行代码相比,好处是不用做那么多系统配置。如果你不想掏钱购买亚马逊的网络服务,可以在本地主机上配置好所有的工具,当然你需要一台配置较高的计算机:2012年及以后的处理器,内存在4GB以上。
我推荐使用Ubuntu操作系统,但是本书示例代码也可以在Windows、Mac和其他任何Linux系统上运行。然而,你可能需要参考系统的相关文档来完成必要工具的安装。
本书中,我将使用命令行工具pip来安装我们用到的Python库。你也可以使用Anaconda,下载地址为http://continuum.io/downloads。
本书所有代码都已在Python 3中测试过。大部分代码无需修改就能在Python 2下运行。如果你遇到什么问题解决不了,请发邮件给我们,我们帮你看看怎么解决。
本书的目标读者
本书是写给那些想把数据挖掘技术应用到实际项目中,却不知道怎么开始的程序员。
如果你没有编程经历,我强烈建议你在学习本书之前,至少先了解一下编程的基础知识。本书直接略过这部分内容,也不会把过多精力放在代码的具体实现上。也就是说,简要学习一下编程基础知识再来学习本书就行。本书不对你的编程技能做过高要求,所以你没必要先成为编程高手!
我强烈建议在阅读本书前最好先积累一些Python编程经验。如果没有的话,也没关系,但是你可能需要先瞧瞧Python代码是怎么回事,可能的话先看看IPython Notebook的教程。用IPython Notebook写程序,跟用其他编辑器写程序(比如使用功能全面的IDE编写Java程序)有一定区别。
排版约定
本书使用不同的文本样式来区分不同类别的内容。以下是常用样式及其用途说明。
首先,我们来看一下最重要的代码所使用的样式。
if True: print("Welcome to the book")
请留意缩进。缩进在Python中表示层级的概念。本书中,我们使用四个空格来表示缩进。你可以按照自己的喜好,使用不同数量的空格(或制表符),但是应该保持一致。如果你被缩进搞糊涂了,请参考本书的示例代码。
在正文中引用代码时,会使用下面这种样式:I'll use this format。你不需要在IPython Notebook中输入这些代码,除非我在正文中明确要求你这么做。
所有的命令行输入或输出都使用下面这种样式:
# cp file1.txt file2.txt
新的术语和重要的词语使用楷体。
此图标表示警告或重要信息。
此图标表示提示或技巧。
读者反馈
我们热忱地欢迎读者朋友给予我们反馈,告诉我们你对于这本书的所思所想——你喜欢或是不喜欢哪些内容。大家的反馈对我们来说至关重要,将能帮助我们确定到底哪些内容是读者真正需要的。
如果你有一般性建议的话,请发邮件至feedback@packtpub.com,请在邮件主题中写清书的名称。
如果你是某一方面的专家,对某个主题特别感兴趣,有意向自己或是与别人合作写一本书,请到www.packtpub.com/authors查阅我们为作者准备的帮助文档。
客户支持
为自己拥有一本Packt出版的书而自豪吧!为了让你的书物有所值,我们还为你准备了以下内容。
下载示例代码
如果你是从http://www.packtpub.com网站购买的图书,用自己的账号登录后,可以下载所有已购图书的示例代码。如果你是从其他地方购买的,请访问http://www.packtpub.com/support网站并注册,我们会用邮件把代码文件直接发给你。
下载配套PDF文件
我们还为你准备了一个PDF文件,该文件包含书中的所有屏幕截图/图表。这些彩色图像能弥补图书中黑白图像的不足,有助于你理解本书内容。该文件的下载地址为https://www.packtpub.com/sites/default/files/downloads/6053OS_ColorImages.pdf。
勘误表
即使我们竭尽所能来保证图书内容的正确性,错误也在所难免。如果你在我们出版的任何一本书中发现错误——可能是在文本或代码中——倘若你能告诉我们,我们将会非常感激。你的善举足以减少其他读者在阅读出错位置时的纠结和不快,帮助我们在后续版本中更正错误。如果你发现任何错误,请访问http://www.packtpub.com/submit-errata,选择相应书籍,点击“Errata Submission Form”链接,输入错误之处的具体信息。你提交的错误得到验证之后,我们就会接受你的建议,该处错误信息将会上传到我们的网站或是添加到已有勘误表的相应位置。
访问https://www.packtpub.com/books/content/support,在搜索框中输入书名,可查看该图书已有的勘误信息。这部分信息会在Errata部分显示。
侵权
所有媒体在互联网上都面临的一个问题就是侵权。对Packt来说,我们严格保护我们的版权和许可证。如果你在网上发现针对我们出版物的任何形式的盗版产品,请立即告知我们地址或网站名称,以便我们进行补救。
请将盗版书籍的网站地址发送到copyright@packtpub.com。
如果你能这么做,就是在保护我们的作者,保护我们,只有这样我们才能继续以优质内容回馈像你这样热心的读者。
问题
你对本书有任何方面的问题,都可以通过questions@packtpub.com邮箱联系我们,我们也将尽最大努力来帮你答疑解惑。