收藏 分享(赏)

Python机器学习基础教程(完整电子版)###.pdf

上传人:jintaihu 文档编号:5712352 上传时间:2022-06-16 格式:PDF 页数:306 大小:16.89MB
下载 相关 举报
Python机器学习基础教程(完整电子版)###.pdf_第1页
第1页 / 共306页
亲,该文档总共306页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、图灵社区的电子书没有采用专有客户端,您可以在任意设备上,用自己喜欢的浏览器和PDF阅读器进行阅读。 但您购买的电子书仅供您个人使用,未经授权,不得进行传播。 我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。?图 灵 程 序 设 计 丛 书人 民 邮 电 出 版 社北京Introduction to Machine Learning with Python德 Andreas C. Mller 美 Sarah Guido著张亮 (hysic) 译Python机器学习基础教程Beijing

2、Boston Farnham Sebastopol TokyoOReilly Media, Inc.授权人民邮电出版社出版内 容 提 要本书是机器学习入门书,以 Python 语言介绍。主要内容包括 : 机器学习的基本概念及其应用 ; 实践中最常用的机器学习算法以及这些算法的优缺点 ; 在机器学习中待处理数据的呈现方式的重要性,以及应重点关注数据的哪些方面 ; 模型评估和调参的高级方法,重点讲解交叉验证和网格搜索 ; 管道的概念 ; 如何将前面各章的方法应用到文本数据上,还介绍了一些文本特有的处理方法。本书适合机器学习从业者或有志成为机器学习从业者的人阅读。定价:79.00元读者服务热线:(0

3、10)51095186转600印装质量热线:(010)81055316反盗版热线:(010)81055315广告经营许可证:京东工商广登字 20170147 号著德 Andreas C. Mller 美 Sarah Guido译张亮(hysic)责任编辑岳新欣执行编辑李敏责任印制彭志环人民邮电出版社出版发行北京市丰台区成寿寺路11号邮编100164电子邮件网址http:/北京印刷开本:80010001/16印张:18.75 彩插:4页字数:443千字 2018年 1 月第 1 版印数:1 4 000册 2018年 1 月北京第 1 次印刷著作权合同登记号 图字:01-2017-8626号欢迎加

4、入Py t h o n 学习交流编程QQ群783462347,群里免费提供500+本Py t h o n 书籍!版权声明 2017 by Sarah Guido and Andreas Mller.Simplified Chinese Edition, jointly published by OReilly Media, Inc. and Posts & Telecom Press, 2018. Authorized translation of the English edition, 2016 OReilly Media, Inc., the owner of all rights to

5、 publish and sell the same.All rights reserved including the rights of reproduction in whole or in part in any form. 英文原版由 OReilly Media, Inc. 出版 2016。简体中文版由人民邮电出版社出版,2018。英文原版的翻译得到 OReilly Media, Inc. 的授权。此简体中文版的出版和销售得到出版权和销售权的所有者 OReilly Media,Inc. 的许可。版权所有,未得书面许可,本书的任何部分和全部不得以任何形式重制。欢迎加入Py t h o

6、n 学习交流编程QQ群783462347,群里免费提供500+本Py t h o n 书籍!OReilly Media 通过图书、杂志、在线服务、调查研究和会议等方式传播创新知识。自 1978 年开始,OReilly 一直都是前沿发展的见证者和推动者。超级极客们正在开创着未来,而我们关注真正重要的技术趋势通过放大那些“细微的信号”来刺激社会对新科技的应用。作为技术社区中活跃的参与者,OReilly 的发展充满了对创新的倡导、创造和发扬光大。OReilly 为软件开发人员带来革命性的“动物书” ;创建第一个商业网站(GNN) ;组织了影响深远的开放源代码峰会,以至于开源软件运动以此命名;创立了

7、Make 杂志,从而成为 DIY 革命的主要先锋;公司一如既往地通过多种形式缔结信息与人的纽带。OReilly 的会议和峰会集聚了众多超级极客和高瞻远瞩的商业领袖,共同描绘出开创新产业的革命性思想。作为技术人士获取信息的选择,OReilly 现在还将先锋专家的知识传递给普通的计算机用户。无论是通过图书出版、在线服务或者面授课程,每一项 OReilly 的产品都反映了公司不可动摇的理念信息是激发创新的力量。业界评论“OReilly Radar 博客有口皆碑。 ”Wired“OReilly 凭借一系列(真希望当初我也想到了)非凡想法建立了数百万美元的业务。 ”Business 2.0“OReill

