【发布时间】:2018-10-18 13:21:51
【问题描述】:
我正在尝试使用 PCA 可视化包含 5 个特征的数据集。我同时使用 matlab 和 R。在 R 中我使用 prcomp() 命令,在 matlab 中我使用 pca() 命令。两者都使用 SVD 来获得主成分,但我在 matlab 和 R 之间的每个主成分中得到了巨大的差异。在 matlab 中,我在第一个分量中收到 95% 的方差,在第二个中收到 3% 的方差,而在 R第一个成分的方差约为 42%,第二个成分的方差约为 28%。它们怎么变化这么大?
我还可以提到,我计划稍后将这些数据用于机器学习模型,并希望使用主成分来降低维度。我应该使用 matlab 还是 R 的结果?
旁注:我正在使用 fviz_eig() 显示 R 中每个组件的方差。
编辑:
R 代码:
res.pca <- prcomp(dataset, scale=TRUE)
fviz_eig(res.pca)
Matlab 代码:
[coeff, score,~,~,var, mean] = pca(dataset,'algorithm','SVD');
bar(var)
“数据集”是一个包含 5 个特征的 csv 文件,每个特征包含 257493 个观测值。
【问题讨论】:
-
由于您没有显示代码,因此有一种可能性:您做错了。我们无法证明或反驳这种说法
-
使用
dput(data)的输出使用代码和数据集编辑问题,如果数据集太大,请使用dput(head(data, 30))。 -
你使用什么参数?例如,您是否指定在两种情况下都将数据居中和缩放?正如其他人所说,您需要提供数据和代码。
-
我认为您不需要 5 个维度的 PCA。大多数分类器应该能够很好地处理它们。
-
我现在已经插入了代码。我知道大多数分类器可以处理 5 个特征,但这项工作是为了一篇论文,因此我需要与 pca 和没有 pca 进行比较。
标签: r matlab machine-learning bigdata pca