使用机器学习模型快速进行图像分类识别

零、前言

在上一篇,我们介绍了使用sklearn库快速创建一个用于预测房价的机器学习回归模型,并通过平均绝对误差、均方差和R3分数有效地评估了这个预测模型的效果。

在本篇,我们继续介绍借助sklearn库创建用于进行分类预测的机器学习模型。

对分类问题进行预测同样属于监督学习的范畴,通过对已知数据的类别的标记,来实现对未知数据的类别的预测和判定。

常见的应用领域包括:垃圾邮件识别、垃圾短信识别、图像分类识别等等。

常见的应用算法则有:SVM(支持向量机)、K紧邻、朴素贝叶斯、随机森林等等。

下面,我们就通过Digits手写数字集来进行机器学习分类模型的介绍。

一、初探手写数字数据集

本篇选用的手写数字数据集同样来自有sklearn.datasets子模块,其由著名的UCI 机器学习库提供:

该数据集由1797个8x8图像组成。每个图像,都是手写数字。

就像上一篇导入波士顿数据集一样,我们从sklearn模块中进行导入:

接着查看数据集中包含的子方法:

与波士顿数据集类似,其提供了images、target_names、target、data、DESCR等方法。其中:

  • images:表示图像的原始数组;
  • target_names:表示图像分类中所有的数字;
  • target:表示图像数组对应的数字名称;
  • data:表示图像的一维特征数组;
  • DESCR:表示数据集描述信息;

从这两个数据集可以发现,sklearn的API还是挺统一和规范的,很方便进行学习和调用。接下来,我们看看每个方法中到底都是些什么。

通过查看images的形状,以及已知的图像为8×8的形状,我们可以得知,这个数据集中有1797个图像。看看其中一个图像的内容:

这就是一个图像转换成数组之后的形式,我们怎么知道这是个什么图像呢?可以借助于matplotlib模块来将图像数组还原为图像。

可能之前搭建环境的时候没有安装这个模块,我们先来安装一下:

然后引入matplotlib模块,调用imshow()方法:

可以发现,iamges中的第一个图像似乎数字0。我们继续看下面的内容。

data的target_name信息显示,我们的数据代表的数字分类类别为0到9。

数据的目标值与数据集时匹配的,最后再看看data的data:

数据量还是1797条,但是形状已经从二维的(8, 8)变成了一维的64,我们从一个具体的数据中看看:

可以发现,data.data中的数组将之前8*8的数组合成为了一个数组,这样才能方便对图像的数组运用算法进行训练和计算。那又如何将一维的图像数组还原为图像呢,通过是上面的方法,但是需要先将一维数组转换一下形状:

我们同样将数据集的特征和目标转换为pandas的DataFrame,方便各位同学理解数据集的形状:

二、分割训练测试集

同样使用sklearn提供的train_test_split方法来对数据集进行训练集和测试集的分割:

三、创建分类模型

在此,我们同样选择随机森林算法 作为机器学习模型估计器的基本算法来创建一个机器学习分类器并进行训练:

四、评估模型

在训练完成模型之后,我们同样可以使用模型的predict()方法获取到测试集的预测结果:

在面对回归模型的时候,我们可以使用平均绝对误差、均方差等方法对模型的效果进行评估,而在分类算法模型中,我们使用其他的方法进行模型效果的评估,比如:精度分类评分、召回评分等。而这些方法,也都在sklearn模块的metrics子模块下。

我们来对分类模型进行效果评估:

两种评估方法的最佳结果值都是1,看起来我们的模型准确度还是蛮高的,大家可以尝试其他的算法构建分类模型。

欢迎留言交流讨论:)

下一篇,我们将介绍构建一个聚类预测型。

原文发布于微信公众号 - 州的先生(zmister2016)

原文发表时间:2018-03-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Pulsar-V

原-图像处理基础(二)图像的放大与缩小

最近邻插值法 ? 其中 size(g(x))代表图像像素矩阵列宽 size(g(y))代表图像像素矩阵行高 scale 代表缩放倍数 \begin{matr...

4617
来自专栏瓜大三哥

基于FPGA的Sobel算子(三)

基于FPGA的Sobel算子(三) 之Cordic坐标系转换电路 1.前期预处理:完成坐标象限转换。 2.完成n次迭代工作:采用菊花链式结构设计。 3.后期处理...

1839
来自专栏云时之间

Tensorflow 笔记:搭建神经网络

1463
来自专栏决胜机器学习

机器学习(二十三) —— 大数据机器学习(随机梯度下降与map reduce)

机器学习(二十三)——大数据机器学习(随机梯度下降与map reduce) (原创内容,转载请注明来源,谢谢) 一、概述 1、存在问题 当样本集非常大的时候,...

3373
来自专栏人工智能LeadAI

译文 | 与TensorFlow的第一次接触 第四章:单层神经网络

在前言中,已经提到经常使用深度学习的领域就是模式识别。编程初学者都是从打印“Hello World”开始,深度学习中我们则是从识别手写数字开始。 本章中,我会讲...

37211
来自专栏大学生计算机视觉学习DeepLearning

基于tensorflow实现简单卷积神经网络Lenet5

3377
来自专栏AI科技评论

开发 | 手把手教你用 TensorFlow 实现文本分类(上)

由于需要学习语音识别,期间接触了深度学习的算法。利用空闲时间,想用神经网络做一个文本分类的应用, 目的是从头到尾完成一次机器学习的应用,学习模型的优化方法,同时...

3339
来自专栏用户2442861的专栏

Logistic回归与梯度下降法

http://blog.csdn.net/acdreamers/article/details/44657979

521
来自专栏机器学习原理

机器学习(4)——逻辑回归Logistic回归softmax回归

前言:这里是分类问题,之所以放到线性回归的下面介绍,是因为逻辑回归的步骤几乎是和前面一样的,写出目标函数,找到损失函数,求最小值,求解参数,建立模型,模型评估。...

3558
来自专栏量化投资与机器学习

深度学习Matlab工具箱代码注释之cnnsetup.m

%%========================================================================= %...

2625

扫码关注云+社区