8、y Conference 是聚集关键思想领袖的绝对典范。 ”CRN“一本 OReilly 的书就代表一个有用、有前途、需要学习的主题。 ”Irish Times“Tim 是位特立独行的商人,他不光放眼于最长远、最广阔的视野,并且切实地按照Yogi Berra 的建议去做了: 如果你在路上遇到岔路口,走小路(岔路) 。 回顾过去,Tim 似乎每一次都选择了小路,而且有几次都是一闪即逝的机会,尽管大路也不错。 ”Linux JournalOReilly Media, Inc.介绍图灵社区会员 zhugeln() 专享 尊重版权欢迎加入Py t h o n 学习交流编程QQ群783462347,群里

9、免费提供500+本Py t h o n 书籍!v目录前言 .ix第 1 章引言 .11.1为何选择机器学习 .11.1.1机器学习能够解决的问题 .21.1.2熟悉任务和数据 .41.2为何选择 Python.41.3scikit-learn .41.4必要的库和工具 .51.4.1Jupyter Notebook .61.4.2NumPy .61.4.3SciPy .61.4.4matplotlib .71.4.5pandas .81.4.6mglearn .91.5Python 2 与 Python 3 的对比 .91.6本书用到的版本 .101.7第一个应用:鸢尾花分类 .111.7.1

10、初识数据 .121.7.2衡量模型是否成功:训练数据与测试数据 .141.7.3要事第一:观察数据 .151.7.4构建第一个模型:k 近邻算法 .161.7.5做出预测 .171.7.6评估模型 .181.8小结与展望 .19欢迎加入Py t h o n 学习交流编程QQ群783462347,群里免费提供500+本Py t h o n 书籍!vi 目录第 2 章监督学习 .212.1分类与回归 .212.2泛化、过拟合与欠拟合 .222.3监督学习算法 .242.3.1一些样本数据集 .252.3.2k 近邻 .282.3.3线性模型 .352.3.4朴素贝叶斯分类器 .532.3.5决策树

11、 .542.3.6决策树集成 .642.3.7核支持向量机 .712.3.8神经网络(深度学习) .802.4分类器的不确定度估计 .912.4.1决策函数 .912.4.2预测概率 .942.4.3多分类问题的不确定度 .962.5小结与展望 .98第 3 章无监督学习与预处理.1003.1无监督学习的类型 .1003.2无监督学习的挑战 .1013.3预处理与缩放 .1013.3.1不同类型的预处理 .1023.3.2应用数据变换 .1023.3.3对训练数据和测试数据进行相同的缩放 .1043.3.4预处理对监督学习的作用 .1063.4降维、特征提取与流形学习 .1073.4.1主成分

12、分析 .1073.4.2非负矩阵分解 .1203.4.3用 t-SNE 进行流形学习 .1263.5聚类 .1303.5.1k 均值聚类 .1303.5.2凝聚聚类 .1403.5.3DBSCAN .1433.5.4聚类算法的对比与评估 .1473.5.5聚类方法小结 .1593.6小结与展望 .159欢迎加入Py t h o n 学习交流编程QQ群783462347,群里免费提供500+本Py t h o n 书籍!目录 vii第 4 章数据表示与特征工程.1614.1分类变量 .1614.1.1One-Hot 编码(虚拟变量) .1624.1.2数字可以编码分类变量 .1664.2分箱、离

13、散化、线性模型与树 .1684.3交互特征与多项式特征 .1714.4单变量非线性变换 .1784.5自动化特征选择 .1814.5.1单变量统计 .1814.5.2基于模型的特征选择 .1834.5.3迭代特征选择 .1844.6利用专家知识 .1854.7小结与展望 .192第 5 章模型评估与改进 .1935.1交叉验证 .1945.1.1scikit-learn中的交叉验证 .1945.1.2交叉验证的优点 .1955.1.3分层 k 折交叉验证和其他策略 .1965.2网格搜索 .2005.2.1简单网格搜索 .2015.2.2参数过拟合的风险与验证集 .2025.2.3带交叉验证的

