在Matlab中執行SVM訓練後,如何可視化SVM分類?MATLAB中的支持向量機可視化
到目前爲止,我只訓練了SVM具有:
% Labels are -1 or 1
groundTruth = Ytrain;
d = xtrain;
model = svmtrain(groundTruth, d);
在Matlab中執行SVM訓練後,如何可視化SVM分類?MATLAB中的支持向量機可視化
到目前爲止,我只訓練了SVM具有:
% Labels are -1 or 1
groundTruth = Ytrain;
d = xtrain;
model = svmtrain(groundTruth, d);
退房類似於一個在LIBSVM這個svm-toy功能。顯然,它僅適用於2D二元分類
如果您正在使用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');
假設你的數據有兩個以上的維度,您可以執行PCA,項目的數據2D,然後根據您的svm分類器的輸出爲它們分配顏色(例如,紅色代表A級,藍色代表B級)。這很快就會做,你會看到是否有任何可視化。但是,具有高維度的數據在2D中不可能很容易看到。
通過_執行PCA_是什麼意思?唧我能做到嗎?你能多解釋一下嗎?我想要想象FisherIris數據集上的svm分類(使用libsvm)。如果我是正確的,那就是4D – 2012-12-28 15:58:56
說實話,如果你甚至不知道PCA是什麼(主成分分析的簡寫),那麼你可能最終花費太多時間來達到最終結果。這不是微不足道的。 我知道將可視化的決策邊界很有趣,但您可能需要考慮不同的策略來分析SVM的行爲。你究竟想達到什麼目的? – levesque 2013-01-07 16:42:11
最後,我決定使用[stprtool](http://cmp.felk.cvut.cz/cmp/software/stprtool/)代替libsvm來獲得繪製決策邊界的選擇。它工作得很好。感謝您的回覆 – 2013-01-08 05:59:49
model = svmtrain(groundTruth, d, 'ShowPlot', true);
您是否可以多加一點解釋? – 2014-10-31 20:37:32
'dd'是訓練數據特徵範圍的網格。 – Wok 2014-08-18 14:39:04