matlab - PCA in Julia MultivariateStats.jl -
i using pca in julia package multivariatestats.jl. trying covert old matlab script julia. however, cannot run matlab script anymore. dealing series of images. first want make sure got input matrix right. reshaped each image vector , put n
images m x n
matrix. think format of data correct, same matlab. generated pca model m = fit(pca, data)
. matlab return [coeff,score,latent]
. how in julia?
a pca on data matrix x of m
rows , n
predictors merely svd on x, defined x = usv'. can reconstruct 3 objects based on matrices u, s, , v julia call u, s, v = svd(x)
.
if understand matlab pca documentation correctly, then
score
ulatent
scoeff
vs
and 1 recovers data x = score * coeff'
.
note if call svd
pca, julia's svd
function returns s
vector, whereas in matlab svd
returns s
square matrix. when reconstructing x
in julia, call x = u * diagonal(s) * v'
, whereas in matlab can write x = u * s * v'
. pca
in matlab, latent
vector.
do not forget center matrix first. assuming have sufficient memory, y = broadcast(-, x, mean(x,1))
creates centered copy of x
. can run u, s, v = svd(y)
.
of course, assumes predictors columns of x. how mathematicians think of it. statisticians put predictors rows of x. pca call in julia assumes rows correspond predictors. in case, u , v matrices reversed, , 1 must center x
along rows y = broadcast(-, x, mean(x,2))
.
Comments
Post a Comment