построение многомерных данных вдоль собственных векторов

У меня есть матрица данных, содержащая 18 выборок, каждая с 12 переменными, D(18,12). Я выполнил кластеризацию k-средних для данных, чтобы получить 3 кластера. Я хочу визуализировать эти данные в двух измерениях, в частности, вдоль двух собственных векторов, соответствующих наибольшим собственным значениям конкретной матрицы 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-мерном пространстве, но я понятия не имею, как это можно уменьшить до двух измерений, чтобы я мог построить это. Я считаю, что проекция выборки данных на плоскость будет:

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),'*')

Если у вас есть метки, вы можете использовать функцию «разброс» для лучшего визуального восприятия. Или вы можете уменьшить размерность до 3 и использовать функцию "scatter3".

person ssulun    schedule 30.05.2014