我目前正在尝试对文本进行分类 . 我的数据集太大了,我建议here,我需要使用稀疏矩阵 . 我现在的问题是,将元素添加到稀疏矩阵的正确方法是什么?比方说,我有一个矩阵X,这是我的输入 .
X = np.random.randint(2, size=(6, 100))
现在这个矩阵X看起来像ndarray(或类似的东西)的ndarray .
如果我做
X2 = csr_matrix(X)
我有稀疏矩阵,但是如何在sparce矩阵中添加另一个元素?例如,这个密集元素:[1,0,0,0,1,1,1,0,...,0,1,0]到稀疏向量,如何将其添加到稀疏输入矩阵?
(顺便说一句,我是python的新手,scipy,numpy,scikit ......一切)
1 回答
Scikit-learn有一个很棒的文档,你可以在尝试自己创建之前阅读一些很棒的教程 . This一个是第一个阅读它解释如何分类文本,一步一步,this one是使用稀疏表示的文本分类的详细示例 .
在this部分,要特别注意他们谈论稀疏表示的部分 . 一般来说,如果你想使用带有线性内核的svm和大量的数据,LinearSVC(基于Liblinear)会更好 .
关于你的问题 - 我必须将csr_matrix转换为
coo_matrix
,它是另一种稀疏矩阵:Is there an efficient way of concatenating scipy.sparse matrices? .EDIT: 当连接两个矩阵(或矩阵和一个1个二维矩阵的数组)时,一般的想法是连接
X1.data
和X2.data
并操纵它们的indices
和indptr
(或者coo_matrix
的row
和col
)指向正确的地方 . 一些稀疏表示对于特定操作更好,而对于其他操作更复杂,您应该阅读csr_matrix
并查看这是否是最佳表示 . 但我真的恳请你从我上面发布的那些教程开始 .