2014-03-26 6 views
0

나는 Incanter의 principal-components 함수를 사용하여 PCA를 수행하려고 시도해 왔으며이를 사용하는 데 어려움이 있습니다. 나는 PCA 튜토리얼에서 온라인으로 일부 샘플 데이터를 발견하고 연습하고 싶었 :주 구성 요소 기능 Incanter

(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를 구현하기 위해,하지만 너무 많은 인수를 전달하는 자신을 발견했다. 이 시점에서 위에서 정의한 중첩 된 벡터 구조를 시도했지만이 경로를 피하기를 원했습니다.

잉카의 함수 principal-components에 입력으로 허용되도록 data을 행렬 (Incanter)로 변환하는 방법은 무엇입니까? 간단히하기 위해 새로운 매트릭스 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)) 
+0

질문하지 않는 것 같습니다. [이 링크] (http://data-sorcery.org/category/pca/)에서는 Incanter를 통해 PCA를 사용하는 방법에 대해 설명하고, 게시물 하단에는 사용 된 모든 소스 코드에 대한 링크가 있습니다. – galdre

+0

필자가 이해할 수없는 것은'데이터 '에 포함 된 벡터를 Incanter 함수'principal-component'에서 사용할 수있는 것보다 행렬로 변환하는 방법입니다. @ galdre – sunspots

+0

질문이 명시 적으로 변경되도록 초기 게시물을 수정했습니다. , 감사. – sunspots

답변

1
하여 주성분에 투영 수를 추출하는 작업을해야 생성 된

Incanter API을 확인하십시오. 나는 당신이 단지 (incanter.core/matrix data)을 원한다고 생각합니다. Incanter의 행렬 함수에 대한 옵션입니다. 어쩌면 A2는 관심있는 것입니다 데이터를 사용하여

(def A (matrix [[1 2 3] [4 5 6] [7 8 9]])) ; produces a 3x3 matrix 
(def A2 (matrix [1 2 3 4 5 6 7 8 9] 3)) ; produces the same 3x3 matrix 
(def B (matrix [1 2 3 4 5 6 7 8 9])) ; produces a 9x1 column vector 

예 :.

user=> (use '[incanter core stats charts datasets]) 
nil 
user=>(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)]) 
user=>(def fooMatrix (matrix data 2)) 
user=>(principal-components fooMatrix) 
{:std-dev (1.3877785387777999 0.27215937850413047), :rotation A 2x2 matrix 
------------- 
-7.07e-01 -7.07e-01 
-7.07e-01 7.07e-01 
} 

자보세요. 중첩 된 벡터 구조가 사라졌습니다.

+0

'A2'는 매트릭스 구축을 위해 내가 쓴 것입니다. – sunspots