赞
踩
有时在进行进行神经网络训练时,需要自己导入本地的csv数据,此篇文章介绍如何导入数据,读取数据,设置训练集和测试集的大小,以及获取样本的features和tags
首先使用panda导入数据。
import pandas as pd
dataset = pd.read_csv('dataset.csv')
一般的csv数据第一行是表头
使用
dataset = dataset.values
就可以将数据转化成一个去掉表头的标准numpy二维数组。
然后就可以设置训练集和测试集的长度
train_size = int(len(dataset) * 0.8) # 这里按照8:2进行训练和测试
test_size = len(dataset) - train_size
由于源数据可能标签集中,如果顺序提取训练集或者测试集的话可能导致比如训练集标签大多数是1,测试集标签基本都是0的情况,所以进行分割数据时可以打乱数据后再按比例分割
可以使用torch中提供的data方法
import torch.utils.data as Data
train_dataset, test_dataset = Data.random_split(dataset, [train_size, test_size])
训练集和测试集分割完成,注意此时的数据类型还是numpy类型,可以使用b = torch.from_numpy(a)
直接将numpy数据转化为torch数据类型。也可以使用DataLoader方法进行批量读取数据
from torch.utils.data import DataLoader
train_loader = DataLoader(train_dataset, batch_size=64, shuffle=False)
test_loader = DataLoader(test_dataset, batch_size=64, shuffle=False)
此处我设置的每次读取64个数据,即batch_size=64,因为之前已经使用random_split打乱数据了,所以此处的shuffle就设置为false,即不随机读取。
好了,截至目前已经成功搞好训练集train_loader和测试集test_loader。在将这些数据带入到我们设置的网络中时,可能需要分割样本的特征features以及样本的标签tag,一般标签是在一行数据的最后一个位置。
遍历数据集时,
for data in train_loader:
featurs = data[:, :-1]
tags = data[:, -1:]
一个维度一个逗号,如果使用该维度的全部,比如在此处是索取所有的行,就加一个冒号即可。
此处提取第一列到最后倒数第二列,此处-1即是最后一列, :-1不包含最后一列,就像2:6表示[2, 6)
如果提取最后一列,就可以使用上面提取tags的用法,这样就不用在源数据上数有多少列,也不容易出错。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。