SVM Visualization in MATLAB

十年热恋 提交于 2019-12-19 01:27:09

问题


How do I visualize the SVM classification once I perform SVM training in Matlab?

So far, I have only trained the SVM with:

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

model = svmtrain(groundTruth, d);

回答1:


If you are using LIBSVM, you can plot classification results:

% 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');



回答2:


Assuming your data has more than two dimensions, you can perform a PCA, project the data to 2D, then assign them a color according to the output of your svm classifier (e.g., red for class A, blue for class B). This is quick to do and you will see if there is anything to visualize. However, data with a high dimensionality are not likely to be easily visualizable in 2D.




回答3:


Check out this svm-toy function similar to the one in LIBSVM. Obviously it only works for 2D binary classification




回答4:


model = svmtrain(groundTruth, d, 'ShowPlot', true);


来源:https://stackoverflow.com/questions/2649384/svm-visualization-in-matlab

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!