1

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

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 的顺序。现在我的问题只是像他们在这里所做的那样绘制结果。

4

1 回答 1

0

选择 2 个功能后,您可以按照示例进行操作。开始一个图形,使用hold on,然后使用plotscatter来绘制质心和数据点。例如

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

将绘制集群 1 中数据点的选定特征值。

于 2012-06-03T12:31:24.200 回答