我想训练我的数据集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])
答案 0 :(得分:0)
使用nohup激活你的代码并检查你的cpu利用率。在Linux中,可以使用
完成htop
我的猜测是,你的cpu将被100%利用。
要解决此问题,您可以减少功能或退出核心功能提取方法。我更喜欢sklearn中的这些:
- Out of core feature extraction
还会有更多。
答案 1 :(得分:-1)
在每个循环结束时,我添加了以下代码,没有内存错误:
train_data = []
train_label = []
test_data = []
test_label = []