2013-09-25 40 views
2

我需要对使用k-means聚类的多维数据集数据集执行维数降低。数据包含从传感器读取放置在触觉手套上的传感器读取的正负实数。而代表说画字母“A”为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(100 1)用下面的代码生成


的副区这是一个不是2D的聚类问题。也许有一些关于你的数据看起来像什么的想法,我们可以帮助更多... –

+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中。

enter image description here

在左边的图显示了在根据时间(该颜色条显示的相对时间如何涉及颜色)着色的二维特征空间中的点。中间的图显示了根据一个新的颜色比例分配了哪些聚类点,与右图中显示的质心位置相同的颜色比例。该图的要点是显示特征出现的时间规律性。

关于你约时间顺序的问题,它会出现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已添加回复您的意见... –