Я пытался использовать функцию principal-components
из Incanter для выполнения PCA и, похоже, не использовал ее. Я нашел несколько примеров данных в Интернете из учебника по PCA и хотел попрактиковаться на них:
(def data [[0.69 0.49] [-1.31 -1.21] [0.39 0.99] [0.09 0.29] [1.29 1.09]
[0.49 0.79] [0.19 (- 0 0.31)] [(- 0 0.81) (- 0 0.81)]
[(- 0 0.31) (- 0 0.31)] [(- 0 0.71) (- 0 1.01)]])
При первой попытке реализовать PCA я попытался передать векторы в матричную функцию Инкантера, но обнаружил, что передаю ей слишком много аргументов. В этот момент я решил попробовать вложенную векторную структуру, как определено выше, но хотел бы избежать этого пути.
Как мне превратить data
в матрицу (Incanter), чтобы она была принята в качестве входных данных в функцию Incanter principal-components
. Для простоты назовем новую матрицу fooMatrix.
После создания этой матрицы fooMatrix следующий код должен работать для извлечения первых двух основных компонентов.
(def pca (principal-components fooMatrix))
(def components (:rotation pca))
(def pc1 (sel components :cols 0))
(def pc2 (sel components :cols 1))
а затем данные могут быть спроецированы на главные компоненты с помощью
(def principal1 (mmult fooMatrix pc1))
(def principal2 (mmult fooMatrix pc2))
data
, в матрицу, которую может использовать функция Incanterprincipal-component
.@galdre - person sunspots   schedule 27.03.2014