【问题标题】:how to remove rows and cols from main matrix after SVD function?如何在 SVD 函数后从主矩阵中删除行和列?
【发布时间】:2015-05-26 08:02:25
【问题描述】:

我有:

 A =
 1     2     3
 2     4     5
 5     5     5

[U S V]=svd(A)  

如何从 SVD 函数中去除 A 矩阵的维数?

【问题讨论】:

  • 所以你想找到一个降维矩阵A的SVD?
  • 是的。我需要在 SVD(A) 之后找到 A 矩阵和 S 矩阵之间的关系。
  • 在 SVD 之后从矩阵中删除行和列对我来说没有任何意义。在移除奇异值之后,您是否想找到A较低等级近似值?

标签: c# matlab mathnet-numerics


【解决方案1】:

我假设您想获得矩阵A 的简化版本。

这是通过使用PCA 完成的,搜索它。例如,如果您希望简化矩阵 A 具有 K 维度:

[m, ~] = size(A);

Sigma = 1.0/m .* A' * A;
[U, S, ~] = svd(Sigma);

newA = zeros(size(A, 1), K);

for i = 1:size(A, 1),
    for j = 1:K,
        x = A(i, :)';
        projection_k = x' * U(:, j);
        newA(i, j) = projection_k;
    end
end
end

因此矩阵newA 将是A 的简化版本,具有K 维度。

你最好搜索一下PCA

【讨论】:

  • 我有很多数据集相关(社交网络系统)。我喜欢用户数据集减少用户和列。我在 matlab 中使用此代码但不起作用,K 变量中的错误
  • K 是维度。如果你的数据原本有 10 个维度,而你想把它减少到 2,K = 2。我认为你对 PCA 一无所知,最好学习它而不是只使用代码。
  • 你能在 Skype 上给我打电话寻求帮助吗,skypeid=tarraharshad
猜你喜欢
  • 2016-11-07
  • 2019-07-08
  • 2016-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-17
  • 1970-01-01
相关资源
最近更新 更多