изобразяване на многовариантни данни по собствените вектори

Имам матрица с данни, която съдържа 18 проби, всяка с 12 променливи, D(18,12). Извърших k-означава групиране на данните, за да получа 3 клъстера. Искам да визуализирам тези данни в 2 измерения, по-специално, по двата собствени вектора, съответстващи на най-големите собствени стойности на конкретна матрица, B. И така, създавам равнината, обхваната от два собствени вектора, съответстващи на двете най-големи собствени стойности:

[V,EA]=eig(B);
e1=V(:,11);
e2=V(:,12);
for i=1:12
    E(i,1)=e1(i);
    E(i,2)=e2(i);
end
Eproj=E*E';

където e1 и e2 са собствените вектори, а E е матрица, съдържаща тези колонни вектори. В този момент някак съм заседнал. Разбирам, че e1 и e2 са ортогонални в това 12-d пространство, но нямам представа как това може да се намали до две измерения, за да мога да го начертая. Вярвам, че проекцията на извадка от данни върху равнината ще бъде:

Eproj*D(i,:) 

за i=1...18, но не съм сигурен къде да отида от тук, за да начертая моите клъстери. Когато правя проекцията, тя все още е в 12 измерения.


person user1042343    schedule 30.05.2014    source източник


Отговори (1)


Анализът на главните компоненти може да ви помогне да трансформирате данните в 2D с помощта на собствените вектори.

coeff = princomp(B);
Bproj = B * coeff(:,1:2);
figure
plot(Bproj(:,1),Bproj(:,2),'*')

Ако имате етикетите, можете да използвате функцията "scatter" за по-добра визуализация. Или можете да намалите размерността до 3 и да използвате функцията "scatter3".

person ssulun    schedule 30.05.2014