kfold CV的sklearn内存错误

时间:2015-11-02 11:50:21

标签: 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])

2 个答案:

答案 0 :(得分:0)

使用nohup激活你的代码并检查你的cpu利用率。在Linux中,可以使用

完成
htop

我的猜测是,你的cpu将被100%利用。

要解决此问题,您可以减少功能或退出核心功能提取方法。我更喜欢sklearn中的这些:

- PCA

- L1 Regularization

- FeatutreVectorizer

- Out of core feature extraction

还会有更多。

答案 1 :(得分:-1)

在每个循环结束时,我添加了以下代码,没有内存错误:

train_data = []
train_label = []
test_data = []
test_label = []