8

Matlab で SVM トレーニングを実行したら、SVM 分類を視覚化するにはどうすればよいですか?

これまでのところ、SVM を次の方法でトレーニングしただけです。

% Labels are -1 or 1
groundTruth = Ytrain;
d = xtrain;

model = svmtrain(groundTruth, d);
4

4 に答える 4

7

LIBSVM を使用している場合は、分類結果をプロットできます。

% Labels are -1 or 1
groundTruth = Ytrain;
d = xtrain;

figure

% plot training data
hold on;
pos = find(groundTruth==1);
scatter(d(pos,1), d(pos,2), 'r')
pos = find(groundTruth==-1);
scatter(d(pos,1), d(pos,2), 'b')

% now plot support vectors
hold on;
sv = full(model.SVs);
plot(sv(:,1),sv(:,2),'ko');

% now plot decision area
[xi,yi] = meshgrid([min(d(:,1)):0.01:max(d(:,1))],[min(d(:,2)):0.01:max(d(:,2))]);
dd = [xi(:),yi(:)];
tic;[predicted_label, accuracy, decision_values] = svmpredict(zeros(size(dd,1),1), dd, model);toc
pos = find(predicted_label==1);
hold on;
redcolor = [1 0.8 0.8];
bluecolor = [0.8 0.8 1];
h1 = plot(dd(pos,1),dd(pos,2),'s','color',redcolor,'MarkerSize',10,'MarkerEdgeColor',redcolor,'MarkerFaceColor',redcolor);
pos = find(predicted_label==-1);
hold on;
h2 = plot(dd(pos,1),dd(pos,2),'s','color',bluecolor,'MarkerSize',10,'MarkerEdgeColor',bluecolor,'MarkerFaceColor',bluecolor);
uistack(h1, 'bottom');
uistack(h2, 'bottom');
于 2011-02-03T19:16:36.230 に答える
2

データに 3 つ以上の次元があると仮定すると、PCA を実行し、データを 2D に射影してから、svm 分類器の出力に従って色を割り当てることができます (たとえば、クラス A は赤、クラス B は青)。これはすぐに実行でき、視覚化するものがあるかどうかがわかります。ただし、高次元のデータは 2D で簡単に視覚化できない可能性があります。

于 2011-02-03T21:22:43.560 に答える
0

LIBSVM のものと同様のこのsvm-toy関数を確認してください。明らかに、2Dバイナリ分類でのみ機能します

于 2010-04-16T00:32:04.497 に答える