鸢尾花数据的聚类分析和判别分析


摘要:本文基于鸢尾花数据的公开数据集,根据鸢尾花的萼片长度和宽度,花瓣的长度和宽度,对鸢尾花的类别归属进行聚类分析和判别分析。本文使用 R 语言,对鸢尾花的种类进行了聚类分析,并分别使用三种判别分析方法,距离判别法、Bayes 判别法和 Fisher 判别法对鸢尾花的种类归属进行了判别分析。在讨论中,对三个判别模型的判别效果进行了评价,最后使用三个判别模型根据鸢尾花的属性对其类别归属进行了预测。

关键字:聚类分析,距离判别,Bayes 判别,Fisher 判别,分类


引言

鸢尾花有很多种类,有时肉眼也难以辨别,需要专业的知识才能对其所属的种类进行判断。因此研究鸢尾花的分类,根据鸢尾花的某些属性,建立有效的数学模型,对鸢尾花的种类进行分类就显得十分重要。

本文使用鸢尾花的公开数据集,其使用了鸢尾花的萼片长度和宽度,花瓣的长度和宽度等属性,作为鸢尾花种类归属的判别依据。在数据集中,共包含三个种类的鸢尾花,其中每个种类的鸢尾花包含50条数据。在本文的研究和分析中,从各个种类的鸢尾花中选取150条数据进行模型的建立和分析,并使用全部的训练数据进行鸢尾花的种类的分类预测,从而对模型的正确性进行分析。

在现实问题中,对分类问题的分析可以大致分为两类:聚类分析和判别分析。这两者有一个明显的区别,那就是聚类分析是无监督分类,而判别分析是监督分类。判别分析的前提是类别已确定,由已确定的类别及相关数据来拟合模型,从而用模型去预测某一样本点所属的类别。但是聚类分析是对样本进行分类,在聚类分析之前是不知道关于类别的相关信息的,通过模型的拟合去给数据分类,这样我们会对数据有一个整体的印象。当然可以根据聚类的结果来预测新样本点所属的类别,但是判别分析往往可以得到比聚类分析更加精细的分类结果。

在本文的研究中,首先使用聚类分析对数据的整体分类情况有一个大致的了解,后使用三种判别分析方法对数据的分类进行分析。

另外,根据判别总体的数目,判别分析可以分为两个总体的判别分析,和多个总体的判别分析。在本文的研究中,共有三个鸢尾花的类别,所以属于多个总体的判别分析。

聚类分析

对研究对象进行适当的分类,进而发现其规律性,是人们认识世界的一种基本方法。研究怎样对事物进行合理分类的统计方法称为聚类分析。依据分类对象的不同,可以把聚类分析分为Q型聚类和R型聚类。其中Q型聚类是指对样本进行聚类,R型聚类是指对变量进行聚类。

聚类分析的基本原理是将某种性质相似的对象归于同一类,而不同的类之间则存在较大的差异。为此,首先需要能刻画各个变量之间或者各个样本之间的相似性,Q型聚类一般使用"距离"度量样本点之间的相似性,R型聚类一般使用"相似系数"作为变量相似性的度量。而定义样本点之间的距离可以采用欧式距离、Minkowski 距离、马氏距离、Lance 距离等测度,定义各变量之间的相似系数则可以采用样本相关系数、夹角余弦等测度。

系统聚类法是最常用的一种聚类方法。初始时先把要归类的n个对象各自视为一类,然后逐渐把关系最密切的两个类合并成一个新类,直到最后把n个对象都归为一类时停止。

在本文的聚类分析中,使用系统聚类方法进行聚类分析。

判别分析

设样本x可能来自于m个总体,根据样本x的观察值判定其归属,这种统计方法称为判别分析。

距离判别法

距离判别的基本原理是:首先对样本到总体之间的距离进行合理规定,然后依据就近的原则判定样本的归属。为此,首先需要定义合理的距离概念。

最简单的距离定义欧氏距离,其定义如下:

d(x,y)=∑i=1n(xi−yy)2(1)d(x, y) = \sqrt{\sum^n_{i=1}(x_i-y_y)^2} \tag{1}d(x,y)=i=1∑n​(xi​−yy​)2​(1)

但是欧式距离有两个缺点:

