Ближайший матч я могу получить это запустить:Разница в результатах Matlab при использовании PCA() и PCACOV()
data=rand(100,10); % data set
[W,pc] = pca(cov(data));
тогда не унижать
data2=data
[W2, EvalueMatrix2] = eig(cov(data2));
[W3, EvalueMatrix3] = svd(cov(data2));
В этом случае W2
и W3
согласны и W
является их транспонированием?
По-прежнему непонятно, почему W
должен быть транспонирован для двух других?
В качестве дополнительной проверки я использую pcacov
:
[W4, EvalueMatrix4] = pcacov(cov(data2));
Опять согласен с WE
и W3
, но это транспонированная W
?
Возможно, 'pca' вычисляет собственные векторы ковариационной матрицы? [http://math.stackexchange.com/questions/3869/what-is-the-intuitive-relationship-between-svd-and-pca](http://math.stackexchange.com/questions/3869/what- is-the-intuitive-relationship-between-svd-and-pca) – shamalaia
Вы пытались использовать 'eig' или' svd'? – Dan
В приведенной выше ссылке говорится, что pca центрирует данные и использует svd (так что можно ожидать каких-либо отличий от результата pca, но эти результаты совершенно разные?). В нем также говорится, что вход должен состоять из матрицы n * p, где n - наблюдение, а p - переменные, которые не предполагают использование ковариационной матрицы? – Bazman