有谁知道如何在 python 中对稀疏矩阵执行 svd 操作?scipy.sparse.linalg 中似乎没有提供这样的功能。
问问题
8868 次
4 回答
4
听起来sparsesvd就是你要找的东西!SVDLIBC 有效地包装在 Python 中(在 RAM 中没有额外的数据副本)。
只需运行“easy_install sparsesvd”即可安装。
于 2010-10-22T19:03:07.650 回答
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 回答
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 回答