Python机器学习数据预处理:读取txt数据⽂件并切分为训练和
测试数据集
背景信息
在使⽤Python进⾏机器学习时,经常需要⾃⼰完成数据的预处理,本节主要实现对txt⽂本数据的读取,该⽂本满⾜如下要求:每⾏为⼀条样本数据,包括特征值与标签,标签在最后
样本数据的特征值之间以及标签之间使⽤,分割
⽂本末尾⽆空⾏(在⼈为编辑过程中很容易在末尾加⼊空⾏,要检查并删除)
本⽂先给出实现代码,最后以Iris数据集为例说明如何使⽤。
代码实现
# 引⼊所需包
import numpy as np
import random
#读取数据函数,输⼊为数据⽂件名和训练、测试切分⽐率,返回为list类型的训练数据集和测试数据集
def loadData(fileName,ratio):
trainingData=[]
testData=[]
with open(fileName) as txtData:
adlines()
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-setosa
5.1,3.8,1.6,0.2,Iris-setosa
4.6,3.2,1.4,0.2,Iris-setosa
5.3,3.7,1.5,0.2,Iris-setosa
5.0,3.3,1.4,0.2,Iris-setosa
7.0,3.2,4.7,1.4,Iris-versicolor
6.4,3.2,4.5,1.5,Iris-versicolor
6.9,3.1,4.9,1.5,Iris-versicolor
5.5,2.3,4.0,1.3,Iris-versicolor
6.5,2.8,4.6,1.5,Iris-versicolor
测试代码
iris_file='/book/iris.data'
ratio=0.7
python怎么读取txttrainingData, testData=loadData(iris_file,ratio) ##加载⽂件,按⼀定⽐率切分为训练样本和测试样本trainingCharacter,trainingLabel=splitData(trainingData) #将训练样本切分为数据和标签两个数组testCharacter,testLabel=splitData(testData) #将测试样本切分为数据和标签两个数组
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论