【发布时间】:2015-10-06 16:23:12
【问题描述】:
我有一个大型 numpy 数组,当我运行 scikit learn 的 train_test_split 将数组拆分为训练和测试数据时,我总是遇到内存错误。什么是拆分为训练和测试的内存效率更高的方法,为什么 train_test_split 会导致这种情况?
以下代码导致内存错误并导致崩溃
import numpy as np
from sklearn.cross_validation import train_test_split
X = np.random.random((10000,70000))
Y = np.random.random((10000,))
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.33, random_state=42)
【问题讨论】:
-
在 64G 机器上为我工作,在 8G 笔记本电脑上出现大问题(如果我没有杀死它可能会导致内存错误)。问题很可能是训练/测试拆分不可避免地会产生数据副本,因为它使用花哨的索引,而在没有随机化的情况下,例如KFold,这可以避免(但您必须自己编写拆分代码,因为 sklearn 的 KFold 也会复制)。如果您需要随机化,您可以考虑先对数据进行就地改组。
标签: python arrays scikit-learn