14、网格搜索 .2035.3评估指标与评分 .2135.3.1牢记最终目标 .2135.3.2二分类指标 .2145.3.3多分类指标 .2305.3.4回归指标 .2325.3.5在模型选择中使用评估指标 .2325.4小结与展望 .234第 6 章算法链与管道 .2366.1用预处理进行参数选择 .2376.2构建管道 .2386.3在网格搜索中使用管道 .2396.4通用的管道接口 .2426.4.1用make_pipeline方便地创建管道 .2436.4.2访问步骤属性 .2446.4.3访问网格搜索管道中的属性 .244欢迎加入Py t h o n 学习交流编程QQ群783462347

15、,群里免费提供500+本Py t h o n 书籍!viii 目录6.5网格搜索预处理步骤与模型参数 .2466.6网格搜索选择使用哪个模型 .2486.7小结与展望 .249第 7 章处理文本数据 .2507.1用字符串表示的数据类型 .2507.2示例应用:电影评论的情感分析 .2527.3将文本数据表示为词袋 .2547.3.1将词袋应用于玩具数据集 .2557.3.2将词袋应用于电影评论 .2567.4停用词 .2597.5用 tf-idf 缩放数据 .2607.6研究模型系数 .2637.7多个单词的词袋(n 元分词) .2637.8高级分词、词干提取与词形还原 .2677.9主题建

16、模与文档聚类 .2707.10小结与展望 .277第 8 章全书总结 .2788.1处理机器学习问题 .2788.2从原型到生产 .2798.3测试生产系统 .2808.4构建你自己的估计器 .2808.5下一步怎么走 .2818.5.1理论 .2818.5.2其他机器学习框架和包 .2818.5.3排序、推荐系统与其他学习类型 .2828.5.4概率建模、推断与概率编程 .2828.5.5神经网络 .2838.5.6推广到更大的数据集 .2838.5.7磨练你的技术 .2848.6总结 .284关于作者 .285关于封面 .285欢迎加入Py t h o n 学习交流编程QQ群7834623

17、47,群里免费提供500+本Py t h o n 书籍!ix 前言目前,从医疗诊断和治疗到在社交网络上寻找好友,许多商业应用和研究项目都离不开机器学习。许多人以为,只有大公司的大型研究团队才能用到机器学习。在本书中,我们要向你展示,自己动手构建机器学习解决方案是多么容易的一件事,也将介绍如何将这件事做到最好。学完本书中的知识,你可以自己构建系统,研究 Twitter 用户的情感,或者对全球变暖做出预测。机器学习的应用十分广泛,如今的海量数据使得其应用范围更是远超人们的想象。目标读者本书是为机器学习从业者或有志成为机器学习从业者的人准备的,他们在为现实生活中的机器学习问题寻找解决方案。这是一本入

18、门书,不需要读者具备机器学习或人工智能(artificial intelligence,AI)的相关知识。我们主要使用 Python 和scikit-learn库,一步一步构建一个有效的机器学习应用。我们介绍的方法适用于科学家和研究人员,也会对开发商业应用的数据科学家有所帮助。如果你对 Python 以及 NumPy 和matplotlib库有所了解的话,将能够更好地掌握本书的内容。我们刻意不将数学作为重点,而是将机器学习算法的实践作为重点。数学(尤其是概率论)是机器学习算法的基石,所以我们不会详细分析算法的细节。如果你对机器学习算法的数学部分感兴趣,我们推荐阅读 Trevor Hastie、

19、Robert Tibshirani 和 Jerome Friedman 合著的统计学习基础 (Elements of Statistical Learning,Springer 出版社)一书,可以在几位作者的网站上免费阅读这本书(http:/statweb.stanford.edu/tibs/ElemStatLearn/) 。我们也不会从头讲解如何编写机器学习算法,而是将重点放在如何应用scikit-learn库和其他库中已经实现的海量模型。写作本书的原因市面上已经有许多关于机器学习和 AI 的书了,但这些书都是为计算机科学专业的研究生或博士生准备的,里面全都是高等数学的内容。与之形成鲜明对比

20、的是,在研究领域和商业应用中,机器学习是作为一般工具使用的。如今,使用机器学习并不需要拥有博士学欢迎加入Py t h o n 学习交流编程QQ群783462347,群里免费提供500+本Py t h o n 书籍!x 前言位。然而,能够完全涵盖在实践中实现机器学习算法的所有重要内容,而又不需要先修高等数学课程,这样的学习资源少之又少。对于那些想要使用机器学习算法而又不想花费大量时间研读微积分、线性代数和概率论的人来说,我们希望本书能够有所帮助。本书概览本书的结构大致如下。 第 1 章介绍机器学习的基本概念及其应用,并给出本书会用到的基本设置。 第 2 章和第 3 章介绍实践中最常用的机器学习算

21、法,并讨论这些算法的优缺点。 第 4 章介绍在机器学习中待处理数据的呈现方式的重要性,以及应重点关注数据的哪些方面。 第 5 章介绍模型评估和调参的高级方法,重点讲解交叉验证和网格搜索。 第 6 章解释管道的概念。管道用于串联多个模型并封装工作流。 第 7 章介绍如何将前面各章讲述的方法应用到文本数据上,还介绍了一些文本特有的处理方法。 第 8 章对全书进行总结,还介绍了有关更高级主题的参考资料。虽然第 2 章和第 3 章给出了实际算法,但对于初学者来说,并不需要理解所有这些算法。如果你想要尽快构建一个机器学习系统,我们建议你首先阅读第 1 章和第 2 章的开始部分,里面介绍了所有的核心概念。

22、然后你可以翻到 2.5 节,里面提到了我们介绍的所有监督学习模型。从中选择最适合你需求的模型,然后翻回到对应小节阅读其详细内容。之后你可以使用第 5 章中的方法对你的模型进行评估和调参。在线资源在学习本书时,一定要参考scikit-learn官方网站(http:/scikit-learn.org) ,查阅关于类和函数的更详细的文档,以及很多示例。此外,Andreas Mller 创建的视频课程“scikit-learn高等机器学习” (Advanced Machine Learning with scikit-learn)可以作为本书的补充材料。你可以在 http:/ 观看该课程。排版约定本书

23、使用了下列排版约定。 黑体表示新术语或重点强调的内容。 等宽字体(constant width)表示程序片段,以及正文中出现的变量、函数名、数据库、数据类型、环境变量、语句和关键字等。也用于表示命令、模块和包的名称。 加粗等宽字体(constant width bold)表示需要用户逐字输入的命令或其他文本。图灵社区会员 zhugeln() 专享 尊重版权欢迎加入Py t h o n 学习交流编程QQ群783462347,群里免费提供500+本Py t h o n 书籍!前言 xi 等宽斜体(constant width italic)表示应替换成用户输入的值,或替换成根据上下文确定的值。该图

24、标表示提示或建议。该图标表示一般性说明。该图标表示警告或警示。使用代码示例补充材料(代码示例、IPython notebook 等)可以在 https:/ 下载。本书是要帮你完成工作的。一般来说,如果本书提供了示例代码,你可以把它用在你的程序和文档中。除非你使用了很大一部分代码,否则无需联系我们获得许可。比如,用本书的几个代码片段写一个程序就无需获得许可。销售或分发 OReilly 图书的示例光盘则需要获得许可。引用本书中的示例代码来回答问题无需获得许可。将书中大量示例代码放到你的产品文档中则需要获得许可。如果你在引用本书内容时注明出处,我们将不胜感激,但这并非强制要求。引用说明一般包括书名、

25、作者、出版社和 ISBN。比如: “An Introduction to Machine Learning with Python by Andreas C. Mller and Sarah Guido (OReilly). Copyright 2017 Sarah Guido and Andreas Mller, 978-1-449-36941-5.”如果你认为自己对代码示例的用法超出了合理使用的范围或上述许可的范围,敬请通过 与我们联系。Safari Books OnlineSafari Books Online 是应运而生的数字图书馆,它同时以图书和视频的形式出版世界顶级技术和商业作家的

26、专业作品。 欢迎加入Py t h o n 学习交流编程QQ群783462347,群里免费提供500+本Py t h o n 书籍!xii 前言技术专家、软件开发人员、Web 设计师、商务人士和创意专家等,在开展调研、解决问题、学习和认证培训时,都将 Safari Books Online 视作获取资料的首选渠道。 对于企业、政府、教育机构和个人,Safari Books Online 都提供各种产品组合和灵活的定价策略。 用户可通过一个功能完备的数据库检索系统访问 OReilly Media、Prentice Hall Professional、Addison-Wesley Professio

27、nal、Microsoft Press、Sams、Que、Peachpit Press、Focal Press、Cisco Press、John Wiley & Sons、Syngress、Morgan Kaufmann、IBM Redbooks、Packt、Adobe Press、FT Press、Apress、Manning、New Riders、McGraw-Hill、Jones & Bartlett、Course Technology 等数百家出版社的上千种图书、培训视频和正式出版之前的书稿。要了解 Safari Books Online 的更多信息,请访问我们的网站。 联系我们请把对

28、本书的评价和问题发给出版社。美国:OReilly Media, Inc.1005 Gravenstein Highway NorthSebastopol, CA 95472 中国:北京市西城区西直门南大街 2 号成铭大厦 C 座 807 室(100035)奥莱利技术咨询(北京)有限公司我们为本书创建了一个网页,在上面列出了本书的勘误表、示例以及其他信息。本书的网站地址是:http:/ 如果你想就本书发表评论或技术性问题,请发送电子邮件到 。 想了解更多 OReilly 图书、培训课程、会议和新闻的信息,请访问我们的网站:http:/。 我们在 Facebook 的地址如下:http:/ 请关注

29、我们的 Twitter 动态:http:/ 我们的 YouTube 视频地址如下:http:/ 致谢来自Andreas的致谢如果没有许多人的帮助和支持,本书永远不会出版。我要感谢本书编辑 Meghan Blanchette 和 Brian MacDonald,特别是 Dawn Schanafelt,感谢欢迎加入Py t h o n 学习交流编程QQ群783462347,群里免费提供500+本Py t h o n 书籍!前言 xiii他们帮助我和 Sarah 共同完成这本书。我要感谢我的审稿人 Thomas Caswell、Olivier Grisel、Stefan van der Walt 和

30、 John Myles White,感谢他们花费时间阅读本书的早期版本,并提供宝贵的反馈意见。这些意见也成为了科学计算开源生态系统的基石。我永远感谢热情的 Python 科学计算开源社区,特别要感谢scikit-learn的贡献者们。如果没有这个社区的支持和帮助,特别是 Gael Varoquaux、Alex Gramfort 和 Olivier Grisel 的支持和帮助,我永远无法成为scikit-learn的核心贡献者,也无法像现在这样对这个包有如此深刻的理解。我还要感谢scikit-learn的其他所有贡献者,他们花费了大量时间改进并维护这个包。我还要感谢与我讨论的许多同事和同行。这些

31、谈话帮助我理解了机器学习的挑战,并让我产生构思一本教科书的想法。我与许多人讨论过机器学习,但我要特别感谢其中的 Brian McFee、Daniela Huttenkoppen、Joel Nothman、Gilles Louppe、Hugo Bowne-Anderson、Sven Kreis、Alice Zheng、Kyunghyun Cho、Pablo Baberas 和 Dan Cervone。我还要感谢 Rachel Rakov,她对本书的早期版本做了许多热心的测试和校对工作,在成书过程中给了我很多帮助。就个人来说,我要感谢我的父母 Harald 和 Margot,还有我的姐姐 Miri

32、am,感谢他们持续给予我的支持和鼓励。我还要感谢生命中的许多人,他们的爱和友谊给我能量,支持我完成这项富有挑战性的任务。来自Sarah的致谢我要感谢 Meghan Blanchette,没有她的帮助和指导,甚至就不会有本项目的存在。感谢Celia La 和 Brian Carlson 早期对本书的审阅。感谢 OReilly 工作人员无尽的耐心。最后,感谢 DTS,感谢你永恒不变的支持。电子书扫描如下二维码,即可购买本书电子版。图灵社区会员 zhugeln() 专享 尊重版权第1 章引言机器学习(machine learning)是从数据中提取知识。它是统计学、人工智能和计算机科学交叉的研究领域

