新書推薦:
《
血色帝国:近代英国社会与美洲移民
》
售價:HK$
58.2
《
海外中国研究·王羲之:六朝贵族的世界(艺术系列)
》
售價:HK$
178.1
《
唐宋绘画史 全彩插图版
》
售價:HK$
98.6
《
海洋、岛屿和革命:当南方遭遇帝国(文明的另一种声音)
》
售價:HK$
106.4
《
铝合金先进成型技术
》
售價:HK$
266.6
《
《全面与进步跨太平洋伙伴关系协定》国有企业条款研究
》
售價:HK$
98.6
《
银行业架构网络BIAN(全球数字化时代金融服务业框架)(数字化转型与创新管理丛书)
》
售價:HK$
98.6
《
金托邦:江湖中的沉重正义
》
售價:HK$
60.5
編輯推薦:
OpenCV是一个综合了经典和先进计算机视觉、机器学习算法的开源库。通过与Python Anaconda版本结合,你就可以获取你所需要的所有开源计算库。
本书首先介绍分类和回归等统计学习的基本概念,然后详细讲解决策树、支持向量机和贝叶斯网络等算法,以及如何把它们与其他OpenCV函数结合,*后还会介绍时下热门主题——深度学习。通过本书的学习,你将掌握大量实用机器学习技巧,并依据书中提供的代码或从零开发自己的算法,解决实际问题。
通过阅读本书,你将:
·学习并高效使用OpenCV的机器学习模块
·使用Python学习用于计算机视觉领域的深度学习技术
·掌握线性回归和归一化技巧
·对花卉品种、手写数字和行人等物体进行分类
·学习支持向量机、提升决策树和随机森林的高效使用方法
·学习使用神经网络和深度学习解决现实问题
·使用k均值聚类发现数据的隐藏结构
·掌握数据预处理和特征工程
內容簡介:
本书是一本基于OpenCV和Python的机器学习实战手册,既详细介绍机器学习及OpenCV相关的基础知识,又通过具体实例展示如何使用OpenCV和Python实现各种机器学习算法,并提供大量示列代码,可以帮助你掌握机器学习实用技巧,解决各种不同的机器学习和图像处理问题。
全书共12章,第1章简要介绍机器学习基础知识,并讲解如何安装OpenCV和Python工具;第2章展示经典的机器学习处理流程及OpenCV和Python工具的使用;第3章讨论监督学习算法,以及如何使用OpenCV实现这些算法;第4章讨论数据表示和特征工程,并介绍OpenCV中提供的用于处理图像数据的常见特征提取技术;第5章展示如何使用OpenCV构建决策树进行医疗诊断;第6章讨论如何使用OpenCV构建支持向量机检测行人;第7章介绍概率论,并展示如何使用贝叶斯学习实现垃圾邮件过滤;第8章讨论一些非监督学习算法;第9章详细讲解如何构建深度神经网络来识别手写数字;第10章讨论如何高效地集成多个算法来提升性能;第11章讨论如何比较不同分类器的结果,选择合适的工具;第12章给出一些处理实际机器学习问题的提示和技巧。
關於作者:
Michael Beyeler是华盛顿大学神经工程和数据科学专业的博士后,主攻仿生视觉计算模型,用以为盲人植入人工视网膜(仿生眼睛),改善盲人的视觉体验。 他的工作属于神经科学、计算机工程、计算机视觉和机器学习的交叉领域。他也是2015年Packt出版的《OpenCV with Python Blueprints》一书的作者,该书是构建高级计算机视觉项目的实用指南。同时他也是多个开源项目的积极贡献者,具有Python、CC++、CUDA、MATLAB和Android的专业编程经验。
他还拥有加利福尼亚大学欧文分校计算机科学专业的博士学位、瑞士苏黎世联邦理工学院生物医学专业的硕士学位和电子工程专业的学士学位。当他不“呆头呆脑” 地研究大脑时,他会攀登雪山、参加现场音乐会或者弹钢琴。
目錄 :
译者序
序
前言
审校者简介
第1章 品味机器学习1
1.1 初步了解机器学习1
1.2 机器学习可以解决的事情3
1.3 初步了解 Python4
1.4 初步了解 OpenCV4
1.5 安装5
1.5.1 获取本书最新的代码5
1.5.2 掌握 Python Anaconda6
1.5.3 在 conda 环境中安装OpenCV8
1.5.4 验证安装结果9
1.5.5 一睹 OpenCV ML 模块11
1.6 总结11
第2章 使用 OpenCV 和 Python处理数据12
2.1 理解机器学习流程12
2.2 使用 OpenCV 和 Python 处理数据14
2.2.1 创建一个新的 IPython 或 Jupyter 会话15
2.2.2 使用 Python 的 NumPy包处理数据16
2.2.3 在 Python 中载入外部数据集20
2.2.4 使用 Matplotlib 进行数据可视化21
2.2.5 使用C++ 中 OpenCV 的 TrainData 容器处理数据26
2.3 总结27
第3章 监督学习的第一步28
3.1 理解监督学习28
3.1.1 了解 OpenCV 中的监督学习29
3.1.2 使用评分函数评估模型性能30
3.2 使用分类模型预测类别35
3.2.1 理解 k-NN 算法37
3.2.2 使用 OpenCV实现 k-NN37
3.3 使用回归模型预测连续结果43
3.3.1 理解线性回归43
3.3.2 使用线性回归预测波士顿房价44
3.3.3 应用 Lasso 回归和ridge 回归48
3.4 使用逻辑回归对鸢尾花种类进行分类48
3.5 总结53
第4 数据表示与特征工程54
4.1 理解特征工程54
4.2 数据预处理55
4.2.1 特征标准化56
4.2.2 特征归一化57
4.2.3 特征缩放到一定的范围57
4.2.4 特征二值化58
4.2.5 缺失数据处理58
4.3 理解降维59
4.3.1 在OpenCV 中实现主成分分析61
4.3.2 实现独立成分分析64
4.3.3 实现非负矩阵分解65
4.4 类别变量表示66
4.5 文本特征表示68
4.6 图像表示69
4.6.1 使用色彩空间69
4.6.2 图像角点检测71
4.6.3 使用尺度不变特征变换72
4.6.4 使用加速健壮特征74
4.7 总结75
第5章 使用决策树进行医疗诊断76
5.1 理解决策树76
5.1.1 构建第一个决策树79
5.1.2 可视化训练得到的决策树85
5.1.3 深入了解决策树的内部工作机制87
5.1.4 特征重要性评分88
5.1.5 理解决策规则89
5.1.6 控制决策树的复杂度90
5.2 使用决策树进行乳腺癌的诊断90
5.2.1 载入数据集91
5.2.2 构建决策树92
5.3 使用决策树进行回归96
5.4 总结99
第6章 使用支持向量机检测行人100
6.1 理解线性支持向量机100
6.1.1 学习最优决策边界101
6.1.2 实现我们的第一个支持向量机102
6.2 处理非线性决策边界107
6.2.1 理解核机制108
6.2.2 认识我们的核109
6.2.3 实现非线性支持向量机109
6.3 自然环境下的行人检测110
6.3.1 获取数据集111
6.3.2 初窥方向梯度直方图113
6.3.3 生成负样本114
6.3.4 实现支持向量机116
6.3.5 模型自举116
6.3.6 在更大的图像中检测行人118
6.3.7 进一步优化模型120
6.4 总结121
第7章 使用贝叶斯学习实现垃圾邮件过滤122
7.1 理解贝叶斯推断122
7.1.1 概率论的短暂之旅123
7.1.2 理解贝叶斯定理124
7.1.3 理解朴素贝叶斯分类器126
7.2 实现第一个贝叶斯分类器127
7.2.1 创建一个练习数据集127
7.2.2 使用一个正态贝叶斯分类器对数据分类128
7.2.3 使用一个朴素贝叶斯分类器对数据分类131
7.2.4 条件概率的可视化132
7.3 使用朴素贝叶斯分类器对邮件分类134
7.3.1 载入数据集134
7.3.2 使用Pandas构建数据矩阵136
7.3.3 数据预处理137
7.3.4 训练正态贝叶斯分类器138
7.3.5 使用完整的数据集进行训练139
7.3.6 使用n-gram提升结果139
7.3.7 使用TD-IDF提升结果140
7.4 总结141
第8章 使用非监督学习发现隐藏结构142
8.1 理解非监督学习142
8.2 理解k均值聚类143
8.3 理解期望最大化145
8.3.1 实现期望最大化解决方案146
8.3.2 了解期望最大化的局限148
8.4 使用k均值压缩色彩空间154
8.4.1 真彩色调色板的可视化154
8.4.2 使用k均值减少调色板157
8.5 使用k均值对手写数字分类159
8.5.1 载入数据集159
8.5.2 运行k均值159
8.6 把聚类组织成层次树161
8.6.1 理解层次聚类161
8.6.2 实现凝聚层次聚类162
8.7 总结163
第9章 使用深度学习对手写数字分类164
9.1 理解McCulloch-Pitts神经元164
9.2 理解感知器167
9.3 实现第一个感知器169
9.3.1 生成练习数据集170
9.3.2 使用数据拟合感知器171
9.3.3 评估感知器分类器171
9.3.4 把感知器应用到线性不可分的数据上173
9.4 理解多层感知器174
9.4.1 理解梯度下降175
9.4.2 使用反向传播训练多层感知器178
9.4.3 在OpenCV中实现多层感知器179
9.5 了解深度学习183
9.6 手写数字分类186
9.6.1 载入MNIST数据集187
9.6.2 MNIST数据集预处理188
9.6.3 使用OpenCV训练一个MLP189
9.6.4 使用Keras训练一个深度神经网络190
9.7 总结192
第10章 组合不同算法为一个整体193
10.1 理解集成方法193
10.1.1 理解平均集成195
10.1.2 理解提升集成197
10.1.3 理解堆叠集成200
10.2 组合决策树为随机森林200
10.2.1 理解决策树的不足200
10.2.2 实现第一个随机森林204
10.2.3 使用scikit-learn实现一个随机森林205
10.2.4 实现极端随机树206
10.3 使用随机森林进行人脸识别208
10.3.1 载入数据集208
10.3.2 预处理数据集209
10.3.3 训练和测试随机森林210
10.4 实现AdaBoost212
10.4.1 使用OpenCV实现AdaBoost212
10.4.2 使用scikit-learn实现AdaBoost213
10.5 组合不同模型为一个投票分类器214
10.5.1 理解不同的投票机制214
10.5.2 实现一个投票分类器215
10.6 总结217
第11章 通过超参数调优选择合适的模型218
11.1 评估一个模型218
11.1.1 评估模型错误的方法219
11.1.2 评估模型正确的方法220
11.1.3 选择最好的模型221
11.2 理解交叉验证223
11.2.1 使用OpenCV手动实现交叉验证225
11.2.2 使用scikit-learn进行k折交叉验证226
11.2.3 实现留一法交叉验证227
11.3 使用自举评估鲁棒性228
11.4 评估结果的重要性230
11.4.1 实现T检验230
11.4.2 实现配对卡方检验232
11.5 使用网格搜索进行超参数调优233
11.5.1 实现一个简单的网格搜索234
11.5.2 理解验证集的价值235
11.5.3 网格搜索结合交叉验证236
11.5.4 网格搜索结合嵌套交叉验证238
11.6 使用不同评估指标来对模型评分239
11.6.1 选择正确的分类指标239
11.6.2 选择正确的回归指标240
11.7 链接算法形成一个管道240
11.7.1 用 scikit-learn 实现管道241
11.7.2 在网格搜索中使用管道242
11.8 总结243
第12章 综合244
12.1 着手处理一个机器学习问题244
12.2 构建自己的估计器245
12.2.1 使用C++编写自己的基于OpenCV的分类器245
12.2.2 使用Python 编写自己的基于scikit-learn的分类器247
12.3 今后的方向249
12.4 总结251
內容試閱 :
你能看到这里,我非常高兴,是时候来谈谈机器学习了。
机器学习已经不再是一个时髦的词汇,它在我们周围随处可见:保护你的电子邮件、自动在图片上标记朋友、预测你喜欢的电影。作为数据科学的一个子领域,机器学习让电脑可以通过经验来学习:通过收集历史数据来对未来进行预测。
而要被分析的数据是无穷无尽的!目前每天产生的数据量达到了2.5艾字节(约为10亿 GB)。你能相信吗?这些数据足够塞满1000万张蓝光光盘,或者相当于能够持续播放90年的高清视频。为了处理如此庞大的数据,诸如谷歌、亚马逊、微软和脸书这样的公司,投入了大量的人力物力到让我们可以随时随地从机器学习中获益——从你的手机应用扩展到连接着云端的超级计算机的数据平台开发上。
换句话说:现在是时候对机器学习进行投资了。如果你也希望成为机器学习从业人员,那么本书非常适合你!
不过先别急:你的应用并不需要像上面的例子一样规模巨大或者有影响力,才能从机器学习中获益。不积跬步,无以至千里。 因此,本书第一步会通过简单直接的例子,向你介绍统计学习的基础概念,比如分类和回归。如果你已经详细学习了机器学习, 本书将教会你如何学以致用。对了,如果你对这个领域一无所知也没关系——只要你好学即可。
当本书介绍完了所有的基础概念后,将会开始探索各种算法,比如决策树、支持向量机和贝叶斯网络,以及如何把它们与其他 OpenCV 功能结合。在这个过程中,你将会学习如何通过理解数据来理解任务,以及如何构建具有完整功能的机器学习管道。
你的机器学习技能将会随着本书的深入而提高,直到你准备接触这个领域最热的话题:深度学习。结合如何针对任务选择正确工具的训练技巧,我们将确保你可以掌握所有的机器学习基础知识。
在本书的最后部分,你将会准备好面对你自己的机器学习问题,要么基于现有的源代码构建,要么从零开始构建你自己的算法!
本书所涉及的内容
第1章将会简要介绍机器学习不同的子领域,并讲解如何安装 OpenCV 和 Python Anaconda 版本下的其他必要工具。
第2章将展示经典的机器学习处理流程,以及载入处理数据的时机。将会解释训练数据和测试数据之间的区别,以及如何使用 OpenCV 和 Python 载入、存储、处理数据并进行可视化。
第3章将会通过回顾一些核心概念来介绍监督学习的内容,比如分类和回归。你将会学到如何使用 OpenCV 实现一个简单的机器学习算法,如何对数据进行预测,以及如何评估模型。
第4章将会教你如何切身体会一些常见的、著名的机器学习数据集,以及如何从原始数据中提取感兴趣的内容。
第5章将会展示如何使用 OpenCV 构建决策树,以及如何在不同的分类问题和回归问题上使用它。
第6章将会解释如何使用 OpenCV 构建支持向量机,以及如何把它们应用于检测图像中的行人。
第7章将会介绍概率论,并展示如何使用贝叶斯推断来判断邮件是否为垃圾邮件。
第8章将会讨论一些非监督学习算法,比如 k 均值聚类算法和期望最大化算法,并展示如何使用它们从简单、无标签的数据集中提取隐藏的结构信息。
第9章将会把你带到令人激动的深度学习领域。从感知器和多层感知器开始,你将会学习如何构建深度神经网络来对 MNIST 数据集中的手写数字进行识别。
第10章将展示如何高效地集成多个算法,以克服单个学习器的弱点,让预测结果更加准确可靠。
第11章将会介绍模型选择的概念,帮助你针对手上的任务,从不同的机器学习算法中,选择合适的工具。
第12章将会总结本书,并对如何进一步学习机器学习,以及从哪里可以找到更高级话题信息,给出了一些有用的建议。
阅读本书你需要什么
你将需要一台电脑、Python Anaconda 以及学习的激情,非常多的激情。你可能会问:为什么使用 Python?答案很简单:由于它有大量的开源库和可以用于数据处理和交互的工具,这让它最终成为数据科学的专属语言。
其中一个工具是Anaconda Python发行版,它可以提供所需的所有科学计算库,比如 NumPy、SciPy、Matplotlib、scikit-Learn 和 Pandas。此外,安装 OpenCV 仅仅只需一行代码。并不需要设置 cc 编译的选项开关或者从源码进行编译!我们将会在第1章中介绍如何安装 Python Anaconda。
如果你经常结合 C++ 使用 OpenCV,那也没有问题。但是,至少在本书的目标中,还是强烈建议你切换到 Python。C++ 主要应用于开发高性能代码或者构建实时应用。但在学习一项新的技能时,我相信 Python 从根本上说会是更好的语言选择,因为编写的代码少,你就有时间做更多的事情。相对于纠结 C++ 的语法细节,或者花费大量时间把数据从一种格式转换为另一种格式,Python 可以让你更加集中精力在手头的任务上:在机器学习领域变成专家。
样例代码下载
可以从 GitHub上下载本书最新版本的示例代码文件:http:github.commbeyeleropencv-machine-learning。所有的代码以 MIT软件协议发布,因此可以按自己的需要自由地使用、修改和分享。同时也可以在不同的 Jupyter 笔记本中搜索里面的源代码。
如果对源代码有任何疑问,欢迎在我们的论坛上提出来: https:groups.google.comdforummachine-learn