1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Python机器学习数据预处理:读取txt数据文件并切分为训练和测试数据集

Python机器学习数据预处理:读取txt数据文件并切分为训练和测试数据集

时间:2020-12-02 01:24:54

相关推荐

Python机器学习数据预处理:读取txt数据文件并切分为训练和测试数据集

背景信息

在使用Python进行机器学习时,经常需要自己完成数据的预处理,本节主要实现对txt文本数据的读取,该文本满足如下要求:

每行为一条样本数据,包括特征值与标签,标签在最后样本数据的特征值之间以及标签之间使用,分割文本末尾无空行(在人为编辑过程中很容易在末尾加入空行,要检查并删除)

本文先给出实现代码,最后以Iris数据集为例说明如何使用。

代码实现

# 引入所需包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)

使用样例

使用的数据集:Iris数据集,样例如下所示:

4.8,3.0,1.4,0.3,Iris-setosa5.1,3.8,1.6,0.2,Iris-setosa4.6,3.2,1.4,0.2,Iris-setosa5.3,3.7,1.5,0.2,Iris-setosa5.0,3.3,1.4,0.2,Iris-setosa7.0,3.2,4.7,1.4,Iris-versicolor6.4,3.2,4.5,1.5,Iris-versicolor6.9,3.1,4.9,1.5,Iris-versicolor5.5,2.3,4.0,1.3,Iris-versicolor6.5,2.8,4.6,1.5,Iris-versicolor

测试代码

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

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