繁体   English   中英

python中的稀疏矩阵svd

[英]sparse matrix svd in python

有谁知道如何在python中的稀疏矩阵上执行svd操作? 似乎scipy.sparse.linalg中没有提供此类功能。

听起来像sparsesvd是你正在寻找的! SVDLIBC高效地包装在Python中(RAM中没有额外的数据副本)。

只需运行“easy_install sparsesvd”即可安装。

您可以使用Divisi库来完成此任务; 从主页:

  • 它是一个用Python编写的库,使用C库(SVDLIBC)使用Lanczos算法执行稀疏SVD操作。 其他数学计算由NumPy执行。

您可以尝试使用scipy.sparse.linalg.svd ,尽管文档仍在进行中,因此非常简洁。

使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM