pythonsvd内存不足_python – 有没有办法防止numpy.linalg.svd内存不足?

如果你的情况是MxN 1000000×3 matrixnumpy.linalg.svd不需要M == N.实际上,这正是SVD可以用来计算秩和伪逆等事物的地方.诸如linalg.inv之类的方法需要一个square(和满秩)矩阵来获得定义的结果.

@Saullo Castro是对的. full_matrices = False可以变得难以处理,因为Ux矩阵不是1Mx1M元素,而是1Mx3,这是一个巨大的节省.我不确定哪种减少的SVD算法numpy使用(我认为它可能是Compact SVD,或者很薄):3个广泛使用的简短描述在维基百科上:http://en.wikipedia.org/wiki/Singular_value_decomposition在Reduced SVDs部分.它们都围绕着减少完整U矩阵的计算,减少形式,这对于一些甚至许多问题已经足够了.当numberObservations>> numberFeatures时,节省最多

关于你是否得到相同的结果.简短的回答可能是肯定的,具体取决于您将对SVD结果做些什么.例如,您将获得与原始格式相同的矩阵(缩放容差级别)和缩小格式,如下面的代码所示.请注意,在大写的情况下,U的大小是numberObservations x numberObservations,而在full_matrices = False中,U的大小是numberObservations x numberFeatures

此代码改编自numpy.linalg.svd doc,允许用户试验任意行/列,选择奇异值.

可以总是将U矩阵的大小减小到M×min(M,N).根据您的数据结构和存在的噪音,可能会进一步减少.仅仅因为numpy.isclose为false并不意味着计算出的SV对所有上下文都不好.您可以使用mostSignificantSingularValues变量对此进行试验,该变量取自完整SVD的顶部SV.

numberObservations = 900

numberFeatu

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值