【问题标题】:Calculation of PCA Scores in MatlabMatlab中PCA分数的计算
【发布时间】:2021-04-16 08:43:48
【问题描述】:

我无法理解如何通过主成分分析计算分数。

如果我对矩阵 X 执行 PCA,通过:[coeff score] = pca(X)

那么应该dot(coeff(1,:) , X(1,:)) = score(1,1) ?

非常感谢任何帮助。

【问题讨论】:

  • Xcentered = score*coeff',分数是特征向量。分数是 PCA 的输出,“它们是如何计算的”与“如何编程 PCA”是同一个问题
  • 这是有道理的。非常感谢安德。您能告诉我如何将在训练集上计算的系数应用于测试集吗?
  • Xcentered = score*coeff'。您的score 是您“训练”的部分(PCA 是一种数学分解,我很难将其定义为机器学习工具),并且系数是您的样本所特有的。所以一个新的“测试”集(去除平均值之后)是一个新的Xcentered,所以你需要为coeff解上面的方程;)希望不会太难
  • 优秀。谢谢安德。那么,居中总是通过减去每个变量的平均值来完成的?另外,我假设我会使用在训练集上计算的平均值?
  • 居中是通过减去“训练”数据的平均值来完成的。平均值应与 1 个样本大小相同。使用这个意思,不要用新数据重新计算一个新的。 PCA 是一种数学分解,它在数据中寻找方差,并且均值没有方差。但是如果你改变平均值,那么你可能会引入看起来像方差的错误,但实际上并非如此。

标签: matlab pca


【解决方案1】:

这是我用来帮助任何人的代码:

[coeff,score,latent,tsquared,explained,mu] = pca(training);
testCentered = test;

for i = 1:size(testCentered,2)
    testCentered(:,i) = test(:,i)  - mean(training(:,i));  
end

testScore = testCentered*inv(coeff');

【讨论】:

    猜你喜欢
    • 2015-07-03
    • 2012-09-23
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多