【项目实战】Python基于决策树多分类模型实现水色图像的水质评价

说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取。

【项目实战】Python基于决策树多分类模型实现水色图像的水质评价_第1张图片

【项目实战】Python基于决策树多分类模型实现水色图像的水质评价_第2张图片

1.项目背景

       随着工业技术的日益提升,人类的生活变得越来越便利。但与此同时,环境污染问题也日趋严重,大气、土壤、水质污染是各个工业国家不得不面对的问题。污染需要治理,因此对于污染物的评价与监测十分重要。水产养殖业是我国国民经济的一个重要组成部分,在水产养殖的过程中,选择没有污染的水域进行养殖十分重要。

本项目使用拍摄的池塘水样图片数据,结合图像切割和特征提取技术,使用决策树算法,对图样的水质进行预测,以辅助生产人员对水质状况进行判断。

2.项目目标

      有经验的渔业生产从业者可通过观察水色变化调控水质,以维持由浮游植物、微生物类、浮游动物等构成的养殖水体生态系统的动态平衡。大多数情况下,这些是根据经验或通过肉眼观察进行判断的,使得观察结果存在主观性引起的观察性偏倚,可比性、可重复性降低,不易推广应用。当前数字图像处理技术为计算机监控技术在水产养殖业的应用提供了更大的空间。在水质在线监测方面,数字图像处理技术是基于计算机视觉,以专家经验为基础,来对池塘水色进行优劣分级,以实现对池塘水色的准确快速判别。

结合某地区的多个罗非鱼池塘水样的数据,实现以下目标:

1)对水样图片进行切割,提取水样图片中的特征。

2)基于提取的特征数据,构建决策树水质评价模型。

3)对构建的模型进行评价,评价模型对于水色的识别效率。

3.项目过程说明

       我们通过拍摄水样采集得到水样图像,但图像数据的维度过大,不容易分析,这就需要我们从中提取水样图像的特征,即反映图像本质的一些关键指标,以达到自动进行图像识别或分类的目的。显然,图像特征提取是图像识别或分类的关键步骤,图像特征的提取效果将直接影响到图像识别和分类的好坏。

      图像特征主要包括颜色特征、纹理特征、形状特征、空间关系特征等。与几何特征相比,颜色特征更为稳健,对于物体的大小和方向均不敏感,表现出较强的鲁棒性。本项目中,由于水色图像是均匀的,故主要关注颜色特征即可。颜色特征是一种全局特征,它描述了图像或图像区域所对应的景物的表面性质。一般颜色特征是基于像素点的特征,所有属于图像或图像区域的像素都有各自的贡献。在利用图像的颜色信息进行图像处理、识别、分类的研究实现方法上已有大量的研究成果,主要采用颜色处理常用的直方图法和颜色矩方法等。

       颜色直方图是最基本的颜色特征表示方法,它反映的是图像中颜色的组成分布,即出现了哪些颜色以及各种颜色出现的概率。其优点在于它能简单描述一幅图像中颜色的全局分布,即不同色彩在整幅图像中所占的比例,特别适用于描述那些难以自动分割的图像和不需要考虑物体空间位置的图像。其缺点在于它无法描述图像中颜色的局部分布及每种色彩所处的空间位置,即无法描述图像中的某一具体的对象或物体。

      基于颜色矩提取图像特征的数学基础在于图像中任何的颜色分布均可以用它的矩来表示。根据概率论的理论,随机变量的概率分布可以由其各阶矩唯一地表示和描述。一副图像的色彩分布也可认为是一种概率分布,那么图像可以由其各阶矩来描述。颜色矩包含各个颜色通道的一阶距、二阶矩和三阶矩,对于一副RGB颜色空间的图像,具有R、G和B 3个颜色通道,则有9个分量。

       颜色直方图产生的特征维数一般大于颜色矩的特征维数,为了避免过多变量影响后续的分类效果,在本项目中选择采用颜色矩来提取水样图像的特征,即建立水样图像与反映该图像特征的数据信息关系,同时由有经验的专家对水样图像根据经验进行分类,建立水样数据信息与水质类别的专家样本库,进而构建分类模型,得到水样图像与水质类别的映射关系,并经过不断调整系数优化模型,最后再利用训练好的分类模型,用户就能方便地通过水样图像,自动判别出该水样的水质类别。

3.1分析步骤与流程

基于水色图像特征提取的水质评价流程如图所示:

【项目实战】Python基于决策树多分类模型实现水色图像的水质评价_第3张图片

 主要步骤如下:

1)从采集到的原始水样图像中进行选择性抽取形成建模数据。

2)对步骤1形成的数据集进行数据预处理,包括图像切割和颜色矩特征提取。

3)利用步骤2形成的已完成数据预处理的建模数据,划分为训练集与测试集。

4)利用步骤3的训练集构建分类模型。

5)利用步骤4构建好的分类模型进行水质评价。

4.数据获取

本次建模数据来源于网络(本项目撰写人整理而成),数据项统计如下:

本项目数据给出了某地区的多个罗非鱼池塘水样的数据,包含水产专家按水色判断水质分类的数据以及用数码相机按照标准进行水色采集的数据,每个水质图片命名规则为“类别-编号.jpg”,如“1_1.jpg”说明当前图片属于第1类的样本。

水色分类

【项目实战】Python基于决策树多分类模型实现水色图像的水质评价_第4张图片

数据详情如下(部分展示):

