主要内容

创建和可视化判别分析分类器

此示例显示如何执行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'“位置”'最好')举行

图中包含一个坐标轴。轴包含3个类型的线。这些对象代表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);

画出分隔第二和第三类的曲线

K. + [ X 1 X 2 ] L. = 0.

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的界限”

图中包含一个坐标轴。轴包含4个类型的型号,ImplicitFunctionLine。这些对象代表Setosa,Versicolor,Virginica,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训练数据线性分类}”

图中包含一个坐标轴。具有标题{\ bf线性分类的轴包含Fisher培训数据}包含5型对象,ImplicitFunctionLine。这些对象代表Setosa,Versicolor,Virginica,Versicolor&Virginica之间的边界,Versicolor&Setosa之间的边界。

创建二次判别分类器。

mdlquadratic = fitcdiscr(x,物种,'isstrimtype'“二次”);

从情节中移除线性边界。

删除(H2);删除(H3);

图中包含一个坐标轴。具有标题{\ BF线性分类的轴包含Fisher培训数据}包含3个类型的类型。这些对象代表Setosa,Versicolor,Virginica。

检索第二类和第三类之间的二次边界的系数。

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;

画出分隔第二和第三类的曲线

K. + [ X 1 X 2 ] L. + [ X 1 X 2 ] 问: [ X 1 X 2 ] = 0.

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的界限”

图中包含一个坐标轴。标题为{\bf Fisher Training Data Linear Classification}的坐标轴包含line、implicitfunctionline类型的4个对象。这些对象代表Setosa,Versicolor,Virginica,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训练数据的二次分类}”)举行

图中包含一个坐标轴。具有标题{\ bf二次分类的轴,具有Fisher培训数据}包含5型对象,ImplicitCunctionLine。这些对象代表Setosa,Versicolor,Virginica,Versicolor&Virginica之间的边界,Versicolor&Setosa之间的边界。

也可以看看

功能

对象

相关的话题