33、,也被称为预测分析(predictive analytics)或统计学习(statistical learning) 。近年来,机器学习方法已经应用到日常生活的方方面面。从自动推荐看什么电影、点什么食物、买什么商品,到个性化的在线电台和从照片中识别好友,许多现代化网站和设备的核心都是机器学习算法。当你访问像 Facebook、Amazon 或 Netflix 这样的复杂网站时,很可能网站的每一部分都包含多种机器学习模型。除了商业应用之外,机器学习也对当前数据驱动的研究方法产生了很大影响。本书中介绍的工具均已应用在各种科学问题上,比如研究恒星、寻找遥远的行星、发现新粒子、分析DNA 序列,以及提

34、供个性化的癌症治疗方案。不过,如果想受益于机器学习算法,你的应用无需像上面那些例子那样给世界带来重大改变,数据量也用不着那么大。本章将解释机器学习如此流行的原因,并探讨机器学习可以解决哪些类型的问题。然后将向你展示如何构建第一个机器学习模型,同时介绍一些重要的概念。1.1为何选择机器学习在“智能”应用的早期,许多系统使用人为制订的“if”和“else”决策规则来处理数据,或根据用户输入的内容进行调整。想象有一个垃圾邮件过滤器,其任务是酌情将收到的某些邮件移动到垃圾邮件文件夹。你可以创建一个关键词黑名单,所有包含这些关键词的邮件都会被标记为垃圾邮件。这是用专家设计的规则体系来设计“智能”应用的一

35、个示例。人为制订的决策规则对某些应用来说是可行的,特别是人们对其模型处理过程非常熟悉的应用。但是,人为制订决策规则主要有两个缺点。12 第 1 章 做决策所需要的逻辑只适用于单一领域和单项任务。任务哪怕稍有变化,都可能需要重写整个系统。 想要制订规则,需要对人类专家的决策过程有很深刻的理解。这种人为制订规则的方法并不适用的一个例子就是图像中的人脸检测。如今,每台智能手机都能够检测到图像中的人脸。但直到 2001 年,人脸检测问题才得到解决。其主要问题在于,计算机“感知”像素(像素组成了计算机中的图像)的方式与人类感知面部的方式有非常大的不同。正是由于这种表征差异,人类想要制订出一套好的规则来描

36、述数字图像中的人脸构成,基本上是不可能的。但有了机器学习算法,仅向程序输入海量人脸图像,就足以让算法确定识别人脸需要哪些特征。1.1.1机器学习能够解决的问题最成功的机器学习算法是能够将决策过程自动化的那些算法,这些决策过程是从已知示例中泛化得出的。在这种叫作监督学习(supervised learning)的方法中,用户将成对的输入和预期输出提供给算法,算法会找到一种方法,根据给定输入给出预期输出。尤其是在没有人类帮助的情况下,给定前所未见的输入,算法也能够给出相应的输出。回到前面垃圾邮件分类的例子,利用机器学习算法,用户为算法提供大量电子邮件(作为输入) ,以及这些邮件是否为垃圾邮件的信息

37、(作为预期输出) 。给定一封新邮件,算法就能够预测它是否为垃圾邮件。从输入 / 输出对中进行学习的机器学习算法叫作监督学习算法(supervised learning algorithm) ,因为每个用于算法学习的样例都对应一个预期输出,好像有一个“老师”在监督着算法。虽然创建一个包含输入和输出的数据集往往费时又费力,但监督学习算法很好理解,其性能也易于测量。如果你的应用可以表示成一个监督学习问题,并且你能够创建包含预期输出的数据集,那么机器学习很可能可以解决你的问题。监督机器学习任务的示例如下。识别信封上手写的邮政编码这里的输入是扫描的手写数字,预期输出是邮政编码中的实际数字。想要创建用于构

38、建机器学习模型的数据集,你需要收集许多信封。然后你可以自己阅读邮政编码,将数字保存为预期输出。基于医学影像判断肿瘤是否为良性这里的输入是影像,输出是肿瘤是否为良性。想要创建用于构建模型的数据集,你需要一个医学影像数据库。你还需要咨询专家的意见,因此医生需要查看所有影像,然后判断哪些肿瘤是良性的,哪些不是良性的。除了影像内容之外,甚至可能还需要做额外的诊断来判断影像中的肿瘤是否为癌变。检测信用卡交易中的诈骗行为这里的输入是信用卡交易记录,输出是该交易记录是否可能为诈骗。假设你是信用卡的发行单位,收集数据集意味着需要保存所有的交易,并记录用户是否上报过任何诈骗交易。引言 3在这些例子中需要注意一个

