Python数据挖掘018-基于水色进行水质评价

本案例是基于水质图像来对水质进行分类,所以是图像分类问题,一般的,可以直接构建CNN深度模型来分析,效果会非常好,但此处我们首先从图像中提取特征,然后用SVM分类器来分类。

水色分类的类别分别为:


Python数据挖掘018-基于水色进行水质评价_第1张图片
image.png

整个分析流程为:

Python数据挖掘018-基于水色进行水质评价_第2张图片
image.png

1. 准备数据集

数据的收集过程为:拍摄水样,采集水样图片,从图像中提取出关键特征指标。所以此处的图像特征提取是图像识别或分类的关键步骤。

图像特征有非常多,比如颜色特征,问你特征,形状特征,空间关系特征等,其中颜色特征处理中常用直方图法,颜色矩方法等。

其中颜色矩包含各个颜色通道的一阶矩,二阶矩,三阶矩,对于RGB图像,每个通道有三个矩,故而有9个分量。

本案例采用颜色矩的方法来对图像进行分类。

1.1 图像切割

采集的图像中包含有容器等其他无关信息,所以要对图像进行切割,得到最终将的101x101的小图像。

1.2 特征提取

分别计算小图像中每个像素点的每个通道的一阶颜色矩,二阶颜色矩,三阶颜色矩。
最终得到数据集。

最终得到的数据集为:


Python数据挖掘018-基于水色进行水质评价_第3张图片
image.png

2. 模型构建

data=pd.read_csv("E:\PyProjects\DataSet\PyMining\Data\chapter9\demo\data\moment.csv",encoding='gbk')
#### 可以发现,所有的特征值大约都在0-1之间,但是后面的二阶矩,三阶矩都太小,相对于一阶矩来说整体范围也很窄,所以此处需要将其扩大
data2=data.copy()
data2.iloc[:,5:]=data2.iloc[:,5:]*20
from sklearn.model_selection import train_test_split
train,test=train_test_split(data2,test_size=0.2)
print(train.shape)
print(test.shape)
#导入模型相关的函数,建立并且训练模型
from sklearn import svm
model = svm.SVC(C=100,class_weight='balanced')
model.fit(trainX, trainy)
metrics.confusion_matrix(testy, model.predict(testX)) #测试样本的混淆矩阵
Python数据挖掘018-基于水色进行水质评价_第4张图片
image.png

参考资料:

《Python数据分析和挖掘实战》张良均等

你可能感兴趣的:(Python数据挖掘018-基于水色进行水质评价)