我想训练我的数据集,它有 13159 个实例,并使用词袋特征矩阵,特征数量为 18800
当我不使用 10 倍 cv 时,我的代码运行良好,甚至训练整个数据集。 但是当我使用 10 倍 cv 索引时,它给了我内存错误
<class 'numpy.ndarray'>
train_data = np.array(data_content[train_index])MemoryError
我不认为这个数据集太大而无法破坏内存空间。我的笔记本电脑是 4GB RAM 和 64 位
'''Cross-Validation'''
skf = cross_validation.StratifiedKFold(data_label, n_folds=10, shuffle=True, random_state=None)
'''For each fold, Do the classification'''
for train_index, test_index in skf:
print(type(data_content))
print (type(data_label))
train_data = np.array(data_content[train_index])
train_label = np.array(data_label[train_index])
test_data = np.array(data_content[test_index])
test_label = np.array(data_label[test_index])
最佳答案
删除变量,然后在每次迭代结束时进行垃圾收集,每次都对我有用。如果对任何人有帮助,请将其留在这里。
del train_data
del train_label
del test_data
del test_label
gc.collect()
关于python - kfold CV 的 sklearn 内存错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33476936/