import pandas as pd
from pandas import DataFrame
import numpy as np
# 读取类型1的表格中的颜色矩数据
d1 = pd.read_csv('type1.csv',encoding="gbk")
# 读取类型2的表格中的颜色矩数据
d2 = pd.read_csv('type2.csv',encoding="gbk")
# 读取类型3的表格中的颜色矩数据
d3 = pd.read_csv('type3.csv',encoding="gbk")
# 读取类型4的表格中的颜色矩数据
d4 = pd.read_csv('type4.csv',encoding="gbk")
# 读取类型5的表格中的颜色矩数据
d5 = pd.read_csv('type5.csv',encoding="gbk")
ALLDATA = pd.concat([d1,d2,d3,d4,d5],ignore_index=True) # 做表格连接
ALLDATA.to_excel('ALLDATA.xlsx',index=False) # 存储数据
[/code]
说明:求颜色矩之前需要将各个图片进行切割,但是,观察切割后的图片可以发现,有些图片的初始状态不在原图中央,使得切割后的图片还有较多白边,因此,笔者建议,若要想提高分类的准确度,后续可以尝试先手动将原始图片进行大致的切割,使得接下来要统一切割的时候,切到的图片都是能反映事实水质的图片。
# 3 模型构建
[/code]
```code
inputfile = 'moment.csv'
data = pd.read_csv(inputfile, encoding='gbk')
# 注意,此处不能用shuffle
sampler = np.random.permutation(len(data))
d = data.take(sampler).as_matrix()
data_train = d[:int(0.8*len(data)),:] #选取前80%做训练集
data_test = d[int(0.8*len(data)):,:] #选取后20%做测试集
[/code]
```code
# 构建支持向量机模型代码
x_train = data_train[:, 2:]*30 #由于特征的取值均在0-1之间,直接使用会使得区分度较小,因此此处进行 放大特征
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('svcmodel.model','wb'))# model = pickle.load(open('svcmodel.model','rb'))
cm_train = metrics.confusion_matrix(y_train, model.predict(x_train)) # 训练样本的混淆矩阵
cm_test = metrics.confusion_matrix(y_test, model.predict(x_test)) # 测试样本的混淆矩阵
df1 = DataFrame(cm_train, index = range(1,6), columns=range(1,6))
df2 = DataFrame(cm_test, index = range(1,6), columns=range(1,6))
df1.to_excel('trainPre.xlsx')
df2.to_excel('testPre.xlsx')
print model.score(x_train,y_train) # 评价模型训练的准确率
print model.score(x_test,y_test) # 评价模型测试的准确率
[/code]
**备注:本章节完整代码详见** **[ 点击打开链接
](https://github.com/clover95/DataAnalysisbyPython/tree/master/chapter9) **
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210608151750993.gif)