主要内容

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

这个例子展示了如何对Fisher虹膜数据进行线性和二次分类。

加载示例数据。

负载fisheriris

列向量,物种,由三种不同种类的鸢尾花组成,柱头花(setosa)、花斑花(versicolor)、维京花(virginica)。双矩阵由四种花的尺寸组成,萼片和花瓣的长度和宽度分别以厘米为单位。

使用花瓣长度(第三列在)和花瓣宽度(第四列)测量。将这些分别保存为变量PL和PW。

PL =量(:3);PW =量(:4);

绘制数据,显示分类,也就是说,创建一个散点图的测量,按物种分组。

h1 = gscatter (PL、PW物种,“、”“ov ^”[],“关闭”);h1(1)。lineWidth = 2; h1(2).LineWidth = 2; h1(3).LineWidth = 2; legend(“Setosa”“多色的”“Virginica”“位置”“最佳”)举行

图中包含一个轴对象。轴对象包含3个类型为line的对象。这些物品代表了塞托萨,Versicolor,弗吉尼亚。

创建一个线性分类器。

X = (PL (PW);MdlLinear = fitcdiscr (X,物种);

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

MdlLinear。类名(3 [2])
ans =2 x1细胞{“癣”}{' 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 = fimplicit (f。9 7.1 0 2.5]);h2。颜色=“r”;h2。lineWidth = 2; h2.DisplayName =“Versicolor与Virginica的界限”

图中包含一个轴对象。axis对象包含4个类型为line的对象,隐式函数线。这些物体代表Setosa, Versicolor, Virginica, Versicolor & Virginica的边界。

检索第一类和第二类之间的线性边界的系数。

MdlLinear。类名([1 - 2])
ans =2 x1细胞{' setosa}{“癣”}
K = MdlLinear.Coeffs .Const(1、2);L = MdlLinear.Coeffs .Linear(1、2);

画出区分第一类和第二类的曲线。

f = @(x1,x2) K + L(1)*x1 + L(2)*x2;h3 = fimplicit (f。9 7.1 0 2.5]);h3。颜色=“k”;h3。lineWidth = 2; h3.DisplayName =“Versicolor与Setosa之间的界限”;轴([。2. xlabel() xlabel()“花瓣长度”) ylabel (“花瓣宽度”)标题(“{\bf Fisher训练数据线性分类}”

图中包含一个轴对象。坐标轴对象与标题空白L i n e r空白C L s s我f i C t i o n空白w我t h空白f s h e r空白t r我n n g D t包含5线类型的对象,implicitfunctionline。这些物体代表了Setosa, Versicolor, Virginica, Versicolor & Virginica的边界,Versicolor & Setosa的边界。

创建一个二次判别分类器。

MdlQuadratic = fitcdiscr (X,物种,“DiscrimType”“二次”);

从情节中移除线性边界。

删除(h2);删除(h3);

图中包含一个轴对象。坐标轴对象与标题空白L i n e r空白C L s s我f i C t i o n空白w我t h空白f s h e r空白t r我n n g D t包含3线类型的对象。这些物品代表了塞托萨,Versicolor,弗吉尼亚。

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

MdlQuadratic。类名(3 [2])
ans =2 x1细胞{“癣”}{' virginica '}
K = MdlQuadratic.Coeffs .Const(2、3);L = MdlQuadratic.Coeffs .Linear(2、3);Q = MdlQuadratic.Coeffs .Quadratic(2、3);

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

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 = fimplicit (f。9 7.1 0 2.5]);h2。颜色=“r”;h2。lineWidth = 2; h2.DisplayName =“Versicolor与Virginica的界限”

图中包含一个轴对象。坐标轴对象与标题空白L i n e r空白C L s s我f i C t i o n空白w我t h空白f s h e r空白t r我n n g D t包含4线类型的对象,implicitfunctionline。这些物体代表Setosa, Versicolor, Virginica, Versicolor & Virginica的边界。

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

MdlQuadratic。类名([1 - 2])
ans =2 x1细胞{' setosa}{“癣”}
K = MdlQuadratic.Coeffs .Const(1、2);L = MdlQuadratic.Coeffs .Linear(1、2);Q = MdlQuadratic.Coeffs .Quadratic(1、2);

绘制分离第一和第二类的曲线。

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。颜色=“k”;h3。lineWidth = 2; h3.DisplayName =“Versicolor与Setosa之间的界限”;轴([。2. xlabel() xlabel()“花瓣长度”) ylabel (“花瓣宽度”)标题(“{\bf Fisher训练数据的二次分类}”)举行

图中包含一个轴对象。坐标轴对象标题空问u d r t我空白c l s s f i c t i o n空白w我t h空白f s h e r空白t r我n n g d t包含5线类型的对象,implicitfunctionline。这些物体代表了Setosa, Versicolor, Virginica, Versicolor & Virginica的边界,Versicolor & Setosa的边界。

另请参阅

功能

对象

相关的话题