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

背景信息

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

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

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

代码实现

# 引入所需包
import numpy as np
import 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-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
trainingData, testData=loadData(iris_file,ratio) ##加载文件,按一定比率切分为训练样本和测试样本
trainingCharacter,trainingLabel=splitData(trainingData)  #将训练样本切分为数据和标签两个数组
testCharacter,testLabel=splitData(testData)  #将测试样本切分为数据和标签两个数组



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汀桦坞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值