问题标签 [svd]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Python ValueError:操作数无法与形状一起广播
我正在做 SVD,当我尝试运行我的代码时,我收到以下错误:
ValueError:操作数无法与形状一起广播 (375, 375) (375, 500)
我正在使用尺寸为 (500, 375) 的图像
这是我的代码:
matlab - 是否可以反转svds
是否可以在matlab中反转以下内容:
java - 在使用 Jama 进行 SVD 之前转置矩阵
所以我正在使用 Jama(Java 矩阵库)来计算矩阵 A 的 SVD。问题是 Jama 仅在 A (mxn) 是 m >=n 的矩阵并且我使用 m >=n 的矩阵时才有效
我读过这可以通过做A'(转置)来解决。所以如果你有
所以基本上他们说你可以通过翻转 U 和 V 来恢复相同的答案。 D 中的奇异值保持不变。我对此感到困惑的是,看尺寸
但是如果你要做 SVD(A') 那么你会有
谁可以给我解释一下这个?
pca - 对二进制数据使用主成分分析 (PCA)
我在二进制属性上使用 PCA 来减少问题的维度(属性)。初始维度是 592,在 PCA 之后维度是 497。我之前在另一个问题中的数字属性上使用过 PCA,它设法在更大程度上减少了维度(初始维度的一半)。我相信二元属性会降低 PCA 的能力,但我不知道为什么。您能否解释一下为什么 PCA 不像在数字数据中那样好用。
谢谢你。
recommendation-engine - SVD和SVM有什么区别
我知道缩写SVM(Support Vector Machines)
,SVD(Singular Value Decomposition)
并且 SVM、SVD 都用于推荐引擎。
用外行的话来说,这两种算法有什么区别,它们将如何影响我的推荐引擎。
lapack - LAPACK 中的 DGESVD 实现了哪种算法?
我很好奇 MATLAB 中用于计算 SVD 的 DGESVD 函数。据我从 Gene H. Golub 和 Charles F. Van Loan 的“矩阵计算”中可以看出,使用了两种可能的双对角化方案——Householder Bidiagonalization 和 R-Bidiagonalization。但是,我无法从正在使用的 LAPACK 文档中确定。有人有想法么?
matlab - 在 MATLAB 中使用 SVD 压缩图像
我是 MATLAB 的新手,但正在尝试为灰度图像做一些图像压缩代码。
问题
如何使用 SVD 修剪低值特征值以重建压缩图像?
迄今为止的工作/尝试
到目前为止,我的代码是:
这使我能够成功地分解具有存储在变量 S 中的特征值的图像矩阵。
如何截断 S(即 167x301,双级)?假设我只想取前 100 个(或任何 n 个)的 167 个特征值,我该怎么做并重建压缩图像?
更新的代码/想法
这是我目前的草稿,而不是在评论部分放一堆代码。我已经能够通过手动更改 N 成功创建压缩图像,但我想做两件事:
1-显示各种压缩的图像面板(即,运行 N = 5、10、25 等的循环)
2-以某种方式计算每个图像与原始图像之间的差异(误差)并绘制它。
我对循环和输出的理解很糟糕,但这是我尝试过的:
显然有一些错误,因为我没有得到多张图片或知道如何“绘制”错误矩阵
c++ - 使用 SVD 分解的图像重建
我已经对图像执行了块 SVD 分解并存储了结果。现在,我需要根据这个结果进行重建。我发现几个例子都是用 Matlab 写的,这对我来说是个谜。我只需要可以重建图片的公式,或者用 C 语言编写的示例。矩阵 A 等于 U*S*V'。将如何查看公式,例如用于计算前五个奇异值(哪些行和列的乘积)?请提供具有类似 C 风格的索引的公式。U 和 V' 是矩阵,S 是向量(不是矩阵)。
node.js - SVD 和奇异/非奇异矩阵
我需要使用矩阵的 SVD 形式从一系列文档中提取概念。我的矩阵的形式A = [d1, d2, d3 ... dN]
是组件di
的二进制向量M
。然后 svd 分解给了我svd(A) = U x S x V'
包含S
奇异值的信息。
我使用SVDLIBC在 nodejs 中进行处理(使用我编写的一个小模块来使用它)。它似乎工作得很好,但我注意到运行时间行为中的一些非常奇怪的东西取决于我的矩阵的状态(其中 N,M 正在增长,但每个都已经超过 1000)。首先,我没有考虑提取相同的文档向量,但现在经过一些测试,看起来像添加两次文档有时会异常加快处理速度。
- 我是否必须确保 A 的每一列都是成对独立的?是否要求它们都是线性独立的?(我认为不,因为即使某些列完全相同,SVD 似乎也能很好地完成它的工作,它只会在结果分解中显示哪些列/行是无用的,因为在
U
or中有 0 个组件V
) - 现在计算我的大矩阵的 SVD 有时需要太多时间,我试图通过删除相同的列来减小它的大小,但我发现实际上添加相同的虚拟向量可以让它更快。这正常吗?发生了什么?
从逻辑上讲,我会说我希望我的矩阵包含尽可能多的信息,因此
- [A] 删除所有相同的列,在最好的情况下,也许
- [B] 删除线性相关列。
做 [A] 看起来很简单,计算成本也不高,我可以在构造时对我的向量进行散列,以检查哪些可能是相同的向量,然后花时间检查这些,但是 [A] 和 [B] 有没有好的计算技术]?
(我很感激 [A] 不必以蛮力方式检查新向量与整个过去向量的相等性,至于 [B],我不知道有什么好的方法来检查它/做它)。
添加了相关问题:关于我的第二个问题,为什么 SVD 的运行时间行为会通过添加一个类似的列而发生如此巨大的变化?这是正常的可能行为,还是意味着我应该在 SVDLIBC 中查找错误?
machine-learning - 如何评价 svd 类似项目?
对于像为用户推荐商品这样的任务,我可以将数据集一分为二:训练数据集和测试数据集,我可以使用平均绝对误差来评估结果。但是,当我需要查找一个项目的相似项目时,我不知道如何评估结果。例如,
输入:
输出可能是:(222,0.98),(121,0.78)...我不知道从svd找到的类似项目好坏,如何评估结果?