1

私は、matlab のプロジェクト親指認識システムを使用しています。Kmean Algorithmを実装し、結果も得ました。実際、ここで彼らが行ったように結果をプロットしたいと思います。私はしようとしていますが、そうすることができませんでした。次のコードを使用しています。

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 列が各画像に含まれるようにしました。これも 200 X 1054のオーダーです。今、私の問題は、ここtestingDataで行ったように結果をプロットすることです。testingData

4

1 に答える 1

0

2 つの機能を選択したら、例に従うことができます。Figure を開始し、 を使用して、またはを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 に答える