39、有趣的现象,就是虽然输入和输出看起来相当简单,但三个例子中的数据收集过程却大不相同。阅读信封虽然很辛苦,却非常简单,也不用花多少钱。与之相反,获取医学影像和诊断不仅需要昂贵的设备,还需要稀有又昂贵的专家知识,更不要说伦理问题和隐私问题了。在检测信用卡诈骗的例子中,收集数据要容易得多。你的顾客会上报诈骗行为,从而为你提供预期输出。要获取所有欺诈行为和非欺诈行为的输入 /输出对,你只需等待即可。本书会讲到的另一类算法是无监督学习算法(unsupervised learning algorithm) 。在无监督学习中,只有输入数据是已知的,没有为算法提供输出数据。虽然这种算法有许多成功的应用,但理解

40、和评估这些算法往往更加困难。无监督学习的示例如下。确定一系列博客文章的主题如果你有许多文本数据,可能想对其进行汇总,并找到其中共同的主题。事先你可能并不知道都有哪些主题,或者可能有多少个主题。所以输出是未知的。将客户分成具有相似偏好的群组给定一组客户记录,你可能想要找出哪些客户比较相似,并判断能否根据相似偏好对这些客户进行分组。对于一家购物网站来说,客户分组可能是“父母” “书虫”或“游戏玩家” 。由于你事先并不知道可能有哪些分组,甚至不知道有多少组,所以并不知道输出是什么。检测网站的异常访问模式想要识别网站的滥用或 bug,找到异常的访问模式往往是很有用的。每种异常访问模式都互不相同,而且你

41、可能没有任何记录在案的异常行为示例。在这个例子中你只是观察流量,并不知道什么是正常访问行为和异常访问行为,所以这是一个无监督学习问题。无论是监督学习任务还是无监督学习任务,将输入数据表征为计算机可以理解的形式都是十分重要的。通常来说,将数据想象成表格是很有用的。你想要处理的每一个数据点(每一封电子邮件、每一名客户、每一次交易)对应表格中的一行,描述该数据点的每一项属性(比如客户年龄、交易金额或交易地点)对应表格中的一列。你可能会从年龄、性别、账号创建时间、在你的购物网站上的购买频率等方面来描述用户。你可能会用每一个像素的灰度值来描述肿瘤图像,也可能利用肿瘤的大小、形状和颜色进行描述。在机器学习

42、中,这里的每个实体或每一行被称为一个样本(sample)或数据点,而每一列(用来描述这些实体的属性)则被称为特征(feature) 。本书后面会更详细地介绍如何构建良好的数据表征,这被称为特征提取(feature extraction)或特征工程(feature engineering) 。但你应该记住,如果没有数据信息的话,所有机器学习算法都无法做出预测。举个例子,如果你只有病人的姓氏这一个特征,那么任何算法都无法预测其性别。这一信息并未包含在数据中。如果你添加另一个特征,里面包含病人的名字,那么你预测正确的可能性就会变大,因为通过一个人的名字往往可以判断其性别。4 第 1 章1.1.2熟悉

43、任务和数据在机器学习过程中,最重要的部分很可能是理解你正在处理的数据,以及这些数据与你想要解决的任务之间的关系。随机选择一个算法并将你的数据输入进去,这种做法是不会有什么用的。在开始构建模型之前,你需要理解数据集的内容。每一种算法的输入数据类型和最适合解决的问题都是不一样的。在构建机器学习解决方案的过程中,你应该给出下列问题的答案,或者至少要将这些问题记在脑中。 我想要回答的问题是什么?已经收集到的数据能够回答这个问题吗? 要将我的问题表示成机器学习问题,用哪种方法最好? 我收集的数据是否足够表达我想要解决的问题? 我提取了数据的哪些特征?这些特征能否实现正确的预测? 如何衡量应用是否成功?

