首页 文章

SciPy NumPy和SciKit-learn,创建一个稀疏矩阵

提问于
浏览
5

我目前正在尝试对文本进行分类 . 我的数据集太大了,我建议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 回答

  • 13

    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.dataX2.data 并操纵它们的 indicesindptr (或者 coo_matrixrowcol )指向正确的地方 . 一些稀疏表示对于特定操作更好,而对于其他操作更复杂,您应该阅读 csr_matrix 并查看这是否是最佳表示 . 但我真的恳请你从我上面发布的那些教程开始 .

相关问题