我正在使用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中绘制结果。
答案 0 :(得分:0)
选择2个功能后,您只需按照示例操作即可。开始一个数字,使用hold on
,并使用plot
或scatter
绘制质心和数据点。例如。
selectedFeatures = [42,43];
plot(trainingData(trainCtr==1,selectedFeatures(1)),
trainingData(trainCtr==1,selectedFeatures(2)),
'r.','MarkerSize',12)
将绘制群集1中数据点的选定要素值。