代码之家  ›  专栏  ›  技术社区  ›  havakok

二次MATLAB主元分析中新点的投影

  •  1
  • havakok  · 技术社区  · 7 年前

    我正在尝试使用PCA来可视化我的k-means算法的实现。我正在学习中关于主成分系数、分数和方差的教程 this link .

    我正在使用以下命令: [coeff,score,~]=pca(X'); 其中X是我的数据。

    我的数据是一个30 x 455的矩阵,即30个特征和455个样本。我已经成功地使用score参数创建了一个用于可视化目的的2D绘图。现在我想把30维的中心投影到这个平面上。我试过了 coeff*centers(:,1) 但我不明白这是否是正确的用法。

    如何将新的30维点投影到第一个与第二个pca组件的2D?

    1 回复  |  直到 7 年前
        1
  •  2
  •   tuntap    7 年前

    我想 centers(:, 1) 你表示一个新的观察结果。要用主成分表达这一观察结果,你应该写

    [coeff, score, ~, ~, ~, mu]=pca(X');   %return the estimated mean "mu"
    tmp = centers(:, 1) - mu';   %remove mean since pca() by default centers data
    coeff' * tmp;   % the new observation expressed in the principal components
    

    请注意,您必须减去平均值,因为 pca() 默认情况下,数据居中。另外,请注意转置 ' 在系数上。事实上应该是这样 inv(coeff) ,但自 coeff 是一个 orthogonal matrix 我们可以使用转置。