精华内容
下载资源
问答
  • SAS数据分析之判别分析

    千次阅读 2019-02-26 21:56:41
    判别分析与聚类分析有非常类似的特性,因此,在多数数据分析的教材中,这两章是后出现的,简而言之,聚类分析,其实是判别分析的基础,即在聚类分析的基础上,总结出各类的权值,将待判样本与各类权值做对比,...

    判别分析与聚类分析有非常类似的特性,因此,在多数数据分析的教材中,这两章是一前一后出现的,简而言之,聚类分析,其实是判别分析的基础,即在聚类分析的基础上,总结出各类的权值,将待判样本与各类权值做对比,距离最近的,即为一类。
    以下,给出我在判别分析实验中做的一个小例子。

    判别分析

    人文与发展指数是联合国开发计划署于1990年5月发表的第一份《人类发展报告》中公布的。该报告建议,目前对人文发展的衡量指标应当以人生的三大要素为重点。衡量人生的三大要素的指标分别为:实际人均GDP指数、出生时的预期寿命指数、受教育程度指数(由成人识字率指数和综合总人学率指数按2/3、1/3的权重加权而得),将一生三个指数合成为一个指数就是人文发展指数。今从2007年世界各国人文发展指数(2005年)的排序中,选取高发展水平、中等发展水平和低发展水平国家各6个作为三组样品,另选四个国家作为待判样品,资料如下表所示。试用距离判别对以下数据资料进行判别分析,并据此对待选的四个国家进行判别归类,并使用Fisher 判别写出判别函数。
    G 国家 人均GDP(美元) 出生时的预期寿命(岁) 成人识字率(%) 初等、中等和高等教育入学率(%)
    第一类:高发展水平国家 1 美国 41890 77.9 99.5 93.3
    1 德国 29461 79.1 99.2 88
    1 希腊 23381 78.9 96 99
    1 新加坡 29663 79.4 92.5 87.3
    1 意大利 28529 80.3 98.4 90.6
    1 韩国 22029 77.9 99 96
    第二类:中等发展水平国家 2 古巴 6000 77.7 99.8 87.6
    2 罗马尼亚 9060 71.9 97.3 76.8
    2 巴西 8402 71.7 88.6 87.5
    2 泰国 8677 69.6 92.6 71.2
    2 菲律宾 5137 71 92.6 81.1
    2 土耳其 8407 71.4 87.4 68.7
    第三类:低发展水平国家 3 尼泊尔 1550 62.6 48.6 58.1
    3 尼日利亚 1128 46.5 69.1 56.2
    3 喀麦隆 2299 49.8 67.9 62.3
    3 巴基斯坦 2370 64.6 49.9 40
    3 越南 3071 73.7 90.3 63.9
    3 印度尼西亚 3843 69.7 90.4 68.2
    待判组 日本 31267 82.3 99 85.9
    印度 3452 63.7 61 63.8
    中国 6757 72.5 90.9 69.1
    南非 11110 50.8 82.4 77

    这是在判别分析中非常经典的例题,以下给出SAS代码:

    距离判别

    data exp; 
    /*生成训练样本数据集ex_6_2_1; 数据为坐标数据*/
    input g $ name $ x1 x2 x3 x4;
    cards;
    1	美国	41890	77.9	99.5	93.3
    1	德国	29461	79.1	99.2	88
    1	希腊	23381	78.9	96	99
    1	新加坡	29663	79.4	92.5	87.3
    1	意大利	28529	80.3	98.4	90.6
    1	韩国	22029	77.9	99	96
    2	古巴	6000	77.7	99.8	87.6
    2	罗马尼亚	9060	71.9	97.3	76.8
    2	巴西	8402	71.7	88.6	87.5
    2	泰国	8677	69.6	92.6	71.2
    2	菲律宾	5137	71	92.6	81.1
    2	土耳其	8407	71.4	87.4	68.7
    3	尼泊尔	1550	62.6	48.6	58.1
    3	尼日利亚	1128	46.5	69.1	56.2
    3	喀麦隆	2299	49.8	67.9	62.3
    3	巴基斯坦	2370	64.6	49.9	40
    3	越南	3071	73.7	90.3	63.9
    3	印度尼西亚	3843	69.7	90.4	68.2
    ;
    data testexp;    /*生成待判样品数据集ex1*/
    input name $ x1 x2 x3 x4;
    cards;
    日本	31267	82.3	99	85.9
    印度	3452	63.7	61	63.8
    中国	6757	72.5	90.9	69.1
    南非	11110	50.8	82.4	77
    ;
    proc discrim  data=exp testdata=testexp testout=fexp list listerr testlist testlisterr crosslist  crosslisterr ; 
    class g;
    var x1 x2 x3 x4;
    run;
    proc print data=fexp;run;
    

    以下是程序结果:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    Fish判别

    data exp; 
    input g $ name $ x1 x2 x3 x4;
    cards;
    1	美国	41890	77.9	99.5	93.3
    1	德国	29461	79.1	99.2	88
    1	希腊	23381	78.9	96	99
    1	新加坡	29663	79.4	92.5	87.3
    1	意大利	28529	80.3	98.4	90.6
    1	韩国	22029	77.9	99	96
    2	古巴	6000	77.7	99.8	87.6
    2	罗马尼亚	9060	71.9	97.3	76.8
    2	巴西	8402	71.7	88.6	87.5
    2	泰国	8677	69.6	92.6	71.2
    2	菲律宾	5137	71	92.6	81.1
    2	土耳其	8407	71.4	87.4	68.7
    3	尼泊尔	1550	62.6	48.6	58.1
    3	尼日利亚	1128	46.5	69.1	56.2
    3	喀麦隆	2299	49.8	67.9	62.3
    3	巴基斯坦	2370	64.6	49.9	40
    3	越南	3071	73.7	90.3	63.9
    3	印度尼西亚	3843	69.7	90.4	68.2
    ;
    proc candisc data=exp out=outcan simple;
    class g;
    var x1 x2 x3 x4;
    proc print data=outcan;
    run;
    proc plot ;
    plot  can2*can1=g; /*如果不足两个典型变量则不产生散点图*/
    run; 
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    最后四个观测的归类结果为19号(日本)观测为高发展水平国家,第20号(印度)为第3类,即低发展水平国家,21号(中国)和22号(南非)归为中等发展水平国家。

    展开全文
  • 摘要:本文基于鸢尾花数据的公开数据集,根据鸢尾花的萼片长度和宽度,花瓣的长度和宽度,鸢尾花的类别归属进行聚类分析和判别分析。本文使用 R 语言,鸢尾花的种类进行了聚类分析,并分别使用三种判别分析方法...

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


    摘要:本文基于鸢尾花数据的公开数据集,根据鸢尾花的萼片长度和宽度,花瓣的长度和宽度,对鸢尾花的类别归属进行聚类分析和判别分析。本文使用 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(xiyy)2(1)d(x, y) = \sqrt{\sum^n_{i=1}(x_i-y_y)^2} \tag{1}

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

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

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

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

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

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

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

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

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

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

    μ^j=1nji=1nxij,Σ^j=1nj1i=1n(xijx)(xijx)(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}

    Bayes 判别法

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

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

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

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

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

    错判概率可表示为:

    P(ji,R)=Rjfi(x)dx,ij,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}

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

    ECM(R)=i=1mqij=1mC(ji)P(ji,R)(5)ECM(R) = \sum^m_{i=1}q_i \sum^m_{j=1} C(j|i) P(j|i, R) \tag{5}

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

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

    Fisher 判别法

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

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

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

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

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

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

    φ(a)=B0E0=aBaaEa(8)φ(a) = \frac{B_0}{E_0} = \frac{a^{'}Ba}{a^{'}Ea} \tag{8}

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

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

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

    此时,使用r个非零特征值,将原始数据x映射到互不相关的变量y1,y2,,yry_1, y_2, ……,y_r来进行判别分析,即相当于把原始数据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 KB
    
    
    The 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  1
          35 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  2
          66 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  2
          97 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   3
          121 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   3
          144 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              TRUE
    
    Do 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.026
    
    Coefficients 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.83918785
    
    Proportion 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
    > t
                
                 setosa versicolor virginica
      setosa         50          0         0
      versicolor      0         48         1
      virginica       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.

    展开全文
  • spss进行判别分析步骤_spss判别分析结果解释_spss判别分析案例详解 1.Discriminant Analysis判别分析主对话框 如图 1-1 所示 图 1-1 Discriminant Analysis 主对话框 (1)选择分类变量及其范围 在主对话框中...

    spss进行判别分析步骤_spss判别分析结果解释_spss判别分析案例详解

    1.Discriminant Analysis判别分析主对话框 如图 1-1 所示

    图 1-1 Discriminant Analysis 主对话框

    (1)选择分类变量及其范围

    在主对话框中左面的矩形框中选择表明已知的观测量所属类别的变量(一定是离散变量),
    按上面的一个向右的箭头按钮,使该变量名移到右面的Grouping Variable 框中。
    此时矩形框下面的Define Range 按钮加亮,按该按钮屏幕显示一个小对话框如图1-2 所示,供指定该分类变量的数值范围。

    图 1-2 Define Range 对话框

    在Minimum 框中输入该分类变量的最小值在Maximum 框中输入该分类变量的最大值。按Continue 按钮返回主对话框。

    (2)指定判别分析的自变量

    图 1-3 展开 Selection Variable 对话框的主对话框

    在主对话框的左面的变量表中选择表明观测量特征的变量,按下面一个箭头按钮。
    把选中的变量移到Independents 矩形框中,作为参与判别分析的变量。

    (3) 选择观测量

    图 1-4 Set Value 子对话框

    如果希望使用一部分观测量进行判别函数的推导而且有一个变量的某个值可以作为这些观测量的标识,
    则用Select 功能进行选择,操作方法是单击Select 按钮展开Selection Variable。选择框如图1-3 所示。
    并从变量列表框中选择变量移入该框中再单击Selection Variable 选择框右侧的Value按钮,
    展开Set Value(子对话框)对话框,如图1-4 所示,键入标识参与分析的观测量所具有的该变量值,
    一般均使用数据文件中的所有合法观测量此步骤可以省略。

    (4) 选择分析方法

    在主对话框中自变量矩形框下面有两个选择项,被选中的方法前面的圆圈中加有黑点。这两个选择项是用于选择判别分析方法的
    l Enter independent together 选项,当认为所有自变量都能对观测量特性提供丰富的信息时,使用该选择项。选择该项将不加选择地使用所有自变量进行判别分析,建立全模型,不需要进一步进行选择。
    l Use stepwise method 选项,当不认为所有自变量都能对观测量特性提供丰富的信息时,使用该选择项。因此需要判别贡献的大小,再进行选择当鼠标单击该项时Method 按钮加亮,可以进一步选择判别分析方法。

    2.Method对话框 如图 1-5 所示:

    图 1-5 Stepwise Method 对话框

    单击“Method”按钮展开Stepwise Method对话框。

    (1)Method 栏选择进行逐步判别分析的方法

    可供选择的判别分析方法有:
    l Wilks’lambda 选项,每步都是Wilk 的概计量最小的进入判别函数
    l Unexplained variance 选项,每步都是使各类不可解释的方差和最小的变量进入判别函数。
    l Mahalanobis’distance 选项,每步都使靠得最近的两类间的Mahalanobis 距离最大的变量进入判别函数
    l Smallest F ratio 选项,每步都使任何两类间的最小的F 值最大的变量进入判刑函数
    l Rao’s V 选项,每步都会使Rao V 统计量产生最大增量的变量进入判别函数。可以对一个要加入到模型中的变量的V 值指定一个最小增量。选择此种方法后,应该在该项下面的V-to-enter 后的矩形框中输入这个增量的指定值。当某变量导致的V值增量大于指定值的变量后进入判别函数。

    (2) Criteria 栏选择逐步判别停止的判据

    可供选择的判据有:
    l Use F value 选项,使用F值,是系统默认的判据当加人一个变量(或剔除一个变量)后,对在判别函数中的变量进行方差分析。当计算的F值大于指定的Entry 值时,该变量保留在函数中。默认值是Entry为3.84:当该变量使计算的F值小于指定的Removal 值时,该变量从函数中剔除。默认值是Removal为2.71。即当被加入的变量F 值为3.84 时才把该变量加入到模型中,否则变量不能进入模型;或者,当要从模型中移出的变量F值<2.71时,该变量才被移出模型,否则模型中的变量不会被移出.设置这两个值时应该注意Entry值〉Removal 值。 l Use Probability of F选项,用F检验的概率决定变量是否加入函数或被剔除而不是用F值。加入变量的F值概率的默认值是0.05(5%);移出变量的F 值概率是0.10(10%)。Removal值(移出变量的F值概率) >Entry值(加入变量的F值概率)。

    (3) Display栏显示选择的内容

    对于逐步选择变量的过程和最后结果的显示可以通过Display 栏中的两项进行选择:
    l Summary of steps 复选项,要求在逐步选择变量过程中的每一步之后显示每个变量的统计量。
    l F for Pairwise distances 复选项,要求显示两两类之间的两两F 值矩阵。

    3.Statistics对话框 指定输出的统计量如图1-6 所示:

    图 1-6 Statistics 对话框

    可以选择的输出统计量分为以下3 类:

    (l) 描述统计量
    在 Descriptives 栏中选择对原始数据的描述统计量的输出:
    l Means 复选项,可以输出各类中各自变量的均值MEAN、标准差std Dev 和各自变量总样本的均值和标准差。
    l Univariate ANOV 复选项,对各类中同一自变量均值都相等的假设进行检验,输出单变量的方差分析结果。
    l Box’s M 复选项,对各类的协方差矩阵相等的假设进行检验。如果样本足够大,表明差异不显著的p 值表明矩阵差异不明显。

    (2) Function coefficients 栏:选择判别函数系数的输出形式
    l Fisherh’s 复选项,可以直接用于对新样本进行判别分类的费雪系数。对每一类给出一组系数。并给出该组中判别分数最大的观测量。
    l Unstandardized 复选项,未经标准化处理的判别系数。

    (3) Matrices 栏:选择自变量的系数矩阵
    l Within-groups correlation matrix复选项,即类内相关矩阵,
    它是根据在计算相关矩阵之前将各组(类)协方差矩阵平均后计算类内相关矩阵。
    l Within-groups covariance matrix复选项,即计算并显示合并类内协方差矩阵,
    是将各组(类)协方差矩阵平均后计算的。区别于总协方差阵。
    l Separate-groups covariance matrices复选项,对每类输出显示一个协方差矩阵。
    l Total covariance matrix复选项,计算并显示总样本的协方差矩阵。

    4.Classification 对话框指定分类参数和判别结果 如图1-7 所示

    图 1-7 Classification 对话框

    5.Save对话框,指定生成并保存在数据文件中的新变量。如图1-8 所示:

    图 1-8 Save 对话框数据分析培训

    6.选择好各选择项之后,点击“OK”按钮,提交运行Discriminant过程。

    转载于:https://www.cnblogs.com/amengduo/p/9587234.html

    展开全文
  • 线性判别分析(Linear Discriminant Analysis,简称LDA)是种经典的线性学习方法,在二分类问题.上因为最早由[Fisher, 1936]提出,亦称“Fisher判别分析”。 LDA的基本思想:给定训练样例集,设法将样例投影到条直线上...

    本博客运行环境为Jupyter Notebook、Python3。使用的数据集是鸢尾花数据集。

    线性判别分析

    线性判别分析(Linear Discriminant Analysis,简称LDA)是一种经典的线性学习方法,在二分类问题.上因为最早由[Fisher, 1936]提出,亦称“Fisher判别分析”。
    LDA的基本思想:给定训练样例集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能接近、异类样例的投影点尽可能远离;在对新样本进行分类时,将其投影到同样的这条直线上,再根据投影点的位置来确定新样本的类别。
    下图是LDA的二维示意图,“+”、“-”分别代表正倒和反倒,椭圆表示数据簇的外轮廓,虚线表示投影,红色实心圆和实心三角形分别表示两类样本投影后的中心点。
    在这里插入图片描述

    线性判别函数的一般形式可以表示为:
    g(X)=WTX+w0 g(X)=W^TX+w_{0}
    其中,
    在这里插入图片描述

    Fisher选择投影方向W的原则,即使原样本向量在该方向上的投影能兼顾类间分布尽可能分开,类内样本投影尽可能密集的要求。

    (1)W的确定
    各类样本均值向量mi
    在这里插入图片描述
    样本类内离散度矩阵 Si 和总类内离散度矩阵 Sw
    在这里插入图片描述
    样本类间离散度矩阵 Sb
    在这里插入图片描述
    在投影后的一维空间中,各类样本均值
    在这里插入图片描述
    样本类内离散度和总类内离散度
    在这里插入图片描述
    样本类间离散度
    在这里插入图片描述
    Fisher准则函数为
    在这里插入图片描述

    (2)阈值的确定
    W0 是个常数,称为阈值权,对于两类问题的线性分类器可以采用下属决策规则:
    在这里插入图片描述
    如果g(x)>0,则决策x属于W1;如果g(x)<0,则决策x属于W2;如果g(x)=0,则可将x任意分到某一类,或拒绝。

    (3)Fisher线性判别的决策规则
    Fisher准则函数满足两个性质:
    1.投影后,各类样本内部尽可能密集,即总类内离散度越小越好。
    2.投影后,各类样本尽可能离得远,即样本类间离散度越大越好。
    根据性质确定准则函数,根据使准则函数取得最大值,可求出
    在这里插入图片描述
    这就是Fisher判别准则下的最优投影方向。
    得到决策规则
    在这里插入图片描述
    若上述规则成立,则有
    在这里插入图片描述
    对于某一个未知类别的样本向量x,如果y=WT·x>y0,则x∈w1;否则x∈w2。

    (4)“群内离散度”与“群间离散度”
    “群内离散度”要求的是距离越远越好;而“群间离散度”的距离越近越好。
    “群内离散度”(样本类内离散矩阵)的计算公式为
    Si=xXi(xmi)(xmi)TS_i=\sum_{x∈X_i}(x-m_i)(x-m_i)^T
    因为每一个样本有多维数据,因此需要将每一维数据代入公式计算后最后在求和即可得到样本类内离散矩阵。存在多个样本,重复该计算公式即可算出每一个样本的类内离散矩阵。
    “群间离散度”(总体类离散度矩阵)的计算公式为
    Swij=Si+Sj S_wij=S_i+S_j

    代码实现

    例如鸢尾花数据集,将数据集分为三类样本,然后得到三个总体类离散度矩阵,三个总体类离散度矩阵根据上述公式计算即可。
    IRIS数据集以鸢尾花的特征作为数据来源,数据集包含150个数据集,有4维,分为3 类,每类50个数据,每个数据包含4个属性,是在数据挖掘、数据分类中非常常用的测试集、训练集。
    Python代码如下:
    df = pd.read_csv(r’Iris.csv’,header = None)这句是数据集存储路径,我已将数据集保存为.csv文件,需要修改为自己的路径。若使用sklearn库引用可以参看后面的代码。

    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt 
    import seaborn as sns
    
    #path=r'Iris.csv'
    #df = pd.read_csv(path, header=None)
    df = pd.read_csv(r'Iris.csv',header = None)
    Iris1=df.values[0:50,0:4]
    Iris2=df.values[50:100,0:4]
    Iris3=df.values[100:150,0:4]
    m1=np.mean(Iris1,axis=0)
    m2=np.mean(Iris2,axis=0)
    m3=np.mean(Iris3,axis=0)
    s1=np.zeros((4,4))
    s2=np.zeros((4,4))
    s3=np.zeros((4,4))
    for i in range(0,30,1):
        a=Iris1[i,:]-m1
        a=np.array([a])
        b=a.T
        s1=s1+np.dot(b,a)    
    for i in range(0,30,1):
        c=Iris2[i,:]-m2
        c=np.array([c])
        d=c.T
        s2=s2+np.dot(d,c) 
        #s2=s2+np.dot((Iris2[i,:]-m2).T,(Iris2[i,:]-m2))
    for i in range(0,30,1):
        a=Iris3[i,:]-m3
        a=np.array([a])
        b=a.T
        s3=s3+np.dot(b,a) 
    sw12=s1+s2
    sw13=s1+s3
    sw23=s2+s3
    #投影方向
    a=np.array([m1-m2])
    sw12=np.array(sw12,dtype='float')
    sw13=np.array(sw13,dtype='float')
    sw23=np.array(sw23,dtype='float')
    #判别函数以及T
    #需要先将m1-m2转化成矩阵才能进行求其转置矩阵
    a=m1-m2
    a=np.array([a])
    a=a.T
    b=m1-m3
    b=np.array([b])
    b=b.T
    c=m2-m3
    c=np.array([c])
    c=c.T
    w12=(np.dot(np.linalg.inv(sw12),a)).T
    w13=(np.dot(np.linalg.inv(sw13),b)).T
    w23=(np.dot(np.linalg.inv(sw23),c)).T
    #print(m1+m2) #1x4维度  invsw12 4x4维度  m1-m2 4x1维度
    T12=-0.5*(np.dot(np.dot((m1+m2),np.linalg.inv(sw12)),a))
    T13=-0.5*(np.dot(np.dot((m1+m3),np.linalg.inv(sw13)),b))
    T23=-0.5*(np.dot(np.dot((m2+m3),np.linalg.inv(sw23)),c))
    kind1=0
    kind2=0
    kind3=0
    newiris1=[]
    newiris2=[]
    newiris3=[]
    for i in range(30,50):
        x=Iris1[i,:]
        x=np.array([x])
        g12=np.dot(w12,x.T)+T12
        g13=np.dot(w13,x.T)+T13
        g23=np.dot(w23,x.T)+T23
        if g12>0 and g13>0:
            newiris1.extend(x)
            kind1=kind1+1
        elif g12<0 and g23>0:
            newiris2.extend(x)
        elif g13<0 and g23<0 :
            newiris3.extend(x)
    #print(newiris1)
    for i in range(30,50):
        x=Iris2[i,:]
        x=np.array([x])
        g12=np.dot(w12,x.T)+T12
        g13=np.dot(w13,x.T)+T13
        g23=np.dot(w23,x.T)+T23
        if g12>0 and g13>0:
            newiris1.extend(x)
        elif g12<0 and g23>0:
     
            newiris2.extend(x)
            kind2=kind2+1
        elif g13<0 and g23<0 :
            newiris3.extend(x)
    for i in range(30,50):
        x=Iris3[i,:]
        x=np.array([x])
        g12=np.dot(w12,x.T)+T12
        g13=np.dot(w13,x.T)+T13
        g23=np.dot(w23,x.T)+T23
        if g12>0 and g13>0:
            newiris1.extend(x)
        elif g12<0 and g23>0:     
            newiris2.extend(x)
        elif g13<0 and g23<0 :
            newiris3.extend(x)
            kind3=kind3+1
    correct=(kind1+kind2+kind3)/60
    print("样本类内离散度矩阵S1:",s1,'\n')
    print("样本类内离散度矩阵S2:",s2,'\n')
    print("样本类内离散度矩阵S3:",s3,'\n')
    print('-----------------------------------------------------------------------------------------------')
    print("总体类内离散度矩阵Sw12:",sw12,'\n')
    print("总体类内离散度矩阵Sw13:",sw13,'\n')
    print("总体类内离散度矩阵Sw23:",sw23,'\n')
    print('-----------------------------------------------------------------------------------------------')
    print('判断出来的综合正确率:',correct*100,'%')
    
    

    sklearn库引入数据集:
    只需替换引入数据集的部分代码。

    from sklearn.datasets import make_multilabel_classification
    from sklearn import datasets
    
    
    iris_datas = datasets.load_iris()
    x, y = make_multilabel_classification(n_samples=20, n_features=2,
                                          n_labels=1, n_classes=1,
                                          random_state=2)  # 设置随机数种子,保证每次产生相同
    

    运行结果如下:
    在这里插入图片描述

    缺少一组数据的问题已解决!代码已更新!

    原始代码主要是文件导入那儿的问题。header=0改为header=None;如果还有错,需要把path更改为df = pd.read_csv(r’Iris.csv’,header = None),直接使用数据集。

    我这输出的综合准确率只有91.6%,而有些同学比较好的能有96.7%。我一开始怀疑是数据集少了一组数据的原因,后面发现确实少了一组数据,在excel中打开数据集完整,但是运行起来就少一组。但别人使用该数据集时没有出现这种情况。我只好换成sklearn引入数据集,然而输出结果是一致的。不得而解。若有知道该问题的小伙伴,希望可以指导我一下哦。
    在这里插入图片描述

    参考教程:机器学习-西瓜书-周志华

    展开全文
  • 判别分析基础

    千次阅读 2016-03-29 12:46:57
    在实际中判别分析和聚类分析往往联合起来用,当总体分类不清楚时,可先用聚类分析对原来的批样品进行分类,然后再用判别分析建立判别式以对新样品进行判别。 判别分析基本思想:样品和哪个总体距离最近,就判断它...
  • 根据生化指标胃病患者进行判别 、导入数据并查看数据情况: 1、数据总体状况: 其中Group表示病人胃病类型。 2、更改变量名:把x1,x2,x3,x4改成具有意义的变量名并且修改变量度量类型,如下图所示: ...
  • SPSS(十六)SPSS之判别分析(图文+数据集)

    万次阅读 多人点赞 2019-06-08 21:31:07
    判别分析又称“分辨法”,是在分类确定的条件下,根据某研究对象的各种特征值判别其类型归属问题的种多变量统计分析方法。 聚类分析与判别分析的区别与联系 都是研究分类的,在进行聚类分析前,总体到底有几...
  • 判别分析

    千次阅读 2015-11-15 15:15:26
    主成分分析、因子分析和典型相关分析判别分析判别分析是用以判别个体所属群体的统计方法;判别分析又称为“分辨法”,是在分类确定的条件下,根据某研究对象的各种特征值判别其类型归属问题的种多变量统计...
  • 、导入数据并查看数据情况: 1、数据总体状况: 其中Group表示病人胃病...可以看到数据的分布没有特别的离异点,也没有缺失值和不合理的分布,从而可以用该数据做接下来的距离判别分析。 4、由于后续做判别...
  • 1. 目的不同: 因子分析把诸多变量看成由个变量都有作用的一些公共因子和仅个变量有作用的特殊因子线性组合而成,因此就是要从数据中控查出变量起解释作用的公共因子和特殊因子以及其组合系数;...
  • 线性判别分析(Linear Discriminate Analysis, LDA)通过正交变换将一组可能存在相关性的变量降维变量,目标是将高维数据投影至低维后,同类的数据之间距离尽可能近、不同类数据之间距离尽可能远。 应用场景: ...
  • 二次判别分析(QDA)是LDA的变体,允许数据的非线性分离。最后,正则化判别分析(RDA)是LDA和QDA之间的折衷。 本文主要关注LDA,并探讨其在理论和实践中作为分类和可视化技术的用途。由于QDA和RDA是相关技术,我...
  • R语言判别分析

    万次阅读 多人点赞 2017-02-27 17:07:54
    部分参考薛毅的《统计建模与R软件》和《R语言实战》本文中分三个方法介绍判别分析,Bayes判别,距离判别,Fisher判别。前两种判别方法都要考虑两个、或多个总体协方差(这里是算方差,方差是协方差的种)相等或...
  • SPSS(十七)SPSS之判别分析进阶(图文+数据集) 为什么会有这些新模型的出现? 树模型结构 神经网络模型 传统模型的局限 任何统计模型都是现实世界复杂联系的简化 统计理论假设任何个随机现象的估计,都...
  • 二次判别分析(QDA)是LDA的变体,允许数据的非线性分离。最后,正则化判别分析(RDA)是LDA和QDA之间的折衷。 本文主要关注LDA,并探讨其在理论和实践中作为分类和可视化技术的用途。由于QDA和RDA是相关技术,我...
  • 、相关分析
  • 文章目录判别分析判别分析的基本思想距离判别两总体情况多总体情况贝叶斯判别费歇判别逐步判别 判别分析 本章介绍的判别分析适用于被解释变量是非度量变量的情形。在这种情况下,人们对于预测和解释影响个对象...
  • 判别分析实例

    千次阅读 2011-04-24 17:08:00
    转自课件: 简介: 判别分析(Discriminate Analysis)是用以判别个体所属类体的种统计方法,它根据已掌握类别信息,建立判别准则(判别函数),进而来判别未知样本所属的类别。判别分析的方法...
  • R语言 判别分析小结

    千次阅读 2017-02-18 14:57:35
    判别分析(discriminant analysis)是种分类技术。它通过个已知类别的“训练样本”来建立判别准则,并通过预测变量来为未知类别的数据进行分类。判别分析的方法大体上有三类,即距离判别、Fisher判别和Bayes判别...
  • 线性判别分析

    千次阅读 2016-11-24 20:33:22
    线性判别分析(Linear Discriminant Analysis) 标签(空格分隔): 监督学习 @author : duanxxnj@163.com @time : 2016-07-11 线性判别分析Linear Discriminant Analysis 线性分类器 判别式...
  • 但是,判别分析是已知分类然后总结出判别规则,是种有指导的学习;而聚类分析则是有了批样本,不知道它们的分类,甚至连分成几类也不知道,希望用某种方法把观测进行合理的分类,使得同类的观测比较接近,不同...
  • 1.3-判别分析

    千次阅读 2018-07-09 16:39:40
    判别分析 判别分析方法最初应用于考古学, 例如...判别分析种在一些已知研究对象用某种方法已经分成若干类的情况下,确定新的样品的观测数据属于哪类的统计分析方法。 栗子:肝病的判别、地震的判别等。 为...
  • 我们要将数据在低维度上进行投影,投影后希望每种类别数据的投影点尽可能的接近,而不同类别的数据的类别中心之间的距离尽可能的大。 二、LDA vs PCA LDA用于降维,和PCA有很多相同,也有很多不同的地方,因此...
  • 13 MATLAB判别分析

    万次阅读 多人点赞 2017-05-06 14:47:00
    判别分析未知类别的样本进行归类的种方法。虽然也是样品进行分类,但它与聚类分析还是不同的。聚类分析的研究对象还没有分类,就是要根据抽样的样本进行分类,而判别分析的研究对象已经有了分类,只是根据...
  • (1)一组数据用不同的符号做两变量的散点图,观察它们在平面上的散布情况,并判断该组数据做判别分析是否合适; (2)分别建立距离判别(等方差和不等方差)、Fisher判别和Bayes判别分析模型,计算各自的判别符
  • 线性判别分析(Linear Discriminant Analysis)

    万次阅读 多人点赞 2016-07-11 16:34:37
    从贝叶斯公式出发,得到了线性判别分析的公式,这里从另外个角度来看线性判别分析,也就是常说的Fisher判别式。其实Fisher判别式就是线性判别分析(LDA),只是在讨论Fisher判别式的时候,更侧重于LDA的数据降维的...
  • matlab距离判别分析的应用

    千次阅读 2019-07-25 19:25:50
    距离判别法:距离判别分析方法是判别样品所属类别的应用性很强的多因素决方法,其中包括两个样本总体距离判别法,多个样本距离判别法。 多个总体距离判别法:多个总体距离判别法是距离判别法的种,是两个总体距离...
  • 主成分分析(PCA)和线性判别分析(LDA)原理简介

    万次阅读 多人点赞 2018-02-04 21:58:53
    本文整理自下面的博客,PCA和LDA的原理进行介绍,并对比了其不同点。 1).主成分分析(PCA)原理详解 2).线性判别分析LDA与主成分分析PCA 3). PCA(主成成分分析)和LDA(线性判别分析)详解-共性和区别 4).什么...
  • 判别分析|R语言

    千次阅读 2017-06-16 17:22:15
    判别分析(discriminant analysis)属于种分类方法,根据已知类别的样本提供的信息,总结出分类的规律性,建立判别准则,新的样本将按照这种判别准则进行分类。根据判别的类别来分,判别分析分为两组判别和多...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,614
精华内容 10,645
关键字:

对一组数据进行判别分析