此示例显示如何执行Fisher IRIS数据的线性和二次分类。
加载示例数据。
加载渔民
栏载体,物种
,由三种不同种类的鸢尾花组成,柱头花(setosa)、花斑花(versicolor)、维京花(virginica)。双矩阵量
由花朵,萼片的长度和宽度分别由四种类型的测量组成,分别以厘米为单位。
使用花瓣长度(第三列量
)和花瓣宽度(第四列量
) 测量。将这些分别作为变量PL和PW保存。
PL =量(:3);PW =量(:4);
绘制数据,显示分类,也就是说,创建一个散点图的测量,按物种分组。
H1 = G箭头(PL,PW,物种,'krb'那'ov ^',[],“关闭”);h1(1)。L.ineWidth = 2; h1(2).LineWidth = 2; h1(3).LineWidth = 2; legend('setosa'那'versicolor'那'virginica'那“位置”那'最好')举行在
创建一个线性分类器。
x = [pl,pw];mdllinear = fitcdiscr(x,物种);
检索第二和第三类之间的线性边界的系数。
MdlLinear。类名(3 [2])
ans =.2x1细胞{'versicolor'} {'virginica'}
K = MdlLinear.Coeffs .Const(2、3);L = MdlLinear.Coeffs .Linear(2、3);
画出分隔第二和第三类的曲线
f = @(x1,x2) K + L(1)*x1 + L(2)*x2;H2 = Fimplic(f,[9 7.1 0 2.5]);H2.COLOR =.'r';h2.linewidth = 2;h2.displayname =.“Versicolor与Virginica的界限”;
检索第一和第二类之间的线性边界的系数。
mdllinear.classnames([1 2])
ans =.2x1细胞{' setosa}{“癣”}
K = MdlLinear.Coeffs .Const(1、2);L = MdlLinear.Coeffs .Linear(1、2);
绘制分隔第一和第二类的曲线。
f = @(x1,x2) K + L(1)*x1 + L(2)*x2;H3 = Fimplic(f,[9 7.1 0 2.5]);H3.Color =.“k”;H3.LineWidth = 2;h3.displayname =.“Versicolor与Setosa之间的界限”;轴([。2. xlabel() xlabel()“瓣长度”) ylabel ('花瓣宽度')标题(“{\bf Fisher训练数据线性分类}”)
创建二次判别分类器。
mdlquadratic = fitcdiscr(x,物种,'isstrimtype'那“二次”);
从情节中移除线性边界。
删除(H2);删除(H3);
检索第二类和第三类之间的二次边界的系数。
mdlquadratic.classnames([2 3])
ans =.2x1细胞{'versicolor'} {'virginica'}
k = mdlquadratic.coeffs(2,3).const;l = mdlquadratic.coeffs(2,3).linear;q = mdlquadratic.coeffs(2,3).quadratic;
画出分隔第二和第三类的曲线
f = @(x1,x2)k + l(1)* x1 + l(2)* x2 + q(1,1)* x1。^ 2 +......(Q(1,2)+ Q(2,1))* x1。* x2 + q(2,2)* x2。^ 2;H2 = Fimplic(f,[9 7.1 0 2.5]);H2.COLOR =.'r';h2.linewidth = 2;h2.displayname =.“Versicolor与Virginica的界限”;
检索第一和第二类之间的二次边界的系数。
mdlquadratic.classnames([1 2])
ans =.2x1细胞{' setosa}{“癣”}
k = mdlquadratic.coeffs(1,2).const;l = mdlquadratic.coeffs(1,2).linear;q = mdlquadratic.coeffs(1,2).quadratic;
绘制分隔第一和第二和类的曲线。
f = @(x1,x2)k + l(1)* x1 + l(2)* x2 + q(1,1)* x1。^ 2 +......(Q(1,2)+ Q(2,1))* x1。* x2 + q(2,2)* x2。^ 2;h3 = fimplicit (f。9 7.1 0 1.02]);%绘制曲线的相关部分。H3.Color =.“k”;H3.LineWidth = 2;h3.displayname =.“Versicolor与Setosa之间的界限”;轴([。2. xlabel() xlabel()“瓣长度”) ylabel ('花瓣宽度')标题(“{\bf Fisher训练数据的二次分类}”)举行从