2017-12-22 6 views
1

PCA를 사용하여 k- 평균 알고리즘 구현을 시각화하려고합니다. 나는 주 구성 요소 계수, 점수 및 분산에 대한 자습서를 this link에 있습니다.두 번째 학위 pca에 새로운 포인트 투영 MATLAB

다음 명령을 사용하고 있습니다. [coeff,score,~]=pca(X'); 여기서 X는 내 데이터입니다.

내 데이터는 30 x 455 행렬입니다. 즉, 455 개의 샘플을 가진 30 개의 피쳐입니다. 필자는 score 매개 변수를 사용하여 시각화 목적으로 2D 플롯을 만들었습니다. 이제는 30 차원의 중심을 그 평야에 투영하려고합니다. 나는 coeff*centers(:,1)을 시도했지만 올바른 사용법인지 이해하지 못한다.

두 번째 pca 구성 요소의 첫 번째 2D 구성 요소에 새 30 차원 점을 투영하려면 어떻게해야합니까?

답변

2

나는 centers(:, 1)에 의해 당신이 새로운 관찰을 나타낼 것이라고 가정합니다. 당신이 기본 센터의 데이터에 의해 pca() 이후 평균을 뺄 필요가

[coeff, score, ~, ~, ~, mu]=pca(X'); %return the estimated mean "mu" 
tmp = centers(:, 1) - mu'; %remove mean since pca() by default centers data 
coeff' * tmp; % the new observation expressed in the principal components 

노트를 작성해야 주성분이 관찰을 표현합니다. 또한 coeff에서의 전치 코드 '에주의하십시오. 실제로는 inv(coeff)이어야하지만 coefforthogonal matrix이므로 대신 사용할 수 있습니다.

+0

'centers (:, 1)'은 k- 클러스터의 중심을 나타냅니다. 2D에서 시각화하고 싶은데 그 중심이 어디입니까? – havakok

+0

pca를 사용하기 전에 데이터를 정규화하고 중앙에 배치 한 경우 새 점에서 평균을 뺄 필요가 있습니까? – havakok

+0

데이터가 이미 가운데에 있으면 '뮤'를 뺄 필요가 없습니다. 'mu'가 0인지 확인하여 데이터가 가운데에 있는지 확인할 수 있습니다. 'mu'는'mean (X ')'와 같습니다. – tuntap

관련 문제