600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Python读取IRIS数据集并转换为PaddlePaddle中使用的reader

Python读取IRIS数据集并转换为PaddlePaddle中使用的reader

时间:2022-05-11 13:39:16

相关推荐

Python读取IRIS数据集并转换为PaddlePaddle中使用的reader

背景信息

IRIS数据集是机器学习领域常用的一种数据集,但是PaddlePaddle预置数据集中并未包含,因此本文实现了使用Python读取下载的iris数据集文本文件并将其转换为reader的代码。

代码实现

# 引入所需包import numpy as npimport random

#读取数据函数,输入为数据文件名和训练、测试切分比率,返回为list类型的训练数据集和测试数据集def loadData(fileName,ratio): trainingData=[]testData=[]with open(fileName) as txtData:lines=txtData.readlines()for line in lines:lineData=line.strip().split(',') #去除空白和逗号“,”if random.random()<ratio: #数据集分割比例trainingData.append(lineData) #训练数据集列表else:testData.append(lineData) #测试数据集列表return trainingData,testData#输入为list类型数据,分割为特征和标签两部分,返回为np.narray类型的特征数组和标签数组def splitData(dataSet): character=[]label=[]for i in range(len(dataSet)):character.append([float(tk) for tk in dataSet[i][:-1]])label.append(dataSet[i][-1])return np.array(character),np.array(label)

# 读取数据数组和标签数组,并将二者组合为PaddlePaddle中使用的readerdef paddle_reader(dataCharacter,dataLabel):def reader(): for i in xrange(len(dataLabel)):yield dataCharacter[i,:], int(dataLabel[i])return reader

使用样例

# 进行数据预处理工作iris_file='/book/iris.data'ratio=0.7trainingData, testData=loadData(iris_file,ratio) ##加载文件,按一定比率切分为训练样本和测试样本a1=random.shuffle(trainingData)trainingCharacter,trainingLabel=splitData(trainingData) #将训练样本切分为数据和标签两个数组testCharacter,testLabel=splitData(testData) #将测试样本切分为数据和标签两个数组

# 实现readertrain_reader=paddle_reader(trainingCharacter,trainingLabel)test_reader=paddle_reader(testCharacter,testLabel)

# 使用readertrainer.train(reader=paddle.batch(paddle.reader.shuffle(train_reader, buf_size=128), #注意:使用PaddlePaddle自带数据集时paddle.dataset.mnist.train()是需要括号的,但使用上面实现的reader不需要括号batch_size=16),event_handler=event_handler_plot,num_passes=20)

说明:在PaddlePaddle中reader是一个函数,上面实现的train_reader本身就是函数,所以不需要再加()了,若加了(),类型就是Generator了。其实paddle.dataset.mnist.train()和上面自定义的paddle_reader()是一个层级的概念。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。