Теперь я пытаюсь кое-что использовать с PCA, но для меня очень важно знать, какие функции отвечают за каждое собственное значение.
numpy.linalg.eig
дает нам уже отсортированную диагональную матрицу, но мне нужна эта матрица с ними в исходных положениях. Кто-нибудь знает, как я могу это сделать?
Что Свен упомянул в своих комментариях правильно. Не существует "по умолчанию" упорядочения собственных значений. Каждое собственное значение связано с собственным вектором, и важно, чтобы пара собственных векторов eigenvalue- была правильно согласована. Вы обнаружите, что все языки и пакеты сделают это.
Итак, если R дает собственные значения [e1,e2,e3
и собственные векторы [v1,v2,v3]
, python, вероятно, даст вам (скажем) [e3,e2,e1]
и [v3,v2,v1]
.
Напомним, что собственное значение говорит вам, какая часть дисперсии в ваших данных объясняется связанным с ней собственным вектором. Таким образом, естественная сортировка собственных значений (то есть интуитивно понятная нам), которая полезна в PCA, имеет размер (либо восходящий, либо нисходящий). Таким образом, вы можете легко просмотреть собственные значения и определить, какие из них сохранить (большие, поскольку они объясняют большую часть данных) и какие из них бросать (небольшие, которые могут быть высокочастотными функциями или просто шумом).
(Не ответ, но мне нужно форматирование для этого комментария.)
Вы должны указать, какой заказ вам нужен. Например, собственные значения этой матрицы
/ 0 1 \
A = | |
\ 1 0 /
являются +1
и -1
, соответствующими собственным векторам (1 1)
и (1 -1)
. Как бы вы хотели, чтобы эти собственные значения упорядочивались и почему?