【问题标题】:PCA returning error: ??? Undefined function or method 'pca' for input arguments of type 'double'PCA 返回错误:??? “double”类型的输入参数的未定义函数或方法“pca”
【发布时间】:2013-11-09 00:45:53
【问题描述】:

我只是在学习使用统计工具箱中的函数 pca,当我尝试下面的简单示例时,它返回错误但我找不到任何错误?

pca_test_2=[1 1 1 1 1 ; 1.9 2.1 2 2 1.8]

我通过它的转置将它乘以得到:

pca_test_2=pca_test_2*pca_test_2';

>> [coeff,score,latent]=pca(pca_test_2);
??? Undefined function or method 'pca' for input arguments of type 'double'.

我已查看但找不到任何描述如何解决此类错误的内容?

工具箱肯定安装好了。 当我在协方差矩阵上使用 pcacov 时,它可以工作(对于不同的数据集)?

有人可以解释我做错了什么吗?

当我将相同的数据与 svd 与相同的数据集一起使用时,它也可以工作吗?

[u s v]=svd(pca_test_2)

  u =

  -0.4537   -0.8912
  -0.8912    0.4537


  s =

  24.2493         0
        0    0.0107


  v =

  -0.4537   -0.8912
  -0.8912    0.4537

按照建议,我使用 princomp() 再次运行它,见下文;

但是,当将结果与来自 scd 的结果进行比较时,我仍然有点困惑:为什么“coeff”的“u”不一样? (尽管它们显然相似)。

为什么latent不等于s的对角线?显然它们是完全不同的(我假设它是一个缩放的东西,但鉴于潜在的第二个特征值为零,很难看出可以使用什么缩放?)

[u s v]=svd(pca_test_3)

你=

  -0.4537   -0.8912
  -0.8912    0.4537

s =

  24.2493         0
        0    0.0107

v =

  -0.4537   -0.8912
  -0.8912    0.4537

[coeff,score,latent]=princomp(pca_test_2)

系数 =

   0.4525    0.8918
   0.8918   -0.4525

分数 =

  -5.3040         0
   5.3040         0

潜在的 =

  56.2658
        0

【问题讨论】:

  • 使用princomp 而不是pca
  • 感谢它运行并产生接近但不完全正确的结果(我猜 princomp 的扩展方式与 svd 不同,但必须检查)。我虽然 princomp 是一个遗留功能,而 pca 是更新更好的版本。为什么 pca 在这里不起作用?更一般地说,我如何知道在任何给定情况下应该选择哪种方法:svd、pca、princomp 以及为什么?

标签: matlab


【解决方案1】:

您可以使用pcaprincomp,因为princomp 只调用pca。见here

SVD 和 PCA 相关,但不相同。应用于数据集的 PCA 本质上是均值中心数据集的 SVD 或协方差矩阵的特征向量。正如here 所述,协方差矩阵的特征值的平方根是奇异值。 MATLAB PCA 函数在某些情况下使用svd,在其他情况下使用eig

Undefined function or method 'pca'...”错误的来源可能是因为您的路径中有一个名为pca 的变量或另一个pca.m。试试which -all pca看是否有多个函数,whos pca看是否还有其他变量。更通用的测试是exist('pca'),它会为您提供一个数字,编码找到的对象类型(文件、变量等)

【讨论】:

  • 查看pca.m,了解它如何准备数据以供svd 使用。它将运行x = bsxfun(@minus,x,mu); 以删除每个维度的平均值。然后它将运行 SVD。 pca.m 也可以正确缩放结果。它还对系数强制执行符号约定……看看代码。
猜你喜欢
  • 2012-04-24
  • 1970-01-01
  • 2010-09-16
  • 2014-05-09
  • 2021-07-12
  • 1970-01-01
  • 2013-09-01
  • 1970-01-01
  • 2020-07-20
相关资源
最近更新 更多