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

Oli*_*s_j 5 python numpy matrix scipy scikit-learn

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

X = np.random.randint(2, size=(6, 100))
Run Code Online (Sandbox Code Playgroud)

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

如果我做

X2 = csr_matrix(X)
Run Code Online (Sandbox Code Playgroud)

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

(顺便说一句,我是python的新手,scipy,numpy,scikit ......一切)

zen*_*poy 13

Scikit学习有很大的文件,与你真正伟大的教程应该尝试自己发明之前阅读.是第一个阅读它解释如何分类文本,一步一步,是一个使用稀疏表示的文本分类的详细示例.

节中,要特别注意他们谈论稀疏表示的部分.一般来说,如果你想使用带有线性内核的svm和大量的数据,LinearSVC(基于Liblinear)会更好.

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

编辑:当连接两个矩阵(或矩阵和阵列这是一个1点dimenesional矩阵)的总体思路是连接X1.dataX2.data和操纵其indicesindptrS(或rowcol在以下情况下coo_matrix),使其指向正确的位置.一些稀疏表示对于特定操作更好,而对于其他操作更复杂,您应该阅读csr_matrix并查看这是否是最佳表示.但我真的恳请你从我上面发布的那些教程开始.