SciPy NumPy和SciKit学习,创建一个稀疏矩阵



我目前正在尝试对文本进行分类。我的数据集太大了,正如这里所建议的,我需要使用稀疏矩阵。我现在的问题是,在稀疏矩阵中添加元素的正确方法是什么?举个例子,我有一个矩阵X,它是我的输入。

X = np.random.randint(2, size=(6, 100))

现在这个矩阵X看起来像ndarray的ndarray(或者类似的东西)。

如果我做

X2 = csr_matrix(X)

我有一个稀疏矩阵,但是我怎么能在稀疏矩阵中添加另一个元素呢?例如,这个稠密元素:[1,0,0,1,1,0,…,0,1,0]到稀疏向量,我如何将其添加到稀疏输入矩阵?

(顺便说一句,我对python、scipy、numpy、scikit……一切都很陌生)

Scikit learn有一个很棒的文档,其中有很棒的教程,在尝试自己发明之前,你真的应该阅读这些教程。这是第一个阅读它的人,它解释了如何逐步对文本进行分类,这是一个使用稀疏表示的文本分类的详细示例。

在本节中,要特别注意他们谈论稀疏表示的部分。一般来说,如果你想使用线性核的svm,并且你需要大量的数据,那么LinearSVC(基于Liblinear)更好。

关于你的问题-我相信有很多方法可以连接两个稀疏矩阵(顺便说一句,这是你应该在谷歌上寻找的其他方法),这里有一种,但你必须从csr_matrix转换为coo_matrix,这是另一种类型的稀疏矩阵:有没有一种有效的方法连接scipy.sparse矩阵?。

EDIT:当连接两个矩阵(或一个矩阵和一个一维矩阵的数组)时,通常的想法是连接X1.dataX2.data,并操纵它们的indicesindptr(或在coo_matrix的情况下为rowcol)指向正确的位置。有些稀疏表示对于特定操作更好,而对于其他操作更复杂,您应该阅读csr_matrix,看看这是否是最佳表示。但我真的敦促你从我上面发布的教程开始。

相关内容

  • 没有找到相关文章

最新更新