我正在尝试在 Matlab 上为 fisherisis 数据集绘制决策边界。以下是我正在处理的代码:
load fisheriris;
X = meas(:,1:2);
y = species;
% PLOT
figure;
plot(X(strcmp(y,"setosa"),1),X(strcmp(y,"setosa"),2),'.','DisplayName','setosa'); hold on
plot(X(strcmp(y,"versicolor"),1),X(strcmp(y,"versicolor"),2),'.','DisplayName','versicolor');
plot(X(strcmp(y,"virginica"),1),X(strcmp(y,"virginica"),2),'.','DisplayName','virginica'); hold off
legend("setosa","versicolor","virginica")
% SVM
t = templateSVM("KernelFunction","polynomial", "BoxConstraint",1,"KernelScale","auto","PolynomialOrder",2,"Standardize",1);
SVMModel = fitcecoc(X,y,"Learners", t);
% DECISION BOUNDARY
%%% Draw decision boundary here
我使用的上述 SVMModel 是分类多类 SVM(3 个类:“setosa”、“versicolor”、“virginica”)和数据集的第一列 2 个用于训练数据。
我希望可以绘制 2 或 3 条线或曲线来显示 SVMModel 中每个物种的边界。我读过几个网站,它们在某种程度上解决了我的问题,但对我来说都不起作用,因为它们使用的是线性 SVM 或线性方程... 以下是我搜索过的网站列表:
- 第一个网站,但这是用于二元分类的,在我的例子中,我有 3 个类。
- 第二个网站,但这是针对线性 SVM 的,在我的情况下是多项式核函数。
- 第三个网站,但在这种情况下,的属性
ecoc
具有属性Beta
,在我的情况下Beta
没有提供。
有人知道在我的处境下如何绘制决策边界吗?提前谢谢大家。