精华内容
下载资源
问答
  • 关联分析具体案例
    万次阅读 多人点赞
    2021-01-21 16:38:51

    灰色关联分析

      灰色关联分析的基本思想 是根据序列曲线几何形状的相似程度来判断其联系是否紧密,曲线越接近,相应序列之间的关联度就越大,反之则越小。

      此方法可用于 进行系统分析,也可应用于对问题 进行综合评价



    一、概述

      一般的抽象系统,如社会系统、经济系统、农业系统、生态系统、教育系统等都包含有许多种因素,多种因素共同作用的结果决定了该系统的发展态势。人们常常希望知道在众多的因素中,哪些是主要因素,哪些是次要因素;哪些因素对系统发展影响大,哪些因素对系统发展影响小;哪些因素对系统发展起推动作用需强化发展,哪些因素对系统发展起阻碍作用需加以抑制;这些都是系统分析中人们普遍关心的问题。例如,粮食生产系统,人们希望提高粮食总产量,而影响粮食总产量的因素是多方面的,有播种面积以及水利、化肥、土壤、种子、劳力、气候、耕作技术和政策环境等。为了实现少投人多产出,并取得良好的经济效益、社会效益和生态效益,就必须进行系统分析。


    二、模型实现

    灰色关联分析步骤实现大致分为以下几个步骤:

    1. 指标正向化
    2. 确定分析数列
    3. 对变量进行预处理
    4. 计算子序列中各个指标与母序列的关联系数
    5. 计算灰色关联度,并得出结论

    在实际建模中,以上步骤不是特别固定,要根据实际的问题进行分析,下面拿两道例题进行说明。


    1. 应用一:进行系统分析

      下表为某地区国内生产总值的统计数据(以百万元计),问该地区从 2000 年到 2005 年之间,哪一种产业对 GDP 总量影响最大。
    在这里插入图片描述


    第一步:指标正向化

     所谓正向化处理,就是将极小型、中间型以及区间型指标统一转化为极大型指标。具体的正向化方法请查看:TOPSIS法(优劣解距离法)

     最终得到正向化处理的矩阵为X:
    X = [ x 11 x 12 ⋯ x 1 m x 21 x 22 ⋯ x 2 m ⋮ ⋮ ⋱ ⋮ x n 1 x n 2 ⋯ x n m ] X= \begin{bmatrix} x_{11} & x_{12} & \cdots &x_{1m} \\ x_{21}& x_{22} & \cdots &x_{2m} \\ \vdots & \vdots & \ddots & \vdots \\ x_{n1}& x_{n2} & \cdots &x_{nm} \end{bmatrix} X=x11x21xn1x12x22xn2x1mx2mxnm

    因为指标变量 国内产值、第一产业、第二产业、第三产业 都是为正向化指标,因此无需正向化。


    第二步:确定分析数列

    1. 母序列(又称参考数列,母指标):能反映系统应为特征的数据序列,其类似于因变量 Y Y Y,此处记为 x 0 x_0 x0
    2. 子序列(又称比较数列,子指标):影响系统行为的因素组成的数据序列,其类似于自变量 X X X,此处级位 ( x 1 , x 2 , ⋯   , x m ) (x_1,x_2,\cdots,x_m) x1,x2,,xm

    在本例中,国内总产值就是母序列,第一、第二和第三产业就是子序列。


    第三步:对变量进行预处理

    对变量进行预处理的目的:1. 去除量纲的影响 2. 缩小变量范围简化计算

      对母序列和子序列中的每个指标进行预处理,先求出每个指标的均值,再用该指标中的每个元素都除以其均值。

    设标准化矩阵为 Z Z Z Z Z Z 中元素记为 z i j z_{ij} zij
    z i j = x i j x ˉ i j z_{ij}=\frac{x_{ij}}{\bar x_{ij}} zij=xˉijxij
    得到标准化矩阵 Z:
    Z = [ z 11 z 12 ⋯ z 1 m z 21 z 22 ⋯ z 2 m ⋮ ⋮ ⋱ ⋮ z n 1 z n 2 ⋯ z n m ] Z= \begin{bmatrix} z_{11} & z_{12} & \cdots &z_{1m} \\ z_{21}& z_{22} & \cdots &z_{2m} \\ \vdots & \vdots & \ddots & \vdots \\ z_{n1}& z_{n2} & \cdots &z_{nm} \end{bmatrix} Z=z11z21zn1z12z22zn2z1mz2mznm

    本例中,得到的最终标准化矩阵矩阵为:
    在这里插入图片描述


    第四步:计算子序列中各个指标与母序列的关联系数

    定义灰色系数,即各指标的关联系数为:
    y ( x 0 ( k ) , x i ( k ) ) = a + ρ b ∣ x 0 ( k ) − x i ( k ) ∣ + ρ b ( i = 1 , 2 , ⋯   , m , k = 1 , 2 , ⋯   , n ) y(x_0(k),x_i(k))=\frac{a+\rho b}{\mid x_0(k)-x_i(k)\mid + \rho b}\quad( i=1,2,\cdots,m,\quad k=1,2,\cdots,n) y(x0(k),xi(k))=x0(k)xi(k)+ρba+ρb(i=1,2,,m,k=1,2,,n)

    其中a 为两极最小差,b 为两极最大差,ρ 为分辨系数(一般取值0.5)

    a = m i n i m i n k ∣ x 0 ( k ) − x i ( k ) ∣ b = m a x i m a x k ∣ x 0 ( k ) − x i ( k ) ∣ a=\mathop{min}\limits_{i}\mathop{min}\limits_{k} \mid x_0(k) -x_i(k)\mid\\ b=\mathop{max}\limits_{i}\mathop{max}\limits_{k} \mid x_0(k) -x_i(k)\mid a=iminkminx0(k)xi(k)b=imaxkmaxx0(k)xi(k)

    那么根据以上步骤首先得出中间的差值矩阵:
    在这里插入图片描述
    根据以上矩阵得出 两级最小差 a a a = 0.0006,两级最大差 b b b = 0.1862。

    最后根据关联系数公式,最终计算得出关联系数矩阵:

    在这里插入图片描述

    举例说明: 0.4751 = ( a + ρ b ) ( ∣ x 0 ( 1 ) − x 1 ( 1 ) ∣ + ρ b ) = ( 0.0006 + 0.5 × 0.1862 ) ( 0.1041 + 0.5 × 0.1862 ) 0.4751 = \frac{( a + ρb ) }{( | x_0(1)-x_1(1) | + ρb )} = \frac{( 0.0006 + 0.5×0.1862)}{(0.1041 + 0.5×0.1862)} 0.4751=(x0(1)x1(1)+ρb)(a+ρb)=(0.1041+0.5×0.1862)(0.0006+0.5×0.1862)


    第五步:计算灰色关联度,并得出结论

    定义 y ( x 0 , x i ) y(x_0, x_i) y(x0,xi) 为灰色关联度,即将关联系数矩阵每列求均值。

    y ( x 0 , x i ) = 1 n ∑ k = 1 n y ( x 0 ( k ) , x i ( k ) ) y(x_0,x_i)=\frac{1}{n}\sum_{k=1}^{n}{y(x_0(k),x_i(k))} y(x0,xi)=n1k=1ny(x0(k),xi(k))

    那么我们得出: y ( x 0 , x 1 ) = 0.5084 , y ( x 0 , x 2 ) = 0.6243 , y ( x 0 , x 3 ) = 0.7573 。 y(x_0, x_1)= 0.5084,y(x_0, x_2) = 0.6243,y(x_0, x_3) = 0.7573。 y(x0,x1)=0.5084y(x0,x2)=0.6243y(x0,x3)=0.7573

    最终我们得出该地区在2000年至2005年间的国内总产值受第三产业影响最大。


    2. 应用二:进行综合评价问题

    综合评价问题的步骤大致分为以下几步:

    1. 对指标进行正向化
    2. 对正向化矩阵进行预处理
    3. 将预处理后的具有真每一行取出最大值构成母序列
    4. 计算各个指标与母序列的灰色关联度
    5. 计算各个指标的权重
    6. 计算每个评价对象的得分

      上面步骤加红的部分,值得注意,当指标间没什么关系的时候,选择每行中最大的构成母序列。

      前四步,与上文的应用一对应,接下来求得指标的权重是将求得的灰色关联度进行归一化。然后计算每个评价对象的得分。上文我们通过标准化处理得到标准化矩阵 Z:
    Z = [ z 11 z 12 ⋯ z 1 m z 21 z 22 ⋯ z 2 m ⋮ ⋮ ⋱ ⋮ z n 1 z n 2 ⋯ z n m ] Z= \begin{bmatrix} z_{11} & z_{12} & \cdots &z_{1m} \\ z_{21}& z_{22} & \cdots &z_{2m} \\ \vdots & \vdots & \ddots & \vdots \\ z_{n1}& z_{n2} & \cdots &z_{nm} \end{bmatrix} Z=z11z21zn1z12z22zn2z1mz2mznm

    最后计算每个评价对象的得分:
    S k = ∑ i = 1 m Z k i ω i , k = 1 , 2 , ⋯   , n S_k=\sum_{i=1}^{m}{Z_{ki}\omega_i},\quad k=1,2,\cdots,n Sk=i=1mZkiωi,k=1,2,,n


    三、模型扩展(★)

    1. 选择用标准化回归或者灰色关联分析的具体时机:
      当样本个数 n 较大时,一般使用标准化回归。当样本个数较少时,选择使用灰色关联分析。
    2. 如果母序列中含有多个指标应如何分析?
      例如:Y1 和 Y2 是母序列,X1,X2,…,Xm 是子序列。那么应首先计算 Y1 和 X1,X2,…,Xm 的灰色关联度进行分析,然后再计算 Y2 和 X1,X2,…,Xm 的灰色关联度进行分析。
    3. 灰色关联分析与熵权法都可进行客观的赋权,主要区别在于熵权法是根据数据的变异程度进行赋权,而灰色关联分析是根据序列几何形状的相似程度来进行赋权。这里推荐用熵权法,如果要用灰色关联分析,那么就需要有相应的统计图,这样更具说服力。
    4. 灰色数学的相关概念是国人提出来的,美赛不建议用!

      本文借鉴了数学建模清风老师的课件与思路,如果大家发现文章中有不正确的地方,欢迎大家在评论区留言,也可以点击查看下方链接查看清风老师的视频讲解~

    原文链接:https://www.bilibili.com/video/BV1DW411s7wi

    更多相关内容
  • 运用灰色关联理论对未来的订单作出预测判断,结合具体实例进行分析
  • 关联规则分析

    千次阅读 2022-02-19 14:20:51
    Y含义事务仅包含其涉及到的项目,而不包含项目的具体信息支持度 (support)置信度 (confidence)提升度 (lift)三、实验分析1、自制数据集2、电影数据集题材关联规则分析 一、经典案例 在美国,一些年轻的父亲下班后...

    一、经典案例

    • 在美国,一些年轻的父亲下班后经常要到超市去买婴儿尿布,超市也因此发现了一个规律,在购买婴儿尿布的年轻父亲们中,有30%~40%的人同时要买一些啤酒。超市随后调整了货架的摆放,把尿布和啤酒放在一起,明显增加了销售额。如图1所示。
    • 若两个或多个变量的取值之间存在某种规律性,就称为关联。
    • 关联规则是寻找在同一个事件中出现的不同项的相关性,比如在一次购买活动中所买不同商品的相关性。
    • 例如:“在购买计算机的顾客中,有20%的人也同时购买了打印机。”
      在这里插入图片描述
    图1 购买尿布和啤酒的关联规则集合

    二、相关概念

    图2为一个实例。
    在这里插入图片描述

    图2 关联规则实例
    • 一个样本称为一个“事务”
    • 每个事务由多个属性来确定,这里的属性称为“项”
    • 多个项组成的集合称为“项集”

    由k个项构成的集合

    • {牛奶}、{花生酱}都是1-项集;
    • {牛奶, 啤酒}是2-项集;
    • {啤酒, 面包, 牛奶}是3-项集

    X=>Y含义

    • X和Y是项集
    • X称为规则前项(antecedent)
    • Y称为规则后项(consequent)

    事务仅包含其涉及到的项目,而不包含项目的具体信息

    • 在超级市场的关联规则挖掘问题中事务是顾客一次购物所购买的商品,但事务中并不包含这些商品的具体信息,如商品的数量、价格等。

    支持度 (support)

    • 一个项集或者规则在所有事务中出现的频率。 σ ( X ) \sigma(X) σ(X):表示项集 X X X的支持度计数
    • 项集 X X X的支持度: s ( X ) = σ ( X ) / N s(X)=\sigma(X)/N s(X)=σ(X)/N
    • 规则 X = > Y X=>Y X=>Y表示项集 X X X对项集 Y Y Y的支持度,也就是项集 X X X和项集 Y Y Y同时出现的概率
    • 某天共有100个顾客到电脑城购买物品,其中有20个顾客同时购买了计算机和打印机,那么上述的关联规则的支持度就是20%

    置信度 (confidence)

    • 确定 Y Y Y在包含 X X X的事务中出现的频率,即: c ( X = > Y ) = σ ( X ∪ Y ) / σ ( X ) c(X=>Y) = \sigma(X\cup Y)/\sigma(X) c(X=>Y)=σ(XY)/σ(X)
    • P ( Y ∣ X ) = P ( X Y ) / P ( X ) P(Y|X)=P(XY)/P(X) P(YX)P(XY)/P(X)
    • 置信度反应了关联规则的可信度,即购买了项集 X X X中的商品的顾客同时也购买了 Y Y Y中商品的可能性有多大
    • 购买咖啡的顾客中有50%的人购买了茶叶,则置信度为50%

    如图3所示,规则 ( A , B ) = > C (A,B)=>C (A,B)=>C

    • 支持度:交易中包含 { A , B , C } \{A,B,C\} {A,B,C}的可能性 (25%)
    • 置信度:在 { A , B } \{A,B\} {A,B}交易的前提下包含 C C C的条件概率 (100%)
      在这里插入图片描述
    图3

    设最小支持度为50%, 最小可信度为 50%, 则可得到 :

    • A = > C A=>C A=>C (50%, 66.6%)
    • C = > A C=>A C=>A (50%, 100%)

    若关联规则 X = > Y X=>Y X=>Y的支持度和置信度分别大于或等于用户指定的最小支持度 m i n s u p p o r t minsupport minsupport和最小置信度 m i n c o n f i d e n c e minconfidence minconfidence,则称关联规则 X = > Y X=>Y X=>Y为强关联规则,否则称关联规则 X = > Y X=>Y X=>Y为弱关联规则。

    提升度 (lift)

    • l i f t ( A = > B ) = c o n f i d e n c e ( A = > B ) / s u p p o r t ( B ) = P ( B ∣ A ) / P ( B ) lift(A=>B)=confidence(A=>B)/support(B)=P(B|A)/P(B) lift(A=>B)=confidence(A=>B)/support(B)=P(BA)/P(B)
    • 现在有1000 个消费者,有500人购买了茶叶,其中有400人同时购买了咖啡,另100人没有。由于confidence(茶叶=>咖啡)=450/500=80%,由此可能会认为喜欢喝茶的人往往喜欢喝咖啡。但如果另外没有购买茶叶的500人,其中同样有400人购买了咖啡,同样是很高的置信度80%,由此,得到不爱喝茶的也爱喝咖啡。这样看来,其实是否购买咖啡,与有没有购买茶叶并没有关联,两者是相互独立的,其提升度为90%/[(450+450)/1000]=1 。

    由此可见, l i f t lift lift正是弥补了 c o n f i d e n c e confidence confidence的这一缺陷,如果 l i f t = 1 lift=1 lift=1,则 X X X Y Y Y独立, X X X Y Y Y出现的可能性没有提升作用,其值越大 ( l i f t > 1 ) (lift>1) (lift>1),则表明 X X X Y Y Y的提升程度越大,也表明关联性越强。
    图4为一实例,可以看出, X X X Y Y Y的提升作用最大。
    在这里插入图片描述

    图4

    三、实验分析

    自制数据集

    可以使用mlxtend工具包得出频繁项集与规则,导包如下:

    import pandas as pd
    from mlxtend.frequent_patterns import apriori
    from mlxtend.frequent_patterns import association_rules
    

    自定义一份购物数据集,即:

    retail_shopping_basket = {'ID':[1,2,3,4,5,6],
                             'Basket':[['Beer', 'Diaper', 'Pretzels', 'Chips', 'Aspirin'],
                                       ['Diaper', 'Beer', 'Chips', 'Lotion', 'Juice', 'BabyFood', 'Milk'],
                                       ['Soda', 'Chips', 'Milk'],
                                       ['Soup', 'Beer', 'Diaper', 'Milk', 'IceCream'],
                                       ['Soda', 'Coffee', 'Milk', 'Bread'],
                                       ['Beer', 'Chips']]
    }
    

    展示一下:

    retail = pd.DataFrame(retail_shopping_basket)
    pd.options.display.max_colwidth=100
    retail
    

    在这里插入图片描述
    需要将现实数据转换成one-hot编码格式。
    首先,剔除无关特征。

    retail_id = retail.drop('Basket',1)
    retail_id
    

    显示如下:
    在这里插入图片描述
    其次,使用join()方法将列表改成字符串:

    retail_Basket = retail['Basket'].str.join(',')
    retail_Basket
    

    在这里插入图片描述
    然后,利用get_dummies()将分类变量转换为虚拟/指示符变量:

    retail_Basket = retail_Basket.str.get_dummies(',')
    retail_Basket
    

    在这里插入图片描述
    最后,将无关特征加进来即可:

    retail = retail_id.join(retail_Basket)
    retail
    

    在这里插入图片描述
    计算该数据集的支持度:

    frequent_itemsets = apriori(retail.drop('ID',1), use_colnames=True)
    frequent_itemsets
    

    在这里插入图片描述
    如果光考虑支持度support(X>Y),[Beer, Chips]和[Beer, Diaper]一样,哪一种组合更相关呢?因此,需要计算提升度:

    association_rules(frequent_itemsets,metric='lift')
    

    在这里插入图片描述
    显然{Diaper, Beer}更相关一些

    电影数据集题材

    数据集来源:https://grouplens.org/datasets/movielens/
    查看该数据集前10项内容,显示如下:
    在这里插入图片描述
    数据集中包括电影名字与电影类型的标签,第一步还是先转换成one-hot格式,并把无关特征设置为索引:

    movies_ohe = movies.drop('genres',1).join(movies.genres.str.get_dummies('|'))
    movies_ohe.set_index(['movieId','title'],inplace=True)
    pd.options.display.max_columns=100
    movies_ohe.head()
    

    部分显示如下:
    在这里插入图片描述

    movies_ohe.shape
    

    (9125, 20),说明数据集包括9125部电影,一共有20种不同类型。
    计算支持度大于0.015的频繁项集:

    frequent_itemsets_movies = apriori(movies_ohe,min_support=0.015,use_colnames=True)
    frequent_itemsets_movies
    

    在这里插入图片描述
    计算提升度大于1.25的项集:

    rules_movies = association_rules(frequent_itemsets_movies,metric='lift',min_threshold=1.25)
    rules_movies
    

    在这里插入图片描述
    计算提升度大于8的强关联项集,并按提升度值降序排列:

    rules_movies[(rules_movies['lift']>8)].sort_values(by=['lift'], ascending=False)
    

    在这里插入图片描述
    这说明Children和Animation这两个题材是最相关的。
    把包括{Children, Animation}的电影数据显示出来:

    movies[(movies.genres.str.contains('Children')) & (movies.genres.str.contains('Animation'))]
    

    在这里插入图片描述

    展开全文
  • 主要介绍了Laravel5.1 框架模型多态关联用法,结合实例形式分析了laravel5.1框架模型多态关联具体实现、使用方法与操作注意事项,需要的朋友可以参考下
  • 使用python实现灰色关联分析及其可视化 在这里总结一下的数学建模常用的几种模型评估方法,这里讲的是使用python的Pandas库和高效的Numpy科学计算库实现。如果想看用Python实现的模型的灵敏度分析,可以看我上一篇...

    使用python实现灰色关联分析及其可视化

    • 在这里总结一下的数学建模常用的几种模型评估方法,这里讲的是使用python的Pandas库和高效的Numpy科学计算库实现。如果想看用Python实现的模型的灵敏度分析,可以看我上一篇博文,传送门: 模型灵敏度分析及可视化. 下面将详细介绍灰色关联度分析并一个实例结束文章。

    灰色关联分析法

    简介

    • 灰色系统理论提出了对各子系统进行灰色关联度分析的概念,意图透过一定的方法,去寻求系统中各子系统(或因素)之间的数值关系。因此,灰色关联度分析对于一个系统发展变化态势提供了量化的度量,非常适合动态历程分析。

    使用场景

    • 适用于对于两个系统之间的因素,其随时间或不同对象而变化的关联性大小的量度,称为关联度。在系统发展过程中,若两个因素变化的趋势具有一致性,即同步变化程度较高,即可谓二者关联程度较高;反之,则较低。因此,灰色关联分析方法,是根据因素之间发展趋势的相似或相异程度,亦即“灰色关联度”,作为衡量因素间关联程度的一种方法。

    具体计算步骤

    第一步,确定分析数列
    • 确定反映系统行为特征的参考数列和影响系统行为的比较数列。反映系统行为特征的数据序列,称为参考数列。影响系统行为的因素组成的数据序列,称比较数列。
      (1)参考数列(又称母序列):能反映系统行为特征的数据序列,类似于因变量Y
      Y = Y ( k ) ∣ k = 1 , 2... n ; Y=Y(k)∣k=1,2...n; Y=Y(k)k=1,2...n
      (2)比较数列(又称子序列):影响系统行为的因素组成的数据序列,类似于自变量X
      X i = X i ( k ) ∣ k = 1 , 2... n , i = 1 , 2... m Xi=Xi(k)∣k=1,2...n, i=1,2...m Xi=Xi(k)k=1,2...n,i=1,2...m
    第二步,变量的无量纲化
    • 对变量进行预处理
      目的:去除量纲,缩小度量范围简化计算,便于比较
      处理:对母序列和子序列的每个指标进行预处理:
      常用方法: 标准化,归一化
    1. 标准化:
      x ∗ = ( x − μ ) / σ ( μ 为 均 值 , σ 为 标 准 差 ) x^* = (x - μ)/ σ (μ为均值,σ为标准差) x=(xμ)/σμσ
    2. 归一化:
      x ∗ = x − m i n ( x ) / m a x ( x ) − m i n ( x ) x^* = x - min(x)/ max(x) - min(x) x=xmin(x)/max(x)min(x)
    第三步,计算关联系数

    在这里插入图片描述
    上式中, ξ ( k ) ξ(k) ξ(k) x i x^i xi y ( k ) y(k) y(k) k k k点的关联系数; ∣ y ( k ) − x i ( k ) ∣ |y(k)-x_i(k)| y(k)xi(k)为第 k k k y y y x i x_i xi的绝对差; m i n   m i n ∣ y ( k ) − x i ( k ) ∣ min\,min|y(k)-x_i(k)| minminy(k)xi(k) y y y数列与 x i x_i xi的数列在 k k k点的二级最小差数绝对值, m a x   m a x ∣ y ( k ) − x i ( k ) ∣ 为 max\,max|y(k)-x_i(k)|为 maxmaxy(k)xi(k)y 数 列 与 数列与 x_i的数列在 k k k点的二级最大差数绝对值, ρ \rho ρ为灰色分析系数,取值0~1,一般取0.5。将各性状的关联系数代入公式,可求出 x i x_i xi y ( k ) y(k) y(k)的关联度 r i r_i ri:

    r i = 1 n ∑ k = i n ξ i ( k ) r_i = \frac{1}{n} \sum^{n}_{k=i}\xi_i(k) ri=n1k=inξi(k)

    实例

    • 为研究红酒各因素之间的影响,使用关联对其进行分析
      在这里插入图片描述
    • 代码(含注释)
    # 导入可能要用到的库
    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    %matplotlib inline
    
    # 读取数据
    wine = pd.read_excel("C:/Users/Administrate/Desktop/wine.xls",index_col=0)
    wine
    

    在这里插入图片描述

    # 无量纲化
    def dimensionlessProcessing(df_values,df_columns):
        from sklearn.preprocessing import StandardScaler
        scaler = StandardScaler()
        res = scaler.fit_transform(df_values)
        return pd.DataFrame(res,columns=df_columns)
    
    # 求第一列(影响因素)和其它所有列(影响因素)的灰色关联值
    def GRA_ONE(data,m=0): # m为参考列
        # 标准化
        data = dimensionlessProcessing(data.values,data.columns)
        # 参考数列
        std = data.iloc[:,m]
        # 比较数列
        ce = data.copy()
        
        n = ce.shape[0]
        m = ce.shape[1]
        
        # 与参考数列比较,相减
        grap = np.zeros([n,m])
        for i in range(m):
            for j in range(n):
                grap[j,i] = abs(ce.iloc[j,i] - std[j])
                
        # 取出矩阵中的最大值和最小值
        mmax = np.amax(grap)
        mmin = np.amin(grap)
        ρ = 0.5 # 灰色分辨系数
        
        # 计算值
        grap = pd.DataFrame(grap).applymap(lambda x:(mmin+ρ*mmax)/(x+ρ*mmax))
        
        # 求均值,得到灰色关联值
        RT = grap.mean(axis=0)
        return pd.Series(RT)
    
    # 调用GRA_ONE,求得所有因素之间的灰色关联值
    def GRA(data):
        list_columns = np.arange(data.shape[1])
        df_local = pd.DataFrame(columns=list_columns)
        for i in np.arange(data.shape[1]):
            df_local.iloc[:,i] = GRA_ONE(data,m=i)
        return df_local
    
    data_gra = GRA(data)
    data_gra
    

    在这里插入图片描述

    # 结果可视化
    import seaborn as sns # 可视化图形调用库
    import matplotlib.pyplot as plt
    %matplotlib inline
    
    def ShowGRAHeatMap(data):
        # 色彩集
        colormap = plt.cm.RdBu
        plt.figure(figsize=(18,16))
        plt.title('Person Correlation of Features',y=1.05,size=18)
        sns.heatmap(data.astype(float),linewidths=0.1,vmax=1.0,square=True,\
                   cmap=colormap,linecolor='white',annot=True)
        plt.show()
    
    ShowGRAHeatMap(data_gra)
    
    • 最终结果可视化
      在这里插入图片描述
    展开全文
  • 本文实例分析了js中hash和ico的一些关联。分享给大家供大家参考。具体如下: 近期测试提出一个bug,说某几个页面中的ico不显示,于是针对此问题排查原因。 首先,确保页面中的link已引入favicon.ico。经查看,发现是...
  • 一、灰色系统理论与灰色关联分析 1-灰色预测的概念 灰色系统的起源及简单介绍如下所示: 灰色系统主要应用于如下四个方面,具体如下: 我们进一步看一下灰色系统的相关概念,具体如下: 我们继续...

    目录

    一、灰色系统理论与灰色关联分析

    1-灰色预测的概念

    2-灰色关联度与优势分析

    3-灰色关联分析案例分析

    4-灰色生成数列

    二、灰色预测模型

    1-灰色模型GM

    2-灰色模型GM的建模步骤

    3-灰色预测经典案例1

    4-灰色预测模型经典案例2


    一、灰色系统理论与灰色关联分析

    1-灰色预测的概念

    灰色系统的起源及简单介绍如下所示:

     灰色系统主要应用于如下四个方面,具体如下: 

    我们进一步看一下灰色系统的相关概念,具体如下:

     

    我们继续学习一下,什么是灰色预测法 ,具体如下:

     ​​​

     灰色预测的常见四种类型如下:

    即灰色时间序列预测,畸变预测,系统预测,拓扑预测 

    2-灰色关联度与优势分析

      下面看一下灰色关联度分析的基本步骤,具体如下: 

    3-灰色关联分析案例分析

     

    有下面的结果r可以发现,编号为1的老师整体评价最高的,编号3和编号5的老师评价相差很近,编号4的老师评价最差。

    上述灰色关联分析MATLAB代码如下:

    clear; clc
    x1 = [8, 9, 8, 7, 5, 2, 9;
          7, 8, 7, 5, 7, 3, 8;
          9, 7, 9, 6, 6, 4, 7;
          6, 8, 8, 8, 4, 3, 6;
          8, 6, 6, 9, 8, 3, 8;
          8, 9, 5, 7, 6, 4, 8] ;
      
    [n,m] = size(x1) ;
    x0 = [9,9,9,9,8,9,9] ;
    %数据处理
    for i = 1 : n 
        for j = 1 : m 
            x(i,j) = abs(x1(i,j) - x0(1,j)) ;
        end
    end
    
    %计算灰色关联度系数
    max = x(1,1) ;
    min = x(1,1) ;
    for i = 1 : n
        for j = 1 : m
     if x(i,j)>=max
         max=x(i,j) ;
     end
        end
    end
    for i = 1 : n
        for j = 1 : m
     if x(i,j)<=min
         min=x(i,j) ;
     end
        end
    end
    k=0.5;  %分辨系数取值
    l=(min+k*max)./(x+k*max);%求关联系数矩阵
    disp('关联系数矩阵如下所示:') ;
    disp(l) ;
    
    %计算灰色加权关联度,此处默认各个指标的权重一样,直接求均值了
    
    g = sum(l,2) / m ;
    [rs,rind]=sort(g,'descend'); %对关联度进行排序
    
    disp('加权关联度如下:') ;
    disp(rs) ;
    disp('关联度排名如下:') ;
    disp(rind) ;
    
    

    运行结果如下:

    总结一下:

    灰色关联分析:

    【1】确定比较对象(评价对象)(就是数据,并且需要进行规范化处理,就是标准化处理)和参考数列(评价标准,一般该列数列都是1,就是最优的的情况) 
    【2】确定各个指标权重,可用层次分析确定 
    【3】计算灰色关联系数 
    【4】计算灰色加权关联度 
    【5】评价分析

    4-灰色生成数列

    数据生成的意义在于:将数据变成有规律的数列,可以发现其中的规律。

      

     我们看一下累加生成的一般特点,通过累加函数后得到规律性的函数,通过拟合进行预测,具体如下:

      

    二、灰色预测模型

    1-灰色模型GM

    2-灰色模型GM的建模步骤

    灰色预测的前提是必须是通过级别检验,直接用很可能出错。

     

     

    3-灰色预测经典案例1

    如果级别检验不通过,需要累加了一个数,后面再减掉。 

    注意:这个残差数据有误,具体看代码给出的结果数据。

    灰度预测和误差检验MATLAB代码如下所示:

    clear; clc
    x0 = [71.1, 72.4, 72.4, 72.1, 71.4, 72.0, 71.6] ;
    x0 = x0' ;
    n = length(x0) ; %数据的维度,n=7
    x1 = cumsum(x0) ;
    flag = 1 ;
    %第一步:级比检验
    for k = 2 : n
        lamda(k) = x0(k-1) / x0(k) ;
        if (lamda(k) < exp(-2 / (n+1)) || lamda(k) > exp(2 / (n+1)))
            disp('不通过级比检验!!!') ;
            flag = 0 ;
        end
    end
    %第2步:建模并求解
    if flag == 1
        disp('通过级比检验!!!') ;
        alpha = 0.5 ;
        z1 = alpha * x1(2:n) + (1 - alpha) * x1(1:n-1) ; %求邻域生成数
        Y = x0(2:n) ;
        B = [-z1, ones(n-1, 1)] ;
        ab = B \ Y ; %求出a,b
        disp('a和b的值分别为:') ;
        disp(ab(1));
        disp(ab(2));
        for k = 1 : n
        r1(k) = (x0(1) - ab(2) / ab(1)) * exp(-ab(1)*k)  + ab(2) / ab(1) ;
        if k == 1
            r0(k) = x0(k);
        else
            r0(k) = r1(k) - r1(k-1) ;
        end
        end
        disp('预测的结果如下:') ;
        disp(r0) ;
    
        %第3步:模型的2种检验方式
        %残差检验
        for k = 1 : n 
            c(k) = (x0(k) - r0(k)) / x0(k);
            if k > 1
            rou(k) = 1 - (((1-0.5*ab(1)) / (1+0.5*ab(1))) * lamda(k)) ;
            end
        end
        disp('残差如下:') ;
        disp(c) ;
        
        %级比偏差检验
        disp('级比检验值如下:') ;
        disp(rou) ;
        
    end
    
    

    运行结果如下所示:

    4-灰色预测模型经典案例2

    预测SARS疫情对某些经济指标的影响,准确的说是预测没发生疫情的指标与已经发生疫情的实际指标进行对比,可以得到疫情对经济指标的影响情况。

     

     可以根据月度预测,直接得到每个月的;也可以根据月度总和,即年度预测,根据占比,推出每个月的值。

     

    根据商品的零售预测结果,会发现疫情对商品的零售额影响不大。

     

    模型的结果分析

    对商品零售,接待海外旅游,综合服务的灰度预测MATLAB代码如下所示:

    未发生疫情的情况下,2003年商品零售额预测代码:

    clear; clc
    han1 = [83.0, 79.8, 78.1, 85.1, 86.6, 88.2, 90.3, 86.7, 93.3, 92.5, 90.9, 96.9;
           101.7, 85.1, 87.8, 91.6, 93.4, 94.5, 97.4, 99.5, 104.2, 102.3, 101, 123.5;
           92.2, 114, 93.3, 101, 103.5, 105.2, 109.5, 109.2, 109.6, 111.2, 121.7, 131.3;
           105, 125.7, 106.6, 116, 117.6, 118, 121.7, 118.7, 120.2, 127.8, 121.8, 121.9;
           139.3, 129.5, 122.5, 124.5, 135.7, 130.8, 138.7, 133.7, 136.8, 138.9, 129.6, 133.7;
           137.5, 135.3, 133, 133.4, 142.8, 141.6, 142.9, 147.3, 159.6, 162.1, 153.5, 155.9;
           163.2, 159.7, 158.4, 145.2, 124, 144.1, 157, 162.6, 171.8, 180.7, 173.5, 176.5] ;
    han = han1(7,:) ;
    flag = 1 ;
    han1(end,:) = [] ; %最后一行不用,也就是2003年的不用
    m = size(han1,2) ; %计算列数,即12个月份
    x0 = mean(han1, 2) ;  %求每一行12个月的均值
    n = length(x0) ; %数据的维度,n=6,也就是6年
    for k = 2 : n
        lamda(k) = x0(k-1) / x0(k) ;
        if (lamda(k) < exp(-2 / (n+1)) || lamda(k) > exp(2 / (n+1)))
            disp('不通过级比检验!!!') ;
            flag = 0 ;
        end
    end
    
    if flag == 1
        disp('通过级比检验!!!') ;
    x1 = cumsum(x0) ; %做一次累加
    alpha = 0.4 ;
    
    z1 = alpha * x1(2:n) + (1 - alpha) * x1(1:n-1) ; %求邻域生成数
    Y = x0(2:n) ;
    B = [-z1, ones(n-1, 1)] ;
    ab = B \ Y ; %求出a,b
    k = 6 ;
    x7hat = (x0(1) - ab(2) / ab(1)) * (exp(-ab(1)*k) - exp(-ab(1)*(k-1))) ; %预测结果的均值
    z = m * x7hat ; %总的预测结果
    u = sum(han1) / sum(sum(han1)) ;
    v = z * u ; %最终的预测结果
    disp('未发生SARS疫情的2003年12个月商品零售额预测结果:') ;
    disp(v) ;
    disp('发生SARS疫情的2003年12个月商品零售额实际情况:') ;
    disp(han) ;
    end
    
    %级比偏差值检验
    flag1 = 1 ;
    for k = 2 : n 
         rou(k) = 1 - (((1-0.5*ab(1)) / (1+0.5*ab(1))) * lamda(k)) ;
    end
    disp('级比检验结果:') ;
    disp(rou) ;
    
    
    

    运行结果如下所示:

    未发生疫情的情况下,2003年接待海外旅游人数预测MATLAB代码:
     

    clear; clc
    han1 = [9.4, 11.3, 16.8, 19.8, 20.3, 18.8, 20.9, 24.9, 24.7, 24.3, 19.4, 18.6;
           9.6, 11.7, 15.8, 19.9, 19.5, 17.8, 17.8, 23.3, 21.4, 24.5, 20.1, 15.9;
           10.1, 12.9, 17.7, 21, 21, 20.4, 21.9, 25.8, 29.3, 29.8, 23.6, 16.5;
           11.4, 26, 19.6, 25.9, 27.6, 24.3, 23, 27.8, 27.3, 28.5, 32.8, 18.5;
           11.5, 26.4, 20.4, 26.1, 28.9, 28, 25.2, 30.8, 28.7, 28.1, 22.2, 20.7;
           13.7, 29.7, 23.1, 28.9, 29, 27.4, 26,  32.2, 31.4, 32.6, 29.2, 22.9;
           15.4, 17.1, 23.5, 11.6, 1.78, 2.61, 8.8, 16.2, 20.1, 24.9, 26.5, 21.8] ;
    han = han1(7,:) ;
    flag = 1 ;
    han1(end,:) = [] ; %最后一行不用,也就是2003年的不用
    m = size(han1,2) ; %计算列数,即12个月份
    x0 = mean(han1, 2) ;  %求每一行12个月的均值
    n = length(x0) ; %数据的维度,n=6,也就是6年
    for k = 2 : n
        lamda(k) = x0(k-1) / x0(k) ;
        if (lamda(k) < exp(-2 / (n+1)) || lamda(k) > exp(2 / (n+1)))
            disp('不通过级比检验!!!') ;
            flag = 0 ;
        end
    end
    
    if flag == 1
        disp('通过级比检验!!!') ;
    x1 = cumsum(x0) ; %做一次累加
    alpha = 0.5 ;
    
    z1 = alpha * x1(2:n) + (1 - alpha) * x1(1:n-1) ; %求邻域生成数
    Y = x0(2:n) ;
    B = [-z1, ones(n-1, 1)] ;
    ab = B \ Y ; %求出a,b
    k = 6 ;
    x7hat = (x0(1) - ab(2) / ab(1)) * (exp(-ab(1)*k) - exp(-ab(1)*(k-1))) ; %预测结果的均值
    z = m * x7hat ; %总的预测结果
    u = sum(han1) / sum(sum(han1)) ;
    v = z * u ; %最终的预测结果
    disp('未发生SARS疫情的2003年12个月旅游人数预测结果:') ;
    disp(v) ;
    disp('发生SARS疫情的2003年12个月旅游人数实际情况:') ;
    disp(han) ;
    end
    
    %级比偏差值检验
    flag1 = 1 ;
    for k = 2 : n 
         rou(k) = 1 - (((1-0.5*ab(1)) / (1+0.5*ab(1))) * lamda(k)) ;
    end
    disp('级比检验结果:') ;
    disp(rou) ;
    
    

    运行结果如下:

    未发生疫情的情况下,2003年综合服务业类及情况MATLAB代码,与上面的一样,只需要将数据录入就可以,不再赘述。

    总结一下:

    灰色预测模型:

    【1】数据检验与处理

    【2】GM模型建立与求解

    【3】残差检验和级比偏差检验

    展开全文
  • 本文实例讲述了Yii2.0表关联查询的方法。分享给大家供大家参考,具体如下: 你可以使用 ActiveRecord 来进行关联查询(比如,从A表读取数据时把关联的B表数据也一起读出来), 在Active Record中,获取关联数据可以像...
  • 一、灰色关联分析 1-基本概念及步骤 2-经典案例及MATLAB编程实现 一、灰色关联分析 1-基本概念及步骤 灰色关系分析:就是计算某一个待比较的数列和参照数列的关联程度,关联程度越高,说明待比较数列越接近...
  • 本文实例讲述了CakePHP框架Model关联对象。分享给大家供大家参考,具体如下: CakePHP 提供关联数据表间的映射,共有4种类型的关联: hasOne,hasMany,belongTo,hasAndBelongsToMany. 设定了Model间的关联关系定义,...
  • 安全事件关联分析方法

    千次阅读 2021-06-30 18:32:37
    综述性文章可以参考《网络安全事件关联分析技术与工具研究》琚安康 郭渊博 朱泰铭 王 通 一、安全事件关联分析技术分类 类别 技术方法 主要特点 应用场景 ...
  • 灰色关联分析在数学建模以及数据分析中也是一种较为常用的方法,可用于进行系统分析或进行综合评价,本文主要介绍了灰色关联分析的原理和步骤,以及在实际案例当中如何应用求解。
  • 关联分析是用于发掘数据间关联度的分析技术,即通过发掘事务数据集内每项数据组合出现的概率。 广泛应用日常各领域,例如,在生物信息学中的功能基因定位、医疗领域的病症关联分析、快消领域等多个方面。 一、...
  • 本文实例讲述了mysql关联子查询的一种优化方法。分享给大家供大家参考,具体如下: 很多时候,在mysql上实现的子查询的性能较差,这听起来实在有点难过。特别有时候,用到IN()子查询语句时,对于上了某种数量级的表...
  • 分析一个Apriori算法的关联规则挖掘实例3. 利用weka进行数据挖掘3.1 将数据转为ARFF格式3.2 利用weka进行分析4. 参考文章 首先,如果不熟悉weka的使用的话,可以从我的git仓库里面拉取一下weka的相关教程,仓库...
  • 使用Python进行数据关联分析

    千次阅读 2021-01-29 10:10:47
    关联分析选择函数包关联分析属于数据挖掘的一大类。我发现的python语言实现的包有两个:pymining:根据Apriori算法进行关联规则挖掘Orange3的关联规则库:根据FP-growth算法进行关联规则挖掘经过分析,我决定使用...
  • 关联度分析法-灰色关联分析

    万次阅读 多人点赞 2020-09-14 16:50:14
    本文介绍了利用灰色关联分析方法分析了数据之间的关联度。
  • 因此,灰色关联分析是指对一个系统发展变化态势的定量描述和比较的方法,其基本思想是通过确定参考数据列和若干个比较数据列的几何形状相似程度来判断其联系是否紧密,它反映了曲线间的关联程度。 2、输入输出描述 ...
  • 本文实例讲述了Laravel5.1 框架关联模型之后操作。分享给大家供大家参考,具体如下: 之前写过关于模型关联的笔记,但是模型关联好后的一些使用没有介绍,今天补上 1 写入关联模型 1.1 使用Save方法(一对多) 我们...
  • R语言做关联分析

    千次阅读 2021-06-25 14:32:55
    理解关联分析的相关概念:关联分析、支持度、置信度、强规则、项集、频繁项集等。 掌握关联分析的基本方法:数据是事务的或关系的,如何由大量的数据中发现关联规则 ?什么样的关联规则最有趣? 案例资料 (一)...
  • 灰色关联分析及实践

    千次阅读 2021-12-03 15:14:43
    灰色关联分析及实践1 背景2 灰色关联分析2.1 定义2.2 名称起源2.3 思想2.4 作用2.5 算法步骤2.6 评价标准2.7 应用应用1: 旅游业发展程度的影响因子应用2:哪一种产业对GDP总量影响最大?应用3:不同产业之间的协同度...
  • 给出了灰关联空间分解和灰色趋势关联分析的基本概念和方法 ,总结了用灰色趋势关联度进行系统分析的一般步骤 ,通过两个具体实例研究分析了该方法的优越性和实用性.
  • 针对现有配电网匮乏的评价考量体系及管理中存在的问题,提出了一种基于改进灰色关联度的指标赋权方法来实现对配电网的全面效果评价和建设合理性分析具体采用建设运行成果与效率比来构建科学的指标体系,结合主客观...
  • 4.3 利用矩阵关联法找到销量好和利润高的品类4.4 运用趋势分析分析水果总需求如何?5 结论分析报告 1 案例背景 果多吃水果连锁超市是华北地区的热门线下水果超市。该超市覆盖华北5个省份,且在京津冀地区门
  • 灰色关联分析步骤

    千次阅读 2021-03-09 18:19:22
    什么是灰色关联分析 灰色关联分析是指对一个系统发展变化态势的定量描述和比较的方法,其基本思想是通过确定参考数据列和若干个比较数据列的几何形状相似程度来判断其...灰色关联分析具体计算步骤如下: 第一步:确
  • 具体分析如下: 在THINKPHP中关联查询(多表查询)可以使用 table() 方法或和join方法,如下示例所示: 1、table() 复制代码 代码如下:$list = $user->table(‘user_status stats, user_profile profile’)->where(...
  • 想必大家都听说过美国沃尔玛连锁超市“啤酒与尿不湿”的故事。...其实,这种通过研究已经产生的数据,将不同标的关联起来并挖掘二者之间联系的分析方法,就叫做关联分析法,也就是商场和电商领域的“购物篮分析”。 .
  • 如何做好关联分析(购物篮分析)

    千次阅读 2020-12-22 02:17:41
    第一、关联分析具体能用来做什么呢? 可以一句话来概括:最大限度地从你口袋里面掏出更多的钱买我的产品。 通过关联规则,推出相应的促销礼包或优惠组合套装,快速帮助提高销售额。如前面所说的:飘柔洗发水+玉兰油...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 186,555
精华内容 74,622
热门标签
关键字:

关联分析具体案例