Julia MultivariateStats.jl 中的 PCA

JHZ*_*JHZ 1 matlab pca julia

我在 Julia 包MultivariateStats.jl 中使用PCA。我正在尝试将旧的 Matlab 脚本转换为 Julia。但是,我不能再运行 Matlab 脚本了。我正在处理一系列图像。首先,我想确保输入矩阵正确。我将每个图像重新塑造为向量并将图像放入矩阵。我认为这些数据的格式是正确的,与 Matlab 相同。然后我生成了一个 PCA 模型。Matlab 会返回. 我如何在 Julia 中获得这些? nm x nM = fit(PCA, data)[coeff,score,latent]

Kev*_*eys 5

上的数据矩阵A PCA Xm行和n预测仅是一个SVDX,其定义为X = USV”。您可以使用 Julia 调用基于矩阵USV重建这三个对象U, S, V = svd(X)

如果我正确理解了MATLAB PCA 文档,那么

  • scoreU
  • latentS
  • coeffVS

和一个恢复数据X = score * coeff'

请注意,如果您调用svdPCA,那么 Julia 的svd函数将S作为向量返回,而在 Matlab 中则作为方阵svd返回SX在 Julia 中重建时,调用是X = U * Diagonal(S) * V',而在 Matlab 中,您可以简单地编写X = U * S * V'. 因为pca在 Matlab 中,latent是一个向量。

不要忘记先将矩阵居中。假设你有足够的内存,然后Y = broadcast(-, X, mean(X,1))创建一个居中的X. 然后您可以运行U, S, V = svd(Y).

当然,这是假定你的预测是X。数学家就是这么想的。统计人员经常把预测作为X。Julia 中的 PCA 调用假定行对应于预测变量。在这种情况下,UV矩阵被反转,并且必须X沿其行居中Y = broadcast(-, X, mean(X,2))