44、机器学习解决方案与我的研究或商业产品中的其他部分是如何相互影响的?从更大的层面来看,机器学习算法和方法只是解决特定问题的过程中的一部分,一定要始终牢记整个项目的大局。许多人浪费大量时间构建复杂的机器学习解决方案,最终却发现没有解决正确的问题。当深入研究机器学习的技术细节时(本书会讲到这些细节) ,很容易忽视最终目标。我们虽然不会详细讨论上面列出的问题,但仍然鼓励你记住自己在开始构建机器学习模型时做出的假设,无论是明确的还是隐含的假设。1.2为何选择PythonPython 已经成为许多数据科学应用的通用语言。它既有通用编程语言的强大功能,也有特定领域脚本语言(比如 MATLAB 或 R)的易用

45、性。Python 有用于数据加载、可视化、统计、自然语言处理、图像处理等各种功能的库。这个大型工具箱为数据科学家提供了大量的通用功能和专用功能。使用 Python 的主要优点之一,就是利用终端或其他类似 Jupyter Notebook 的工具能够直接与代码进行交互;我们很快会讲到 Jupyter Notebook。机器学习和数据分析本质上都是迭代过程,由数据驱动分析。这些过程必须要有快速迭代和易于交互的工具。作为通用编程语言,Python 还可以用来创建复杂的图形用户界面(graphical user interface,GUI)和 Web 服务,也可以集成到现有系统中。1.3scikit-

46、learnscikit-learn是一个开源项目,可以免费使用和分发,任何人都可以轻松获取其源代码来查看其背后的原理。scikit-learn项目正在不断地开发和改进中,它的用户社区非常活跃。它包含许多目前最先进的机器学习算法,每个算法都有详细的文档(http:/scikit-learn.org/stable/documentation) 。scikit-learn是一个非常流行的工具,也是最有名的 Python 机器学习库。它广泛应用于工业界和学术界,网上有大量的教程和代码片段。scikit-learn引言 5也可以与其他大量 Python 科学计算工具一起使用,本章后面会讲到相关内容。在阅

47、读本书的过程中,我们建议你同时浏览scikit-learn用户指南(http:/scikit-learn.org/stable/user_guide.html)和 API 文档,里面给出了每个算法的更多细节和更多选项。在线文档非常全面,而本书会介绍机器学习的所有必备知识,以便于你深入了解。安装scikit-learnscikit-learn依赖于另外两个 Python 包:NumPy 和 SciPy。若想绘图和进行交互式开发,还应该安装matplotlib、IPython 和 Jupyter Notebook。我们推荐使用下面三个预先打包的Python 发行版之一,里面已经装有必要的包。Ana

48、conda(https:/store.continuum.io/cshop/anaconda/)用于大规模数据处理、预测分析和科学计算的 Python 发行版。Anaconda 已经预先安装好 NumPy、SciPy、matplotlib、pandas、IPython、Jupyter Notebook 和scikit-learn。它可以在 Mac OS、Windows 和 Linux 上运行,是一种非常方便的解决方案。对于尚未安装 Python 科学计算包的人,我们建议使用 Anaconda。Anaconda 现在还免费提供商用的 Intel MKL 库。MKL(在安装 Anaconda 时自

49、动安装)可以使scikit-learn中许多算法的速度大大提升。Enthought Canopy(https:/ Python 发行版。它已经预先装有 NumPy、SciPy、matplotlib、pandas和 IPython,但免费版没有预先安装scikit-learn。如果你是能够授予学位的学术机构的成员,可以申请学术许可,免费使用 Enthought Canopy 的付费订阅版。Enthought Canopy 适用于 Python 2.7.x,可以在 Mac OS、Windows 和 Linux 上运行。Python(x,y)(http:/python-xy.github.io/)专

50、门为 Windows 打造的 Python 科学计算免费发行版。Python(x,y) 已经预先装有 NumPy、SciPy、matplotlib、pandas、IPython 和scikit-learn。如果你已经安装了 Python,可以用pip安装上述所有包:$ pip install numpy scipy matplotlib ipython scikit-learn pandas1.4必要的库和工具了解scikit-learn及其用法是很重要的,但还有其他一些库也可以改善你的编程体验。scikit-learn是基于 NumPy 和 SciPy 科学计算库的。除了 NumPy 和 S

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术方案

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报