前言

如果你手里(或者你的电子阅读器里)有这本书,可以说,这是一个幸运的巧合。毕竟,每年有几百万册图书印刷出来,供数百万读者阅读,而你恰好选择了这一本。可以说,正是机器学习算法引领你来阅读这本书(或者说是把这本书引领到你面前)。而我们作为本书的作者,很高兴看到你愿意了解更多的“怎么做”和“为什么”。

本书大部分内容都将涉及“怎么做”。例如,怎么处理数据才能让机器学习算法最大限度地利用它们?怎么选择正确的算法来解决手头的问题?

我们偶尔也会涉及“为什么”。例如,为什么正确评估很重要?为什么在特定情形下一个算法比另一个算法的效果更好?

我们知道,要成为该领域的专家还有很多知识要学。毕竟,本书只介绍了一些“怎么做”和极小一部分“为什么”。但在最后,我们希望这些内容可以帮你“启航”,然后快速前行。

本书内容

第1章通过一个非常简单的例子介绍机器学习的基本概念。尽管很简单,但也可能会有过拟合的风险,这对我们提出了挑战。

第2章讲解了使用真实数据解决分类问题的方法,在这里我们对计算机进行训练,使它能够区分不同类型的花朵。

第3章讲解了词袋方法的威力,我们可以在没有真正理解帖子内容的情况下,用它来寻找相似的帖子。

第4章让我们超越将每个帖子分配给单个簇的方式。由于真实的文本可以处理多个主题,我们可以看到如何把帖子分配到几个主题上。

第5章讲解了如何用逻辑回归判定用户的答案是好还是坏。在这个情景的背后,我们将学会用偏差-方差的折中调试机器学习模型。

第6章介绍了朴素贝叶斯的工作原理,以及如何用它对推文进行分类,来判断推文中的情感是正面的还是负面的。

第7章讨论了一个处理数据的经典课题,但它在今天仍然有意义。我们用它构建了一个推荐系统,这个系统根据用户所输入的喜欢和不喜欢的信息,为用户推荐新的商品。

第8章同时使用多种方法改进推荐效果。我们还可以看到如何只根据购物信息构建推荐系统,而不需要用户的评分数据(用户并不总会提供这一信息)。

第9章举例说明,如果有人把我们收集而成的庞大音乐库弄乱了,那么为歌曲建立次序的唯一希望就是让机器来对歌曲分类。你会发现,有时信任别人的专长比我们自己构建特征更好。

第10章讲解了如何在处理图像这个特定情景下应用分类方法。这个领域又叫做模式识别。

第11章告诉我们还有其他什么方法可以帮我们精简数据,使机器学习算法能够处理它们。

第12章讲解了不断膨胀的数据规模,以及这为何会为数据分析造成难题。在本章中,我们利用多核或计算集群,探索了一些更大规模数据的处理方法。另外,我们还介绍了云计算(将亚马逊的Web服务当做云计算提供商)。

附录A罗列了一系列机器学习的优质资源。

阅读需知

本书假定读者了解Python,并且知道如何利用easy_installpip安装库文件。我们并不依赖于任何高等数学知识,如微积分或矩阵代数。

总体而言,本书将使用以下版本的软件,不过如果你使用任何新近版本,也没有问题。

  • Python 2.7
  • NumPy 1.6.2
  • SciPy 0.11
  • Scikit-learn 0.13

读者对象

本书适合想通过开源库来学习机器学习的Python程序员阅读参考。我们会通过示例概述机器学习的基本模式。

本书也适用于想用Python构建机器学习系统的初学者。Python是一个能够快速构建原型系统的灵活语言,它背后的算法都是由优化过的C或C++编写而成。因此,它的代码运行快捷,并且十分稳健,完全可以用在实际产品中。

排版约定

当你阅读本书时,会发现书中有各式各样的文本,它们用来区分不同类型的信息。下面是这些样式文本的示例以及相应说明。

正文中的代码是这样的:“我们可以通过使用include命令将其他内容包含进来。”