【项目实战】Python基于决策树多分类模型实现水色图像的水质评价_第5张图片

标准条件下拍摄的水样图像

5.数据预处理

5.1图像切割

一般情况下,采集到的水样图像包含盛水容器,且容器的颜色与水体颜色差异较大,同时水体位于图像中央,所以为了提取水色的特征,就需要提取水样图像中央部分具有代表意义的图像,具体实施方式是提取水样图像中央101×101像素的图像。设原始图像I的大小是M×N,则截取宽从第fix(M/2)-50个像素点到第fix(M/2)+50个像素点,长从第fix(N/2)-50个像素点到第fix(N/2)+50个像素点的子图像。

5.2特征提取

使用Python编程软件进行编程,即可把下图左边的切割前的水样图像切割并保存到右边的切割后的水样图像。

【项目实战】Python基于决策树多分类模型实现水色图像的水质评价_第6张图片

切割前水样图像(左)和切割后水样图像(右)

在本项目中,选择采用颜色矩来提取水样图像的特征,下面给出各阶颜色矩的计算公式。

(1)一阶颜色矩

一阶颜色矩采用一阶原点矩,反映了图像的整体明暗程度,如式所示:

 

式中,Ei是在第i个颜色通道的一阶颜色矩,对于RGB颜色空间的图像,i=1,2,3,Pij是第j个像素的第i个颜色通道的颜色值。 

(2)二阶颜色矩

二阶颜色矩采用的是二阶中心距的平方根,反映了图像颜色的分布范围,如式所示:

【项目实战】Python基于决策树多分类模型实现水色图像的水质评价_第7张图片

式中,Si是在第i个颜色通道的二阶颜色矩,Ei是在第i个颜色通道的一阶颜色矩。 

(3)三阶颜色矩

三阶颜色矩采用的是三阶中心距的立方根,反映了图像颜色分布的对称性,如式所示:

【项目实战】Python基于决策树多分类模型实现水色图像的水质评价_第8张图片

式中,Si是在第i个颜色通道的三阶颜色矩,Ei是在第i个颜色通道的一阶颜色矩。

对切割后的图像提取其颜色矩,作为图像的颜色特征。对颜色矩的提取,需要提取每个文件名中的类别和序号,同时针对所有的图片进行同样的操作,因提取的特征的取值范围差别较大,如果直接输入模型,可能会导致模型精确度下降,因此,在建模之前需要将数据进行标准化,关键代码如下:

图像切割和特征提取

【项目实战】Python基于决策树多分类模型实现水色图像的水质评价_第9张图片

6.特征工程

6.1 建立特征数据和标签数据

【项目实战】Python基于决策树多分类模型实现水色图像的水质评价_第10张图片

 其中1~9均为输入的特征,10为标签。关键代码如下:

6.2数据集拆分

对标准化后的样本进行抽样,抽取80%作为训练样本,剩下的20%作为测试样本,用于水质评价检验,使用决策树算法构建水质评价模型,关键代码如下:

7.构建决策树模型

本项目采用决策树作为水质评价分类模型。模型的输入包括两部分:一部分是训练样本的输入,另一部分是建模参数的输入。各参数说明如表所示:

【项目实战】Python基于决策树多分类模型实现水色图像的水质评价_第11张图片

 关键代码如下:

【项目实战】Python基于决策树多分类模型实现水色图像的水质评价_第12张图片

8.模型评价

取所有测试样本为输入样本,代入已构建好的决策树模型,得到输出结果,即预测的水质类型。

8.1评估指标及结果

评估指标主要包括准确率、查准率、查全率、F1分值等等。

【项目实战】Python基于决策树多分类模型实现水色图像的水质评价_第13张图片

从上表可以看出,准确率为71%  F1分值为73%,决策树分类模型良好,由于图片数据比较少,效果没有达到非常好。

关键代码如下:

8.2混淆矩阵

决策树分类模型混淆矩阵:

 【项目实战】Python基于决策树多分类模型实现水色图像的水质评价_第14张图片

从上图可以看到,实际值为1 预测为1的有5个;实际值为2  预测为2的有8个。

水质评价的混淆矩阵见下表,分类准确率为71%,说明水质评价模型对于新增的水色图像的分类效果较好,可将模型应用到水质自动评价系统,实现水质评价。

水质评价的混淆矩阵

【项目实战】Python基于决策树多分类模型实现水色图像的水质评价_第15张图片

8.3分类报告

决策树分类模型分类报告:

【项目实战】Python基于决策树多分类模型实现水色图像的水质评价_第16张图片

 从上图可以看到,分类类型为1的F1分值为0.48;分类类型为2的F1分值为0.76;分类类型为3的F1分值为0.77;分类类型为4的F1分值为0.89;整个模型的准确率为0.71。

9.结论与展望

综上所述,本文采用了决策树分类模型,最终证明了我们提出的模型效果良好。准确率达到了71%,可用于日常生活中进行建模预测,以提高价值。说明水质评价模型对于新增的水色图像的分类效果较好,可将模型应用到水质自动评价系统,实现水质评价。

本次机器学习项目实战所需的资料,项目资源如下:

项目说明:
链接:https://pan.baidu.com/s/1dW3S1a6KGdUHK90W-lmA4w 
提取码:bcbp

网盘如果失效,可以添加博主微信:zy10178083

你可能感兴趣的:(机器学习,python,python,决策树,分类算法,DecisionTree,机器学习)