在Python中实现引导程序的内存有效方式?

时间:2019-02-01 17:40:00

标签: python numpy scikit-learn

我有一个数据集已加载到内存中,并希望从中进行引导。当前,我使用sklearn {{1}}的默认实现。我使用生成器从驻留在内存中的数据集中生成引导批处理。

但是,由于每次引导迭代都会创建一个新数组,因此这会占用大量内存。是否有更有效的方法来从存储在磁盘或内存中的数据实现引导程序?

1 个答案:

答案 0 :(得分:1)

只需创建索引即可对原始功能和目标进行切片,并在每次需要引导数据集时应用这些索引。

这是使用sklearn的波士顿数据集的示例实现:

import numpy as np
from sklearn.datasets import load_boston


def get_bootstrap_indices(dataset, datasets: int):
    for _ in range(datasets):
        yield np.random.choice(np.arange(len(dataset)), size=len(dataset), replace=True)


dataset = load_boston().data
print(f"Original dataset shape: {dataset.shape}")

for indices in get_bootstrap_indices(dataset, 10):
    print(dataset[indices].shape)