python - kfold CV 的 sklearn 内存错误

标签 python scikit-learn cross-validation

我想训练我的数据集,它有 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/

相关文章:

python - 如何使用 Python 制作唯一的短 URL?

python - Gmail 推送通知不会停止

python - 隔离林 : Categorical data

python - 属性错误: module 'sklearn.metrics._dist_metrics' has no attribute 'DatasetsPair'

python - 如何在同一折叠上使用多个分类器运行 scikit 的交叉验证

python - 使用网格搜索的交叉验证返回比默认更差的结果

python - Twistd 套接字所有权

python - 用逗号分割字符串,这样每个句子都是一个单独的字符串

python - 属性错误: 'DataFrame' object has no attribute 'target_names' - scikit

python - 与 Keras 的交叉验证如何适合?