Numpy / scipy加载巨大的稀疏矩阵用于scikit-learn

时间:2015-10-07 14:04:43

标签: python-2.7 numpy scipy scikit-learn

我在csv文件中有40,000行和5000列布尔值(1和0)的数据集。我无法将其加载到numpy中,因为它会抛出MemoryError

我尝试将其加载到稀疏矩阵中,如此问题所述:csv to sparse matrix in python

但是这种格式不能用于scikit-learn。有没有办法在csv中读取稀疏矩阵,实际上scikit-learn可以使用它?

直接在矩阵中加载到numpy是通过:

完成的
matrix = np.loadtxt('data.csv', skiprows=1, delimiter=',')

1 个答案:

答案 0 :(得分:1)

您提供的问题中的答案产生了一个lil_matrix。根据scipy docs here,您可以调用matrix.tocsr()将其转换为csr_matrix。这应该适用于允许使用稀疏矩阵的sklearn例程。将数据直接读入csr_matrix会更优雅,但对于布尔值的数据集,这应该可以正常工作。