(1)各项指标的量纲不同时,其平方和的意义不明。

(2)x与y之间的距离会因各项指标标度单位的变化而变化。

为了克服欧式距离的上述缺陷,可进行无量纲化,由此引入马氏距离,其定义如下:

d(x,y)=(x−y)′Σ−1(x−y)(2)d(x, y) = \sqrt{(x-y)^{'}Σ^{-1}(x-y)} \tag{2}d(x,y)=(x−y)′Σ−1(x−y)​(2)

马氏距离有以下三个特点:

(1)当Σ=IpΣ=I_pΣ=Ip​,即总体x的各项指标相互独立且方差相同时,马氏距离即为欧氏距离。

(2)马氏距离是将x和y经过标准化后的欧式距离。

(3)马氏距离不受变量的量纲的影响,是一个无量纲的量。

在实际应用中,总体均值及协方差矩阵一般都是未知的,可以使用样本均值和样本协方差矩阵作为其估计。样本均值和样本协方差矩阵的无偏估计为:

μ^j=1nj∑i=1nxij,Σ^j=1nj−1∑i=1n(xij−x‾)(xij−x‾)′(3)\hat μ_j = \frac{1}{n_j} \sum^n_{i=1}x_{ij}, \hat Σ_j = \frac{1}{n_j-1} \sum^n_{i=1}(x_{ij}-\overline x)(x_{ij}-\overline x)^{'} \tag{3}μ^​j​=nj​1​i=1∑n​xij​,Σ^j​=nj​−11​i=1∑n​(xij​−x)(xij​−x)′(3)

Bayes 判别法

距离判别法易于理解,计算简单,且可以不涉及总体的分布类型,因此适用面很广。但是这种方法的不足,在于未考虑各个总体各自出现概率的大小,同时也未涉及错判所造成损失的影响。

在实际情况中,在判断一个样品的归属时,既要考虑各个总体出现的概率大小,还需考虑错判所造成的损失影响。基于以上考虑,提出了一种使用先验概率和损失函数的判别方法,即 Bayes 判别法。

设有m个总体G1,G2,……,GmG_1, G_2, ……, G_mG1​,G2​,……,Gm​,他们的密度函数f1(x),f2(x),……,fm(x)f_1(x), f_2(x), ……, f_m(x)f1​(x),f2​(x),……,fm​(x)是互不相同的。并且,假设m个总体各自发生的概率分别为q1,q2,……,qmq_1, q_2, ……, q_mq1​,q2​,……,qm​,称其为先验概率。

用 C(j|i) 表示将本来属于总体GiG_iGi​的样品x错判为属于总体GjG_jGj​造成的损失,且由于正确判断时无损失,即 C(i|i)=0。

对于判别规则,可以看做是对欧式空间的一个划分,即为R1,R2,……,RmR_1, R_2, ……, R_mR1​,R2​,……,Rm​,且满足任意两个划分的交集为空集,所有划分的并集为全集,将判别规则简记为R=(R1,R2,……,Rm)R=(R_1, R_2, ……, R_m)R=(R1​,R2​,……,Rm​)。

错判概率可表示为:

P(j∣i,R)=∫Rjfi(x)dx,i≠j,i,j=1,2,……,m(4)P(j|i, R) = \int_{R_j}f_i(x)dx, i ≠ j, i,j = 1,2,……,m \tag{4}P(j∣i,R)=∫Rj​​fi​(x)dx,i​=j,i,j=1,2,……,m(4)

由m个总体的先验概率,通过判别规则R进行判别可能造成的总平均错判损失为:

ECM(R)=∑i=1mqi∑j=1mC(j∣i)P(j∣i,R)(5)ECM(R) = \sum^m_{i=1}q_i \sum^m_{j=1} C(j|i) P(j|i, R) \tag{5}ECM(R)=i=1∑m​qi​j=1∑m​C(j∣i)P(j∣i,R)(5)

其中 ECM 为 Expected Cost of Misclassification,平均判别代价的缩写。

使 ECM 损失最小的判别规则,即为 Bayes 判别规则。

Fisher 判别法

在距离判别分析和 Bayes 判别分析中,若两个总体服从协方差阵相同的正态分布,则可以导出线性判别函数。对一般的总体,也可以导出类似的线性判别函数,Fisher 判别分析就是这样一种利用投影,借助方差分析思想来导出判别函数的方法。Fisher 判别实际上也是一种降维处理方法。

设有m个总体G1,G2,……,GmG_1, G_2, ……, G_mG1​,G2​,……,Gm​,其相应的总体均值和协方差阵分别为μ1,μ2,……,μmμ_1, μ_2, ……, μ_mμ1​,μ2​,……,μm​和Σ1,Σ2,……,ΣmΣ_1, Σ_2, ……, Σ_mΣ1​,Σ2​,……,Σm​。考虑x的线性函数y=a′xy=a^{'}xy=a′x,其中a是待定向量。在几何上,可以将y看成是x在向量a方向上的投影,通过对y的判别,即可实现对x的分类。

在方差分析中,其基本思想是将所有数据的总离差平方和分解成组内平方和和组间平方和,使用两者的比值大小来衡量总体间的差异大小。令:

B0=a′[∑i=1m(μi−μ‾)(μi−μ‾)′]a=a′Ba(6)B_0 = a^{'}[\sum^m_{i=1} (μ_i-\overline μ) (μ_i-\overline μ)^{'}]a = a^{'}Ba \tag{6}B0​=a′[i=1∑m​(μi​−μ​)(μi​−μ​)′]a=a′Ba(6)

E0=a′(∑i=1mΣi)a=a′Ea(7)E_0 = a^{'}(\sum^m_{i=1} Σ_i)a = a^{'}Ea \tag{7}E0​=a′(i=1∑m​Σi​)a=a′Ea(7)

其中B0B_0B0​为组间平方和,E0E_0E0​为组内平方和。为了使判别函数y=a′xy=a^{'}xy=a′x能较好地判别样品x归属,应选择a尽可能地将各个总体区分开来,使组间平方和尽可能地大,组内平方和尽可能地小,即选取a使两者的比值达到极大。

φ(a)=B0E0=a′Baa′Ea(8)φ(a) = \frac{B_0}{E_0} = \frac{a^{'}Ba}{a^{'}Ea} \tag{8}φ(a)=E0​B0​​=a′Eaa′Ba​(8)

由于使式(8)达到极大的a值不唯一,可加约束条件a′Ea=1a^{'}Ea=1a′Ea=1,即转化为在约束条件a′Ea=1a^{'}Ea=1a′Ea=1下,求a使φ(a)=a′Baφ(a) = a^{'}Baφ(a)=a′Ba,达到极大,求解带约束条件极值问题常用的是 Lagrange 乘数法。

求得,λ是E−1BE^{-1}BE−1B的最大特征值,所对应的特征向量为α,则α′Eα=1α^{'}Eα = 1α′Eα=1,且maxα′Eα=1a′Ba=α′Bα=λmax_{α^{'}Eα = 1} a^{'}Ba = α^{'}Bα = λmaxα′Eα=1​a′Ba=α′Bα=λ,则判别函数为y=α′xy = α^{'}xy=α′x.

其中最大特征值的判别函数为第一判别函数,如果只使用第一判别函数还不能很好地区分各个总体,还可以使用第二大特征值建立第二判别函数,依次类推。

此时,使用r个非零特征值,将原始数据x映射到互不相关的变量y1,y2,……,yry_1, y_2, ……,y_ry1​,y2​,……,yr​来进行判别分析,即相当于把原始数据x的指标压缩成r维指标来进行判别。

逐步判别法

在实际问题中,很难确定哪些指标对于判别分析是主要的,哪些是次要的。考虑的指标过多,会引起计算量过大,而且很多对判别作用较小的指标会干扰视线、模糊认识。而考虑的指标过少,会使判别效果不好。因此,对有关指标变量进行适当筛选是一种很好的处理方法。

具有筛选变量能力的判别法统称为逐步判别法,在本文的实验和分析中未曾实验,故不再赘述。

判别效果的评价

一旦建立了判别法,就要对判别效果进行合理评价。一个好的判别方法,其错判概率应当很小,因此可以用错判概率作为衡量判别法优劣性的标准。以下介绍三种基于错判概率的判别方法,这些方法既不依赖于总体分布,又适合于任何判别法。

方法一:回报法。首先根据两个训练样本建立判别规则,然后对两个训练样本集中的样本逐个进行回报判别。回报法直观且容易计算,但是它往往低估错判概率,除非样本量很大。其根本原因是建立判别法和评价判别法使用的是同一样本。

方法二:交叉验证法。为了克服建立和评价判别法使用同一样本的缺陷,可将样本分成训练样本和验证样本。训练样本用于建立判别法,验证样本用于评价判别法。交叉验证法优于回报法,但是仍存在三个缺陷:(1)要求样本容量很大;(2)训练样本和验证样本的选择有很大的不确定性;(3)因为建立判别规则只使用了部分样本信息,所以有可能漏掉重要信息。

方法三:刀切法。每次剔除一个训练样本进行判别模型的建立,之后使用建立的判别规则对剔除的样本进行判别,重复上述过程直到对每个样本都进行了判别。这个方法优于回报法和交叉验证法,但是运算量较大。

在本文的研究和分析中,使用刀切法,最每个样本的正确性都进行了分类判别和预测。

判别法的优劣除了用错判概率来衡量外,在相当程度上还依赖于所考虑的两个总体之间的分离程度。直观上,两个总体离得越远,就越有可能建立有效的判别法。其中 Fisher 判别法就是基于最大分离原则的一种判别分析方法。


解决问题的方法和计算结果

聚类分析

在对鸢尾花数据集进行判别分析之前,先对数据集的整体进行聚类分析,对数据有一个整体的印象,首先加载 iris 数据集,观察数据集的结构,代码如下:

> # 导入数据
> attach(iris)
> # 查看数据结构
> str(iris)
'data.frame': 150 obs. of  5 variables:$ Sepal.Length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...$ Sepal.Width : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...$ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...$ Petal.Width : num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...$ Species     : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
>

可以看到,鸢尾花数据集中共包含150个样本数据,每条样本包含5个数据,分别为鸢尾花的萼片长度和宽度,花瓣的长度和宽度,和鸢尾花的种类。

首先对数据进行简单的分析,计算均值和标准差,而聚类分析为无监督分类,所以需要事先剔除分类属性,其代码如下:

> # 首先剔除标签数据
> data <- iris[, -5]
> # 然后计算均值和标准差
> mean <- sapply(data, mean)
> sd <- sapply(data, sd)
> mean
Sepal.Length  Sepal.Width Petal.Length  Petal.Width 5.843333     3.057333     3.758000     1.199333
> sd
Sepal.Length  Sepal.Width Petal.Length  Petal.Width 0.8280661    0.4358663    1.7652982    0.7622377
>

之后使用层次聚类方法,对鸢尾花数据集进行聚类分析,由于欧式距离的量纲影响,需要先使用均值和方差对数据进行标准化,其代码如下:

# 将数据进行标准化
scaledata <- scale(data, center=mean, scale=sd)
# 计算欧式距离
dist <- dist(scaledata, method="euclidean")
# 使用 Ward 方法层次聚类
clustemodel <- hclust(dist, method='ward.D')
# 绘制层次聚类图
plot(clustemodel)

绘制出的层次聚类图如下:

在上图的层次聚类图中可以看出,鸢尾花的种类可以大致分为三部分。

判别分析和预测验证

下面使用三种判别分析方法,分别对鸢尾花的种类进行判别分析。

距离判别法

距离判别法需要使用 R 语言的 wmd() 函数,首先需要加载 WMDB 库,其代码如下:

> install.packages("WMDB")
试开URL’https://cran.rstudio.com/bin/macosx/contrib/4.0/WMDB_1.0.tgz'
Content type 'application/x-gzip' length 25581 bytes (24 KB)
==================================================
downloaded 24 KBThe downloaded binary packages are in/var/folders/hh/4qjnrh952nxd77kzd0b4dv2m0000gn/T//RtmpmztD7B/downloaded_packages
>
> library(WMDB)
>

将 iris 数据集分为数据和标签两部分,调用 wmd() 函数进行距离判别分析,其代码如下:

> data = iris[, 1:4]
> data_label = gl(3, 50)
> wmd(data, data_label)1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
blong 1 1 1 1 1 1 1 1 1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  135 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
blong  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  2  2  2  2  2  2  2  2  2  2  2  2  2  2  266 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
blong  2  2  2  3  2  2  2  3  2  2  2  2  3  2  2  2  2  2  3  2  2  2  2  2  2  2  2  2  2  2  297 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
blong  2  2  2   2   3   3   3   3   3   3   2   3   3   3   3   3   3   3   3   3   3   3   3   3121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
blong   3   3   3   3   3   3   3   3   3   2   3   3   3   2   2   3   3   3   3   3   3   3   3144 145 146 147 148 149 150
blong   3   3   3   3   3   3   3
[1] "num of wrong judgement"
[1]  69  73  78  84 107 130 134 135
[1] "samples divided to"
[1] 3 3 3 3 2 2 2 2
[1] "samples actually belongs to"
[1] 2 2 2 2 3 3 3 3
Levels: 1 2 3
[1] "percent of right judgement"
[1] 0.9466667
>

Bayes 判别法

Bayes 判别法需要使用 R 语言的 NaiveBayes() 函数,首先需要加载 klaR 库,其代码如下:

> install.packages("klaR")
also installing the dependencies ‘clipr’, ‘Rcpp’, ‘BH’, ‘assertthat’, ‘fansi’, ‘R.methodsS3’, ‘R.oo’, ‘R.utils’, ‘ellipsis’, ‘pkgconfig’, ‘forcats’, ‘hms’, ‘readr’, ‘tidyselect’, ‘generics’, ‘utf8’, ‘cpp11’, ‘httpuv’, ‘mime’, ‘jsonlite’, ‘xtable’, ‘digest’, ‘R6’, ‘sourcetools’, ‘later’, ‘promises’, ‘crayon’, ‘rlang’, ‘fastmap’, ‘withr’, ‘commonmark’, ‘glue’, ‘backports’, ‘cli’, ‘magrittr’, ‘purrr’, ‘R.cache’, ‘rematch2’, ‘rprojroot’, ‘tibble’, ‘xfun’, ‘e1071’, ‘base64enc’, ‘haven’, ‘dplyr’, ‘lifecycle’, ‘vctrs’, ‘pillar’, ‘tidyr’, ‘shiny’, ‘miniUI’, ‘rstudioapi’, ‘highr’, ‘styler’, ‘classInt’, ‘htmltools’, ‘labelled’, ‘combinat’, ‘questionr’There is a binary version available but the source version is later:binary source needs_compilation
vctrs  0.3.5  0.3.6              TRUEDo you want to install from sources the package which needs compilation? (Yes/no/cancel) yes> library("klaR")
载入需要的程辑包:MASS
>

将 iris 数据集分为数据和标签两部分,调用 NaiveBayes() 函数进行距离判别分析,其代码如下:

> data = iris[, 1:4]
> data_label = gl(3, 50)
> bayes <- NaiveBayes(data, data_label)
> predict(bayes)
$class[1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1[48] 1 1 1 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2[95] 2 2 2 2 2 2 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3
[142] 3 3 3 3 3 3 3 3 3
Levels: 1 2 3

Fisher 判别法

Fisher 判别法需要使用 R 语言的 lda() 函数,首先需要加载 MASS 库,其代码如下:

> library(MASS)
>

调用 lda() 函数建立统计模型,其代码如下:

> fisher.mode <- lda(as.formula("Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width"), data=iris)
> fisher.mode
Call:
lda(as.formula("Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width"), data = iris)Prior probabilities of groups:setosa versicolor  virginica 0.3333333  0.3333333  0.3333333 Group means:Sepal.Length Sepal.Width Petal.Length Petal.Width
setosa            5.006       3.428        1.462       0.246
versicolor        5.936       2.770        4.260       1.326
virginica         6.588       2.974        5.552       2.026Coefficients of linear discriminants:LD1         LD2
Sepal.Length  0.8293776  0.02410215
Sepal.Width   1.5344731  2.16452123
Petal.Length -2.2012117 -0.93192121
Petal.Width  -2.8104603  2.83918785Proportion of trace:LD1    LD2
0.9912 0.0088
>

使用 Fisher 模型进行分类标签的预测和验证,其代码如下:

> pre <- predict(fisher.mode, iris[, -5])
>
> t <- table(pre$class, iris[, 5])
> sum(diag(t)) / sum(t)
[1] 0.98
>
> pre$class[1] setosa     setosa     setosa     setosa     setosa     setosa     setosa     setosa    [9] setosa     setosa     setosa     setosa     setosa     setosa     setosa     setosa    [17] setosa     setosa     setosa     setosa     setosa     setosa     setosa     setosa    [25] setosa     setosa     setosa     setosa     setosa     setosa     setosa     setosa    [33] setosa     setosa     setosa     setosa     setosa     setosa     setosa     setosa    [41] setosa     setosa     setosa     setosa     setosa     setosa     setosa     setosa    [49] setosa     setosa     versicolor versicolor versicolor versicolor versicolor versicolor[57] versicolor versicolor versicolor versicolor versicolor versicolor versicolor versicolor[65] versicolor versicolor versicolor versicolor versicolor versicolor virginica  versicolor[73] versicolor versicolor versicolor versicolor versicolor versicolor versicolor versicolor[81] versicolor versicolor versicolor virginica  versicolor versicolor versicolor versicolor[89] versicolor versicolor versicolor versicolor versicolor versicolor versicolor versicolor[97] versicolor versicolor versicolor versicolor virginica  virginica  virginica  virginica
[105] virginica  virginica  virginica  virginica  virginica  virginica  virginica  virginica
[113] virginica  virginica  virginica  virginica  virginica  virginica  virginica  virginica
[121] virginica  virginica  virginica  virginica  virginica  virginica  virginica  virginica
[129] virginica  virginica  virginica  virginica  virginica  versicolor virginica  virginica
[137] virginica  virginica  virginica  virginica  virginica  virginica  virginica  virginica
[145] virginica  virginica  virginica  virginica  virginica  virginica
Levels: setosa versicolor virginica
> tsetosa versicolor virginicasetosa         50          0         0versicolor      0         48         1virginica       0          2        49
>

讨论

综上所述,使用以上的三种判别分析方法,其对鸢尾花的种类的预测分类结果的正确率均在 95% 以上。其中误判的样本主要分布在 versicolor 和 virginica 这两类,而对 setosa 种类的预测准确率接近 100%。

由聚类分析的数据也可以得出,将鸢尾花种类的变量剔除掉之后,整体数据聚成两类更好。这主要是因为 versicolor 和 virginica 这两类很难用花瓣和花萼来区分。而在判别分析中,我们在已知三类的情况下拟合模型来预测新样本所属的类别,其反映就是在判别分析中就是这两类的误判率较高,而聚类分析中就是这两个被聚成一个大类。


参考文献

[1] 鸢尾花数据集官网. https://archive.ics.uci.edu/ml/datasets/Iris
[2] 鸢尾花数据集. https://gist.github.com/curran/a08a1080b88344b0c8a7
[3] 孙海燕,周梦,李卫国,冯伟. 数理统计[M]. 北京:北京航空航天大学出版社, 2016.
[4] 方小敏,齐德胜,张文霖,冯伟. 谁说菜鸟不会数据分析(R 语言篇)[M]. 电子工 业出版社, 2020.

数理统计:鸢尾花数据的聚类分析和判别分析相关推荐

  1. spss对数据进行聚类分析(系统聚类法和k-均值聚类法)和判别分析(费歇尔和贝叶斯)。

    为了方便大家理解,以三道题为例,实现聚类分析和判别分析的演示. 1. 为了研究世界各国森林.草原资源的分布规律,共抽取了21个国家的数据,每个国家4项指标,原始数据见下表.试用该原始数据对国别进行系统 ...

  2. 判别分析分为r型和q型吗_聚类分析与判别分析

    一.聚类分析的基本思想 1.什么是聚类分析 俗语说,物以类聚.人以群分. 当有一个分类指标时,分类比较容易. 但是当有多个指标,要进行分类就不是很容易了. 比如,要想把中国的县分成若干类,可以按照自然 ...

  3. AI K-means算法对数据进行聚类分析-实验报告

    1. 问题描述及实验要求 K-means算法对data中数据进行聚类分析 (1)算法原理描述 (2)算法结构 (3)写出K-means具体功能函数(不能直接调用sklearn.cluster(Mean ...

  4. 数据建模-聚类分析-K-Means算法 --聚类可视化工具TSNE

    使用TSNE口可视化工具显示 数据建模-聚类分析-K-Means算法 #-*- coding: utf-8 -*-import sys reload(sys) sys.setdefaultencodi ...

  5. 决策树对鸢尾花数据两特征组合分类python代码的结果_机器学习笔记-决策树

    在看决策树之前,先看下之前说过的逻辑回归 上图为判断是否要交往的逻辑回归算法图 把身高,财富,颜值分别与w1,w2,w3相乘求和得到一个结果. (其中w1为高的权重,如果比较在意身高,那么w1就会偏大 ...

  6. python数据挖掘学习笔记】十六.逻辑回归LogisticRegression分析鸢尾花数据

    但是很多时候数据是非线性的,所以这篇文章主要讲述逻辑回归及Sklearn机器学习包中的LogisticRegression算法 #2018-03-28 16:57:56 March Wednesday ...

  7. 幸福指数报告 -- 数据可视化+聚类分析

    幸福指数报告 – 数据可视化+聚类分析 背景描述 <世界幸福报告>是对全球幸福状况的具有里程碑意义的调查,根据其公民对自己的幸福程度对156个国家进行了排名. < 2020年报告&g ...

  8. 基于鸢尾花数据和手写数字,决策树,随机森林,voting,bagging法的比较

    四种方法的具体的原理可以见博文 和西瓜书 先上代码根据结果分析 鸢尾花数据 # evaluate bagging algorithm for classification from numpy imp ...

  9. 基于sklearn随机森林算法对鸢尾花数据进行分类

    随机森林定义 随机森林(Random Forest,RF),顾名思义就是将多棵相互之间并无关联的决策树整合起来形成一个森林,再通过各棵树投票或取均值来产生最终结果的分类器.在介绍随机森林前需要了解几个 ...

最新文章

  1. Android Dialog 弹框之外的区域 默认透明背景色修改
  2. 多线程实现生产者消费者模型
  3. mybatis 分页查询_MyBatis之分页查询:MyBatis PageHelper
  4. 【计组实验】P1 logisim完成单周期处理器开发 MIPS指令集
  5. 开发跨平台app推荐React Native还是flutter?
  6. lte接口流程图_请画出LTE系统的组网图及标注接口。
  7. php system 255,GitHub - dwg255/OA-SYS: OA办公系统开源项目
  8. 内核模块编程之入门(二)—必备知识
  9. Ajax异步与JavaScript的一些初浅认识
  10. 实时搜索专家Krzana正式进军金融大数据市场
  11. ID为GUID类型时使用ObjectDataSource控件的时候的未找到DataObjectTypeName属性的解决方法...
  12. python改变像素点颜色,是否可以在Python中更改单个像素的颜色?
  13. Microsoft.Office.Interop.Excel 报错
  14. 《Http Client 官方文档》7. 高级主题
  15. Ubuntu Linux镜像下载
  16. 数学三角形的所有定理!所有!
  17. 山东农业大学考研计算机专业分数,山东农业大学研究生分数线
  18. 微擎弹出确认授权获取用户头像
  19. Opncv 实现拍照、颜色识别和阈值选取
  20. ie11对html5支持度,html5最新浏览器支持程度比较

热门文章

  1. 当导师加了研究生的微信好友…...哈哈哈哈哈!一脚踩进社交雷区
  2. 【Python爬虫+数据可视化】国内疫情或将零增长,我们离疫情结束有多远?(世界地图)
  3. 数学分析_导函数连续问题分析
  4. 中专技校计算机等级考试时间,中职学业水平考试时间表出炉!
  5. 【转】Vczh Library++ 3.0之可配置语法分析器(设计文法表达式)
  6. 数字图像处理中的斑马线提取
  7. 【实体对齐·BootEA】Bootstrapping Entity Alignment with Knowledge Graph Embedding
  8. ZPLPrinter Emulator SDK for .NET 4.0.22.420
  9. 电商界忙换将拉帮,寒冬来临前的“修身”?
  10. 艺术家林曦老师新书《无用之美》即将发售,其中甘美提前与君共享~