基于水色图像的水质评价


需要安装mkl版本的numpy ,不然会报错

from . import _iterative 
ImportError: DLL load failed: 


#-*- 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#2表示从第2列(最左侧的列是第0列)开始取数据(注意前面打乱过数据)
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)) #训练样本的混淆矩阵
#之所以样本也需要混淆矩阵的原因是,x_train和y_train之间通过训练得到的关系,不能确保
#100%和数据集吻合,混淆矩阵用来判断通过训练集得到的模型(也就是x_train和y_train之间的函数关系)的质量好坏。显然如果质量不行就不用作后面的预测工作了
cm_test = metrics.confusion_matrix(y_test, model.predict(x_test)) #测试样本的混淆矩阵
#用训练集中得到的样本,来对x_test进行预测,看预测结果与y_test是否吻合,预测的准确程度通过混淆矩阵来判定。

#以上两句话的意图是,在训练集的训练模型比较准确的情况下,再把模型用于测试集。

#保存结果,使用了上面的cm_train和cm_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)


你可能感兴趣的:(基于水色图像的水质评价)