2012-11-20 5 views
2

각 데이터 포인트에 132 기능이 포함 된 데이터 포인트는 대개 200000입니다. 기본적으로 데이터 세트는 200000 x 132입니다.C++ - PCA (armadillo 제외)를 계산하기위한 프레임 워크

armadillo framework을 사용하여 모든 계산을 완료했습니다. 그러나 PCA 분석을 시도했으나 RAM 메모리 (8GB RAM) 또는 프레임 워크 자체의 제한 때문에 메모리 오류가 발생한다는 것을 모릅니다.

다음과 같은 오류 메시지가 나타납니다. requested size is too large.

크기/메모리 제한이없는 PCA 계산을위한 또 다른 프레임 워크를 추천 해 주시겠습니까?

이전에 PCA 계산을 위해 armadillo를 사용하고이 문제가 발생했다면 해결 방법을 알려주실 수 있습니까? 당신은 아마 이/armadillo_bits/config.hpp 을 포함하는 파일을 편집, 특히 요소의 총 수를 저장하기 위해 사용되는 아르마 내 64 bit integers의 사용 등

를 활성화해야합니다

+0

프로그램이 64 비트입니까? –

+0

예, 64 비트입니다. – Simon

+0

데이터 집합을 더 작은 하위 집합으로 나누고 결과를 집계 할 수 있습니까? –

답변

1

및 다음 줄을 주석 처리하십시오. // #define ARMA_64BIT_WORD. 버전 3.4에서 이 당신이 당신의 프로그램에서 아르마 헤더를 포함하기 전에 ARMA_64BIT_WORD를 정의 할 수 있습니다, 근처 라인 또는 59

해야한다 예를 들면 : 당신의 C++ 컴파일러 (64)을 처리 할 수 ​​있어야합니다

#define ARMA_64BIT_WORD 
#include <armadillo> 
#include <iostream> 
... 

주 비트 정수. 요즘 대부분의 컴파일러가 가지고 있습니다.

+0

btw에 설명 된대로 모든 또는 상위 소수의 고유 벡터가 작동하지 않으면 기본 LAPACK 함수와 관련된 문제 일 수 있습니다 이 경우 [svd_econ] (http://arma.sourceforge.net/docs.html#svd_econ) 함수를 사용해보십시오. – mtall

+0

다음 오류가 발생합니다. 'error : svd_econ() : 수렴하지 못했습니다. ' – Simon

+0

이것은 대개 문제가 잘못되었거나 솔루션이 수치 적으로 훼손 될 수 있음을 의미합니다 (즉, SVD는 LAPACK이 수행 할 수 없음). – mtall