代码段采用如下形式:

def nn_movie(movie_likeness, reviews, uid, mid):
    likes = movie_likeness[mid].argsort()
  # 逆序排列,使最受喜爱的电影排在前面
     likes = likes[::-1]
  # 返回最相似电影的打分 
    for ell in likes:
        if reviews[u,ell] > 0:
            return reviews[u,ell]

如果我们想让你注意代码段的特定部分,就会用粗体表示相应代码行或条目:

def nn_movie(movie_likeness, reviews, uid, mid):
    likes = movie_likeness[mid].argsort()
  # 逆序排列,使最受喜爱的电影排在前面
    likes = likes[::-1]
  # 返回最相似电影的打分
    for ell in likes:
        if reviews[u,ell] > 0:
            return reviews[u,ell]

新的术语以及重要文字采用楷体字。你在屏幕(如菜单或者对话框)中见到的文字这样出现在正文中:“点击Next按钮以进入下一界面。”

注意 这里给出重要的注意事项。

提示 提示和技巧则会在这里出现。

读者反馈

我们一贯欢迎读者的反馈意见。请告诉我们你对本书的看法,喜欢哪些部分,不喜欢哪些部分。这些反馈对于协助我们创作出真正对读者有所裨益的内容至关重要。

如果给我们反馈一般性信息,你可以发送电子邮件到feedback@packtpub.com,并在邮件标题中注明书名。如果你是某一方面的专家并愿意参与撰稿,请访问www.packtpub.com/authors参阅我们的作者指南。

客户支持

现在你已经拥有了某本由Packt出版的书,为了让你的付出得到最大的回报,我们还为你提供了其他许多方面的服务,请注意以下信息。

下载代码

如果你是通过http://www.packtpub.com的注册账户购买的图书,可以从该账户中下载相应Packt图书的示例代码1。如果你是从其他地方购买的本书,可以访问http://www.packtpub.com/support并进行注册,我们将会为你发送一封附有示例代码文件的电子邮件。

1.读者还可免费注册iTuring.cn,至本书页面下载——编者注

勘误

虽然我们会全力确保本书内容的准确性,但错误仍在所难免。如果你发现了本书中的错误(包括文字和代码错误),而且愿意向我们提交这些错误,我们感激不尽。这样一来,不仅可以减少其他读者的疑虑,也有助于改进本书后续版本。要提交你发现的错误,请访问http://www.packtpub.com/submit-errata,选择相应图书,点击errata submission form(提交勘误表2),登记你的勘误详情。勘误通过验证之后将上传到Packt网站,或添加到已有的勘误列表中。任何图书当前的勘误都可以通过http://www.packtpub.com/support来查看。

2.中文版的勘误请注册iTuring.cn,至本书页面提交。——编者注

举报盗版

对所有媒体来说,互联网盗版都是一个棘手的问题。Packt很重视版权保护。如果你在互联网上发现我们公司出版物的任何非法复制品,请及时告知我们相关网址或网站名称,以便我们采取补救措施。

如果发现可疑盗版材料,请通过copyright@packtpub.com联系我们。

对你帮助我们保护作者权益、确保我们持续提供高品质图书的行为表示敬意。

疑难解答

如果你就本书存有疑问,请发送电子邮件到questions@packtpub.com,我们会尽力解决。

目录

  • 版权声明
  • 译者序
  • 作者致谢
  • 关于作者
  • 关于审校者
  • 前言
  • 第1章 Python机器学习入门
  • 第2章 如何对真实样本分类
  • 第3章 聚类:寻找相关的帖子
  • 第4章 主题模型
  • 第5章 分类:检测劣质答案
  • 第6章 分类II:情感分析
  • 第7章 回归:推荐
  • 第8章 回归:改进的推荐
  • 第9章 分类III:音乐体裁分类
  • 第10章 计算机视觉:模式识别
  • 第11章 降维
  • 第12章 大数据
  • 附录A 更多机器学习知识