Chapter 9 基于水色图像的水质评价

一、样本数据采集

从采集到的原始水样图像中进行选择性抽取和实时的抽取,形成建模数据和增量数据。

二、数据预处理

2.1 图像切割

用其他编程软件进行编程,切割水样图像中央101*101像素的图像。若原始图像大小为M*N,则截取宽从宽从(M/2-50)到(M/2+50),长度从 (M/2-50) 到 (M/2+50) 个像素点的子图像。

2.2 颜色矩特征提取

构造出特征:

  • RGB各颜色的一阶颜色矩
  • RGB各颜色的二阶颜色矩
  • RGB各颜色的三阶颜色矩

三、构建专家样本

根据已完成预处理的建模数据,由有经验的专家对水样图像据经验进行分类,构建专家样本。

四、模型构建

4.1 建模

#-*- coding: utf-8 -*-
import pandas as pd

inputfile = '../data/moment.csv' #数据文件
outputfile1 = '../tmp/cm_train.xls' #训练样本混淆矩阵保存路径
outputfile2 = '../tmp/cm_test.xls' #测试样本混淆矩阵保存路径
data = pd.read_csv(inputfile, encoding = 'gbk') #读取数据,指定编码为gbk
data = data.as_matrix()

from numpy.random import shuffle #引入随机函数
shuffle(data) #随机打乱数据
data_train = data[:int(0.8*len(data)), :] #选取前80%为训练数据
data_test = data[int(0.8*len(data)):, :] #选取前20%为测试数据

#构造特征和标签
x_train = data_train[:, 2:]*30
y_train = data_train[:, 0].astype(int)
x_test = data_test[:, 2:]*30
y_test = data_test[:, 0].astype(int)

#导入模型相关的函数,建立并且训练模型
from sklearn import svm
model = svm.SVC()
model.fit(x_train, y_train)
import pickle
pickle.dump(model, open('../tmp/svm.model', 'wb'))
#最后一句保存模型,以后可以通过下面语句重新加载模型:
#model = pickle.load(open('../tmp/svm.model', 'rb'))

#导入输出相关的库,生成混淆矩阵
from sklearn import metrics
cm_train = metrics.confusion_matrix(y_train, model.predict(x_train)) #训练样本的混淆矩阵
cm_test = metrics.confusion_matrix(y_test, model.predict(x_test)) #测试样本的混淆矩阵

#保存结果
pd.DataFrame(cm_train, index = range(1, 6), columns = range(1, 6)).to_excel(outputfile1)
pd.DataFrame(cm_test, index = range(1, 6), columns = range(1, 6)).to_excel(outputfile2)

4.2 评价

# 1、训练集
from sklearn.metrics.classification import classification_report
print(classification_report(model.predict(x_train),y_train))

结果:
              precision    recall  f1-score   support

           1       0.93      1.00      0.96        38
           2       1.00      0.97      0.99        37
           3       1.00      0.93      0.96        69
           4       0.81      0.87      0.84        15
           5       0.60      1.00      0.75         3

    accuracy                           0.95       162
   macro avg       0.87      0.95      0.90       162
weighted avg       0.96      0.95      0.95       162



# 2、测试集
from sklearn.metrics.classification import classification_report
print(classification_report(model.predict(x_test),y_test))

# 结果:
              precision    recall  f1-score   support

           1       1.00      1.00      1.00        10
           2       1.00      0.80      0.89        10
           3       1.00      0.88      0.93        16
           4       0.62      1.00      0.77         5
           5       0.00      0.00      0.00         0

    accuracy                           0.90        41
   macro avg       0.72      0.73      0.72        41
weighted avg       0.95      0.90      0.92        41

评价指标的解释:

  • Support:实际为该类别的样本数

 

  • Precision:精确率指模型预测为正的样本中实际也为正的样本占被预测为正的样本的比例。
  • Recall:召回率指实际为正的样本中被预测为正的样本所占实际为正的样本的比例。
  • F1 score:是精确率和召回率的调和平均值,计算公式为:F1 = 2 * (precision * recall) / (precision + recall)

 

  • Accuracy:准确率是分类正确的样本占总样本个数的比例。
  • Macro Average:宏平均是指在计算均值时使每个类别具有相同的权重,最后结果是每个类别的指标的算术平均值。
  • Micro Average:微平均是指计算多分类指标时赋予所有类别的每个样本相同的权重,将所有样本合在一起计算各个指标。

 

五、水质评价

将模型应用到水质自动评价系统,实现水质评价。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值