2013-09-25 2 views
2

Мне нужно выполнить уменьшение размерности в наборе данных многомерного набора данных, который был сгруппирован с использованием k-средств. Данные содержат положительные и отрицательные действительные числа, полученные из показаний датчиков датчиков, размещенных на тактильной перчатке. Данные захватывается, представляя действие говорят рисунок буквы «А», какMatlab: проблемы с кластеризацией

0.1373 -1.8764 
    -1.7020 -0.8322 
    0.4862 0.8276 
    -0.0078 1.3597 
    0.9008 1.8043 
    2.9751 0.7125 
    -0.3257 0.1754 

Теперь мои неурядицы являются

  1. Я не получаю кластеризацию для многомерных данных, используя следующий код
K=3; 
load('b2.txt'); 



data = b2; 
numObservarations = length(data); 
%% cluster 
opts = statset('MaxIter', 500, 'Display', 'iter'); 
[clustIDX, clusters, interClustSum, Dist] = kmeans(data, K, 'options',opts, ... 
    'distance','sqEuclidean', 'EmptyAction','singleton', 'replicates',3); 
%% plot data+clusters 
figure, hold on 
scatter3(data(:,1),data(:,2),data(:,3), 50, clustIDX, 'filled') 
scatter3(clusters(:,1),clusters(:,2),clusters(:,3), 200, (1:K)', 'filled') 
hold off, xlabel('x'), ylabel('y'), zlabel('z') 

Как это исправить? Что не так?

  1. После получения кластеров по всей размерности, я теперь представляют данные от своих кластерных меток, как

и так далее.

  • Включает ли эти данные временное упорядочение событий? Если взглянуть на это, но есть документы, в которых говорится, что кластеризация не учитывает временное упорядочение.
  • Мне нужно уменьшить его длину. Я знаю анализ основных компонентов, но используется для выбора размеров и не уменьшает длину данных. Можно ли использовать этот сокращенный формат для дистанционной классификации с использованием входящего набора тестовых данных?
+0

Прежде всего, 'данных = b2 (1: 100);' кажется, подразумевает что это проблема 1D, а не двумерная кластеризация. Возможно, с некоторым представлением о том, как выглядят ваши данные, мы можем помочь немного больше ... –

+0

К сожалению, это была опечатка. Я удалил это и добавил несколько выборок данных. Все еще нет сюжета –

+0

Можете ли вы рассказать нам, что является результатом размера (данных)? – prgao

ответ

2

Код, который вы предоставляете, отлично работает с небольшими изменениями для набора данных 2D, который вы предоставили.

Попробуйте это следующим образом:

data=[ 0.1373 -1.8764 
     -1.7020 -0.8322 
      0.4862 0.8276 
     -0.0078 1.3597 
      0.9008 1.8043 
      2.9751 0.7125 
     -0.3257 0.1754]; 

numObservarations = length(data); 
K=3 

%% cluster 

%opts = statset('MaxIter', 500, 'Display', 'iter'); 
[clustIDX, clusters, interClustSum, Dist] = ... 
    kmeans(data, K, 'MaxIter', 500, 'Display', 'iter', ... 
      'distance','sqEuclidean', 'EmptyAction','singleton', 'replicates',3); 

%% plot data+clusters 

figure, hold on 
scatter(data(:,1),data(:,2), 50, clustIDX, 'filled') 
scatter(clusters(:,1),clusters(:,2), 200, (1:K)', 'filled') 
hold off, xlabel('x'), ylabel('y') 

Это результат:

enter image description here

Еще раз, набор данных вы предоставили содержит особенности, поэтому в основном 2D.

Насколько я понимаю, kmeans кластеров данных, он сам по себе не выполняет уменьшение размерности (я жду, когда кто-нибудь еще прочтет это, чтобы исправить меня). Для уменьшения размерности то, что вы действительно хотите сделать, это PCA или аналогичный. После PCA вы можете проецировать свои данные на ось основного компонента и отображать кластеры «с более низким размером».

Я не понимаю, что вы подразумеваете под временным порядком, но я, если есть некоторая корреляция между временными событиями и функциями, которые можно ожидать kmeans для классификации (косвенно) в соответствии с этими событиями.


Вот еще один пример. На этот раз размер кластера равен 3. Центроиды кластеров находятся в переменной clusters, выведенной выше на kmeans.

enter image description here

Участок слева показывает точки в пространстве признаков 2D цветной согласно времени (The Colorbar показывает, как относительное время относится к цвету). Средняя цифра показывает, какие кластерные точки были назначены в соответствии с новой цветовой шкалой, той же цветовой шкалой, что и на правом участке, который показывает положение центроидов. Точка фигуры отображает временную закономерность, с которой появляются функции.

Что касается вашего вопроса о временном упорядочении, казалось бы, что kmeans может выявить скрытые временные корреляции в особенности (если это то, что вы имеете в виду), как показано на следующем участке clustIDX в зависимости от времени:

enter image description here

Но я не знаю, как это сравнивается с другими алгоритмами обработки (почему это было бы выгодно). Я бы подошел к dsp.stackexchange для лучшего ответа.


В подзаговоры были получены с помощью следующего кода:

subplot(121); 
scatter(data(:,2),data(:,3), 50, clustIDX, 'filled') 
axis tight 
box on 
xlabel('feature 1'), ylabel('feature 2') 
title('labelled points') 

subplot(122); 
scatter(clusters(:,2),clusters(:,3), 200, (1:K)', 'filled') 
axis tight 
box on 
xlabel('feature 1'),ylabel('feature 2') 
title('clusters') 

Второй участок:

figure 
scatter([1:length(clustIDX)],clustIDX, 50, clustIDX, 'filled') 
xlabel('time'),ylabel('cluster') 
box on 
axis tight 
title('labelled points in time domain') 
+0

О, я вижу, функция графика была неправильной, спасибо. Комментарий1: Я знаю, что kmeans не уменьшает размерность, хотя возвращает многоуровневые данные для одного кластера. Я не хочу уменьшать размерность, но хочу уменьшить длину данных, подобных приложениям для интеллектуального анализа данных. Я хотел использовать кластерные данные, т.е. оригинальные данные, представленные его метками [12113 ...] Таким образом, с длиной окна 3 было интересно, можно ли их сгруппировать. –

+0

Комментарий 2: Следующее, что я хотел знать, - это если данные представлены его кластерами, скажем [12113 ...], тогда эта информация сообщает нам о базовом временном упорядочении активности, которая генерировала данные? Есть ли доказательство? –

+0

@SrishtiM Добавил ответ на ваши комментарии ... –

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