2014-12-27 3 views
1

У меня есть матрица размером 21x5 (top5features), содержащая значения для 5 различных типов объектов, извлеченных из 21 узелка рака. Я пытаюсь применить анализ основных компонентов для своих данных и распечатать результаты, но мне трудно понять, как это сделать. Ниже мой код до сих пор, но это только участки части данных, и я не считаю, что это то, что я собираюсь для:Matlab - анализ PCA

top5features = features(1:21,[42 55 61 62 60]); 
[W, pc] = princomp(top5features); 
pc = pc'; W = W'; 
plot(pc(1,:),pc(2,:),'.'); 
title('{\bf PCA} of Top 5 Features') 

Моей цели сделать сюжет так, что он имеет 21 очков , причем каждая точка относится к конкретному узлу. Эти 21 узелки также разделены на две группы, и, если возможно, я хотел бы покрасить их в соответствии с группой, к которой они принадлежат. Я немного начинаю использовать Matlab, и любая помощь будет оценена.

+0

PCA уменьшает размерность ваших данных. Я не вижу, как вы можете использовать его для классификации ваших данных в две группы. Вы пробовали что-то другое, например KNN или 'k'-значит? – rayryeng

+0

Извините, если я был неясен, моя главная цель - вывести результаты pca таким образом, чтобы отображать 21 очко. Перед анализом функции уже были разделены на две группы (строки 1-10 - одна группа, строки 11-21 - другая), было просто интересно, как их цветовое кодирование после создания графика. – eag

+0

Ahhh. Это довольно легко. Позвольте мне написать что-нибудь. – rayryeng

ответ

2

С учетом ваших комментариев первые 10 столбцов разложенных данных PCA обозначают одну группу, в то время как последние 11 столбцов разложенных данных PCA обозначают другую группу. Это может быть просто сделать в одной plot команды, как это так, используя ваш код раньше:

%// Your code 
top5features = features(1:21,[42 55 61 62 60]);  
[W, pc] = princomp(top5features);  
pc = pc'; W = W'; 

%// Group 1 
group1 = pc(:,1:10); 
%// Group 2 
group2 = pc(:,11:21); 

%// Plot as separate colours 
plot(group1(1,:), group1(2,:), 'b.', group2(1,:), group2(2,:), 'r.');  
title('{\bf PCA} of Top 5 Features') 
legend('Group 1', 'Group 2'); 

Приведенный выше код первого разделяет ваши PCA уменьшенные данные на две группы, которые вы указали. Затем мы используем одну команду plot, чтобы отображать обе группы вместе на одном графике, но цвет мы их различаем. Синий для группы 1, а красный - для группы 2. Мы помещаем точки в каждую точку. В качестве бонуса мы добавляем легенду, которая обозначает, к какой группе принадлежит каждая точка.

Надеюсь, это поможет!

+1

Это именно то, что я хотел, я потратил много времени на то, чтобы понять это, поэтому большое вам спасибо. – eag

+0

@ по моему удовольствию! Удачи! – rayryeng

Смежные вопросы