在二阶 MATLAB 的 pca 上投射新点
Projecting new points on pca of second degree MATLAB
我正在尝试使用 PCA 来可视化我对 k-means 算法的实现。我正在学习 this link 中关于主成分系数、分数和方差的教程。
我正在使用以下命令:[coeff,score,~]=pca(X');
其中 X 是我的数据。
我的数据是一个 30 x 455 矩阵,即 30 个特征和 455 个样本。我已经成功地使用 score 参数创建了一个用于可视化目的的 2D 图。现在我想把 30 维中心投射到那个平原上。我试过 coeff*centers(:,1)
但我不明白这是否是正确的用法。
如何将一个新的 30 维点投影到第一个和第二个 pca 组件的 2D 上?
我假设 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()
默认情况下数据居中。另外,请注意 coeff 上的转置 '
。事实上它应该是 inv(coeff)
,但是因为 coeff
是一个 orthogonal matrix 我们可以使用转置来代替。
我正在尝试使用 PCA 来可视化我对 k-means 算法的实现。我正在学习 this link 中关于主成分系数、分数和方差的教程。
我正在使用以下命令:[coeff,score,~]=pca(X');
其中 X 是我的数据。
我的数据是一个 30 x 455 矩阵,即 30 个特征和 455 个样本。我已经成功地使用 score 参数创建了一个用于可视化目的的 2D 图。现在我想把 30 维中心投射到那个平原上。我试过 coeff*centers(:,1)
但我不明白这是否是正确的用法。
如何将一个新的 30 维点投影到第一个和第二个 pca 组件的 2D 上?
我假设 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()
默认情况下数据居中。另外,请注意 coeff 上的转置 '
。事实上它应该是 inv(coeff)
,但是因为 coeff
是一个 orthogonal matrix 我们可以使用转置来代替。