How to plot a hyper plane in 3D for the SVM results?
조회 수: 48 (최근 30일)
이전 댓글 표시
I just wondering how to plot a hyper plane of the SVM results.
For example, here we are using two features, we can plot the decision boundary in 2D. But if how can we plot a hyper plane in 3D if we use 3 features?
load fisheriris;
features = meas(1:100,:);
featureSelcted = features(1:100,1:2); % For example, featureSelcted = features(1:100,1:3) can not be plotted
groundTruthGroup = species(1:100);
svmStruct = svmtrain(featureSelcted, groundTruthGroup, ...
'Kernel_Function', 'rbf', 'boxconstraint', Inf, 'showplot', true, 'Method', 'QP');
svmClassified = svmclassify(svmStruct,featureSelcted,'showplot',true);
A similar solution in R can be found at
but a Matlab implementation would be handy. Thanks very much.
A.
댓글 수: 0
채택된 답변
추가 답변 (1개)
manan lalit
2019년 4월 3일
Just putting my answer here in case someone is curious about how to find the analytical equation of the 3-D linear plane separating data belonging to two classes with the fitcsvm function in MATLAB.
You can find the coefficients ( and ) using the two equations below. Quoting from "Support-Vector Networks" by Cortes and Vapnik, 1995, "... the vector that determines the optimal hyperplane can be written as a linear combination of training vectors"
Here, l is the number of support vectors. In MATLAB version 2018b can be extracted using code such as:
SVMModel = fitcsvm(data, groups);
% "data" contains the (N * D) matrix.
% "groups" is a (N*1) matrix indicating the two groups (+1 and -1)
alpha = SVMModel.Alpha;
Similarly, can be determined using the equation below:
Once, and are available, then plotting such a plane can be done, in the following manner:
xgrid=[0:200];
ygrid=[0:200];
[X, Y]=meshgrid(xgrid, ygrid);
% w0 and b0 were determined through the two equations mentioned above.
Z=(-b0-w0(1)*X-w0(2)*Y)/w0(3);
surf(X, Y, Z)
댓글 수: 2
Joy
2019년 4월 9일
I like this analytical solution . Could you please share your example code? I don't exactly get the deriving part.
Thanks!
Joseph Olson
2022년 1월 6일
w0 and b0 can be extracted with
w0 = SVMModel.Beta;
b0 = SVMModel.Bias;
참고 항목
카테고리
Help Center 및 File Exchange에서 Classification Trees에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!