处理大型数据集,就好像它是一个迭代的。
lazy-dataset的Python项目详细描述
懒数据集
lazy_dataset是处理不适合内存的大型数据集的助手。 它允许定义延迟应用的转换, (例如,从硬盘读取数据的映射函数)。当有人遍历数据集时 应用转换。
支持的转换:
dataset.map(map_fn)
:将函数map_fn
应用于每个示例(builtins.map)dataset[2]
:在索引2
处获取示例。dataset['example_id']
获取具有示例ID的示例'example_id'
。dataset[10:20]
:获取一个子数据集,该子数据集只包含切片10到20中的示例。dataset.filter(filter_fn, lazy=True)
删除filter_fn(example)
为false(builtins.filter)的示例。dataset.concatenate(*others)
:连接两个或多个数据集(numpy.concatenate)dataset.shuffle(reshuffle=False)
:洗牌数据集。当reshuffle
是True
时,每次在数据上迭代时,它都会洗牌。dataset.tile(reps, shuffle=False)
:重复数据集reps
次并连接它(numpy.tile)dataset.groupby(group_fn)
:将示例分组在一起。与itertools.groupby
相反,排序是不存在的,就像熊猫(itertools.groupby,pandas.DataFrame.groupby)dataset.sort(key_fn, sort_fn=sorted)
:根据值对示例进行排序key_fn(example)
(list.sort)dataset.batch(batch_size, drop_last=False)
:将批次batch_size
示例作为列表一起列出。通常后跟一个映射(tensorflow.data.Dataset.batch)dataset.random_choice()
:获取一个随机示例(numpy.random.choice)- 。
>>>fromIPython.lib.prettyimportpprint>>>importlazy_dataset>>>examples={...'example_id_1':{...'observation':[1,2,3],...'label':1,...},...'example_id_2':{...'observation':[4,5,6],...'label':2,...},...'example_id_3':{...'observation':[7,8,9],...'label':3,...},...}>>>forexample_id,exampleinexamples.items():...example['example_id']=example_id>>>ds=lazy_dataset.new(examples)>>>dsDictDataset(len=3)MapDataset(_pickle.loads)>>>ds.keys()('example_id_1','example_id_2','example_id_3')>>>forexampleinds:...print(example){'observation':[1,2,3],'label':1,'example_id':'example_id_1'}{'observation':[4,5,6],'label':2,'example_id':'example_id_2'}{'observation':[7,8,9],'label':3,'example_id':'example_id_3'}>>>deftransform(example):...example['label']*=10...returnexample>>>ds=ds.map(transform)>>>forexampleinds:...print(example){'observation':[1,2,3],'label':10,'example_id':'example_id_1'}{'observation':[4,5,6],'label':20,'example_id':'example_id_2'}{'observation':[7,8,9],'label':30,'example_id':'example_id_3'}>>>ds=ds.filter(lambdaexample:example['label']>15)>>>forexampleinds:...print(example){'observation':[4,5,6],'label':20,'example_id':'example_id_2'}{'observation':[7,8,9],'label':30,'example_id':'example_id_3'}>>>ds['example_id_2']{'observation':[4,5,6],'label':20,'example_id':'example_id_2'}>>>dsDictDataset(len=3)MapDataset(_pickle.loads)MapDataset(<functiontransformat0x7ff74efb6620>)FilterDataset(<function<lambda>at0x7ff74efb67b8>)
安装
如果您只想使用pip,请直接安装:
pip install lazy_dataset
如果要进行更改或需要最新版本:请克隆存储库并按如下方式安装:
git clone https://github.com/fgnt/lazy_dataset.git
cd lazy_dataset
pip install --editable .