7

私は現在、テキストを分類しようとしています。データセットが大きすぎるため、ここで提案されているように、スパース マトリックスを使用する必要があります。私の質問は今、疎行列に要素を追加する正しい方法は何ですか? たとえば、入力である行列 X があるとします。

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

現在、この行列 X は ndarray の ndarray (またはそのようなもの) のように見えます。

私が行った場合

X2 = csr_matrix(X)

疎行列がありますが、疎行列に別の要素を追加するにはどうすればよいですか? たとえば、この密な要素: [1,0,0,0,1,1,1,0,...,0,1,0] をスパース ベクトルに追加するにはどうすればよいですか?

(ところで、私はpython、scipy、numpy、scikit ...すべてで非常に新しいです)

4

1 に答える 1

14

scikit-learn には素晴らしいドキュメントがあり、自分で発明しようとする前に読むべき素晴らしいチュートリアルがあります。これは、テキストを段階的に分類する方法を説明する最初のものであり、これはスパース表現を使用したテキスト分類の詳細な例です。

このセクションで、スパース表現について話している部分に特に注意してください。一般に、線形カーネルで svm を使用し、大量のデータを使用する場合は、LinearSVC (Liblinear ベース) の方が適しています。

あなたの質問に関して-2つの疎行列を連結する方法はたくさんあると思います(ところで、これは他の方法でグーグルで探すべきものです)、ここに1つがありますが、csr_matrixからに変換する必要がありますcoo_matrixこれはスパース行列の別のタイプです: scipy.sparse 行列を連結する効率的な方法はありますか? .

編集: 2 つの行列 (または行列と 1 次元行列である配列) を連結する場合、一般的な考え方は、それらの and を連結しX1.dataX2.data操作し(または の場合はand )、正しい場所を指すようにすることです。一部のスパース表現は、特定の操作には適していますが、他の操作にはより複雑です。これについて読んで、これが最適な表現であるかどうかを確認する必要があります。ただし、上記で投稿したチュートリアルから始めることを強くお勧めします。indicesindptrrowcolcoo_matrixcsr_matrix

于 2012-12-06T11:14:09.073 に答える