导入本地的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])
此处我设置的每次读取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的用法,这样就不用在源数据上数有多少列,也不容易出错。