机器学习:使用OpenCV和Python进行智能图像处理
译者序
序
前言
审校者简介
第1章 品味机器学习 1
1.1 初步了解机器学习 1
1.2 机器学习可以解决的事情 3
1.3 初步了解 Python 4
1.4 初步了解 OpenCV 4
1.5 安装 5
查看完整
序
前言
审校者简介
第1章 品味机器学习 1
1.1 初步了解机器学习 1
1.2 机器学习可以解决的事情 3
1.3 初步了解 Python 4
1.4 初步了解 OpenCV 4
1.5 安装 5
查看完整
Michael Beyeler是华盛顿大学神经工程和数据科学专业的博士后,主攻仿生视觉计算模型,用以为盲人植入人工视网膜(仿生眼睛),改善盲人的视觉体验。 他的工作属于神经科学、计算机工程、计算机视觉和机器学习的交叉领域。他也是2015年Packt出版的《OpenCV with Python Blueprints》一书的作者,该书是构建高级计算机视觉项目的实用指南。同时他也是多个开源项目的积极贡献者,具有Python、C/C++、CUDA、MATLAB和Android的专业编程经验。
他还拥有加利福尼亚大学欧文分校计算机科学专业的博士学位、瑞士苏黎世联邦理工学院生物医学专业的硕士学位和电子工程专业的学士学位。当他不“呆头呆脑” 地研究大脑时,他会攀登雪山、参加现场音乐会或者弹钢琴。
他还拥有加利福尼亚大学欧文分校计算机科学专业的博士学位、瑞士苏黎世联邦理工学院生物医学专业的硕士学位和电子工程专业的学士学位。当他不“呆头呆脑” 地研究大脑时,他会攀登雪山、参加现场音乐会或者弹钢琴。
本书是一本基于OpenCV和Python的机器学习实战手册,既详细介绍机器学习及OpenCV相关的基础知识,又通过具体实例展示如何使用OpenCV和Python实现各种机器学习算法,并提供大量示列代码,可以帮助你掌握机器学习实用技巧,解决各种不同的机器学习和图像处理问题。
全书共12章,第1章简要介绍机器学习基础知识,并讲解如何安装OpenCV和Python工具;
第2章展示经典的机器学习处理流程及OpenCV和Python工具的使用;
第3章讨论监督学习算法,以及如何使用OpenCV实现这些算法;
第4章讨论数据表示和特征工程,并介绍OpenCV中提供的用于处理图像数据的常见特征提取技术;
查看完整
全书共12章,第1章简要介绍机器学习基础知识,并讲解如何安装OpenCV和Python工具;
第2章展示经典的机器学习处理流程及OpenCV和Python工具的使用;
第3章讨论监督学习算法,以及如何使用OpenCV实现这些算法;
第4章讨论数据表示和特征工程,并介绍OpenCV中提供的用于处理图像数据的常见特征提取技术;
查看完整
译者序
序
前言
审校者简介
第1章 品味机器学习 1
1.1 初步了解机器学习 1
1.2 机器学习可以解决的事情 3
1.3 初步了解 Python 4
1.4 初步了解 OpenCV 4
1.5 安装 5
1.5.1 获取本书最新的代码 5
1.5.2 掌握 Python Anaconda 6
1.5.3 在 conda 环境中安装OpenCV 8
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-NN 37
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训练一个MLP 189
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 实现AdaBoost 212
10.4.1 使用OpenCV实现AdaBoost 212
10.4.2 使用scikit-learn实现AdaBoost 213
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
^ 收 起
序
前言
审校者简介
第1章 品味机器学习 1
1.1 初步了解机器学习 1
1.2 机器学习可以解决的事情 3
1.3 初步了解 Python 4
1.4 初步了解 OpenCV 4
1.5 安装 5
1.5.1 获取本书最新的代码 5
1.5.2 掌握 Python Anaconda 6
1.5.3 在 conda 环境中安装OpenCV 8
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-NN 37
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训练一个MLP 189
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 实现AdaBoost 212
10.4.1 使用OpenCV实现AdaBoost 212
10.4.2 使用scikit-learn实现AdaBoost 213
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
^ 收 起
Michael Beyeler是华盛顿大学神经工程和数据科学专业的博士后,主攻仿生视觉计算模型,用以为盲人植入人工视网膜(仿生眼睛),改善盲人的视觉体验。 他的工作属于神经科学、计算机工程、计算机视觉和机器学习的交叉领域。他也是2015年Packt出版的《OpenCV with Python Blueprints》一书的作者,该书是构建高级计算机视觉项目的实用指南。同时他也是多个开源项目的积极贡献者,具有Python、C/C++、CUDA、MATLAB和Android的专业编程经验。
他还拥有加利福尼亚大学欧文分校计算机科学专业的博士学位、瑞士苏黎世联邦理工学院生物医学专业的硕士学位和电子工程专业的学士学位。当他不“呆头呆脑” 地研究大脑时,他会攀登雪山、参加现场音乐会或者弹钢琴。
他还拥有加利福尼亚大学欧文分校计算机科学专业的博士学位、瑞士苏黎世联邦理工学院生物医学专业的硕士学位和电子工程专业的学士学位。当他不“呆头呆脑” 地研究大脑时,他会攀登雪山、参加现场音乐会或者弹钢琴。
本书是一本基于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章给出一些处理实际机器学习问题的提示和技巧。
^ 收 起
全书共12章,第1章简要介绍机器学习基础知识,并讲解如何安装OpenCV和Python工具;
第2章展示经典的机器学习处理流程及OpenCV和Python工具的使用;
第3章讨论监督学习算法,以及如何使用OpenCV实现这些算法;
第4章讨论数据表示和特征工程,并介绍OpenCV中提供的用于处理图像数据的常见特征提取技术;
第5章展示如何使用OpenCV构建决策树进行医疗诊断;
第6章讨论如何使用OpenCV构建支持向量机检测行人;
第7章介绍概率论,并展示如何使用贝叶斯学习实现垃圾邮件过滤;
第8章讨论一些非监督学习算法;
第9章详细讲解如何构建深度神经网络来识别手写数字;
第10章讨论如何高效地集成多个算法来提升性能;
第11章讨论如何比较不同分类器的结果,选择合适的工具;
第12章给出一些处理实际机器学习问题的提示和技巧。
^ 收 起
比价列表