6

Pythonで疎行列に対してsvd操作を実行する方法を知っている人はいますか? scipy.sparse.linalg にはそのような機能は提供されていないようです。

4

4 に答える 4

4

探しているのはsparsesvdのようですね! SVDLIBC は Python で効率的にラップされています (RAM に余分なデータ コピーは作成されません)。

「easy_install sparsesvd」を実行するだけでインストールできます。

于 2010-10-22T19:03:07.650 に答える
3

python-recsysライブラリを使用した簡単な例:

from recsys.algorithm.factorize import SVD

svd = SVD()
svd.load_data(dataset)
svd.compute(k=100, mean_center=True)

ITEMID1 = 1  # Toy Story
svd.similar(ITEMID1)
# Returns:
# [(1,    1.0),                 # Toy Story
#  (3114, 0.87060391051018071), # Toy Story 2
#  (2355, 0.67706936677315799), # A bug's life
#  (588,  0.5807351496754426),  # Aladdin
#  (595,  0.46031829709743477), # Beauty and the Beast
#  (1907, 0.44589398718134365), # Mulan
#  (364,  0.42908159895574161), # The Lion King
#  (2081, 0.42566581277820803), # The Little Mermaid
#  (3396, 0.42474056361935913), # The Muppet Movie
#  (2761, 0.40439361857585354)] # The Iron Giant

ITEMID2 = 2355 # A bug's life
svd.similarity(ITEMID1, ITEMID2)
# 0.67706936677315799
于 2012-04-10T19:12:53.180 に答える
3

これを実現するには、 Divisiライブラリを使用できます。ホームページから:

  • Python で記述されたライブラリであり、C ライブラリ (SVDLIBC) を使用して Lanczos アルゴリズムを使用してスパース SVD 操作を実行します。他の数学的計算は NumPy によって実行されます。
于 2010-07-13T23:14:11.157 に答える
3

scipy.sparse.linalg.svdを試すことができますが、ドキュメントはまだ進行中の作業であり、かなり簡潔です。

于 2010-09-30T21:02:43.613 に答える