Kmean在matlab中绘图

时间:2012-06-03 11:13:03

标签: matlab machine-learning classification k-means

我正在使用matlab上的项目拇指识别系统。我实现了Kmean算法,我也得到了结果。实际上现在我想绘制他们完成的here结果。我正在尝试,但无法做到这一点。我使用以下代码。

load training.mat; % loaded just to get trainingData variable

labelData = zeros(200,1);
labelData(1:100,:) = 0; 
labelData(101:200,:) = 1;

k=2;

[trainCtr, traina] = kmeans(trainingData,k);

trainingResult1=[];

for i=1:k
    trainingResult1 = [trainingResult1 sum(trainCtr(1:100)==i)];
end

trainingResult2=[];

for i=1:k
    trainingResult2 = [trainingResult2 sum(trainCtr(101:200)==i)];
end

load testing.mat; % loaded just to get testingData variable

c1 = zeros(k,1054);

c1 = traina;

cluster = zeros(200,1);

for j=1:200
    testTemp = repmat(testingData(j,1:1054),k,1);
    difference = sum((c1 - testTemp).^2, 2);

    [value index] = min(difference);
    cluster(j,1) = index;
end

testingResult1 = [];

for i=1:k
    testingResult1 = [testingResult1 sum(cluster(1:100)==i)];
end

testingResult2 = [];

for i=1:k
    testingResult2 = [testingResult2 sum(cluster(101:200)==i)];
end
上面代码trainingData中的

是200 X 1054的矩阵,其中200是拇指图像,1054是列。实际上每个图像都是25 X 42.我将每个图像重新整形为行矩阵(1 X 1050)和另外4个(某些特征)列,因此每个图像中共有1054列。同样testingData我以与我testingData类似的方式制作它。它也是200 X 1054的顺序。现在我的问题只是在here中绘制结果。

1 个答案:

答案 0 :(得分:0)

选择2个功能后,您只需按照示例操作即可。开始一个数字,使用hold on,并使用plotscatter绘制质心和数据点。例如。

selectedFeatures = [42,43];
plot(trainingData(trainCtr==1,selectedFeatures(1)),
     trainingData(trainCtr==1,selectedFeatures(2)),
     'r.','MarkerSize',12)

将绘制群集1中数据点的选定要素值。