精华内容
下载资源
问答
  • 数据挖掘关联规则分析数据

    热门讨论 2015-10-26 11:55:48
    这是两个关于关联规则挖掘的合成数据集,数据量在10万左右,适用于关联规则分析
  • 数据挖掘之关联规则分析

    万次阅读 2018-08-12 14:01:18
    关联规则分析也称为购物篮分析,最早是为了发现超市销售数据库中不同的商品之间的关联关系。 用于寻找数据集中各项之间的关联关系。根据所挖掘的关联关系,可以从一个属性的信息来推断另一个属性的信息。当置信度...

    关联规则分析也称为购物篮分析,最早是为了发现超市销售数据库中不同的商品之间的关联关系。

    用于寻找数据集中各项之间的关联关系。根据所挖掘的关联关系,可以从一个属性的信息来推断另一个属性的信息。当置信度达到某一阈值时,可以认为规则成立。

    常用的关联规则算法

    算法名称算法描述
    Apriori

    关联规则最常用、最经典的挖掘频繁项集的算法,核心思想是通过连接产生候选项及其支持度,然后通过剪枝生成频繁项集

    无法处理连续型数值变量,往往分析之前需要对数据进行离散化。

    FP-Tree

    针对Apriori算法固有的多次扫描事务数据集的缺陷,提出的不产生候选频繁项集的方法。

    Apriori和FP-Tree都是寻找频繁项集的算法

    Eclat算法一种深度优先算法,采用垂直数据表示形式,在概念格理论的基础上利用基于前缀的等价关系将搜索空间划分为较小的子空间
    灰色关联法分析和确定各因素之间的影响程度,或是若干个子因素(子序列)对主因素(母序列)的贡献度而进行的一种分析方法

    本文介绍最常用的Apriori算法。

    项集:项的集合。包含k个项的项集成为k项集,如集合{牛奶、麦片、糖}是一个3项集

    频繁项集:如果项集I的相对支持度满足预定义的最小支持度阈值,则I是频繁项集

    支持度(相对支持度):项集A、B同时发生的概率。

    置信度:项集A发生,则项集B发生的概率。

    最小支持度:用户或专家定义的衡量支持度的一个阈值,表示项集在统计意义上的最低重要性。

    最小置信度:用户或专家定义的衡量置信度的一个阈值,表示关联规则的最低可靠性。同时满足最小支持度阈值和最小置信度阈值的规则成为强规则。

    目前,设置最小支持度和最小置信度,大部分根据业务经验设置初始值,然后经过多次调整,获取与业务相符的关联规则结果。


    举例1:

    R语言实现:

    1、创建稀疏矩阵

    tr <- read.transactions("menu_orders.txt",format="basket",sep=",") #读入源数据并创建稀疏矩阵
    #format=c("basket", "single")用于注明源数据的格式。如果源数据每行内容就是一条交易购买的商品列表(类似于一行就是一个购物篮)那么使用basket;如果每行内容是交易号+单个商品,那么使用single。
    summary(tr) #查看数据集相关的统计汇总信息
    
    inspect(tr) #查看稀疏矩阵的内容

    输出如下:

    2、采用Apriori算法建模

    rule0 = apriori(tr,parameter = list(support=0.2,confidence = 0.5)) #设定支持度为0.2,置信度为0.5

    3、输出模型结果

    inspect(rule0)

    输出结果如下:

    结果分析(以结果第12条为例):

    a、b同时发生的概率是50%。

    a发生,则b发生的概率是71.42857%。

    这样就可以进行智能推荐了。


    举例2:

    trans = as(a,"transactions") #将数据转换成transactions属性
    
    inspect(trans[1:5]) #观察前五行的数据
    
    rules = apriori(trans,parameter = list(support=0.06,confidence = 0.75)) #调用Apriori算法,最小支持度为0.06,最小置信度为0.75
    
    rules #显示rules中关联规则条数
    
    inspect(rules) #观测rules中的关联规则

    输出结果如下:

    结果分析(以结果第2条为例):

    A4、F3~H4的支持度最大,为7.85%,置信度为87.96%。说明当A4、F3的条件满足时,H4的可能性为87.96%,而这种情况发生的可能性为7.85%。

     

    Python实现:

    import pandas as pd 
    from apriori import * 导入自己编写的Apriori函数
    data = pd.read_excel("menu_orders.xls",header=None)
    
    print(u'\n转换原始数据为0-1矩阵')
    ct = lambda x:pd.Series(1,index=x[pd.notnull(x)]) #转换0-1矩阵的过渡函数
    b = map(ct,data.as_matrix()) #用map方式执行
    data = pd.DataFrame(list(b)).fillna(0) #实现矩阵转换,空值用0填充
    print(u'\n转换完毕。')
    del b #删除中间变量b,节省内存
    
    support = 0.2 #最小支持度
    confidence = 0.5 #最小置信度
    ms = '---' #连接符
    find_rule(data,support,confidence,ms).to_excel('1.xls')

    输出结果如下:

    展开全文
  • 数据关联规则分析算法

    千次阅读 2018-01-29 18:33:14
    数据关联规则(Associaton Rules,AR)是数据挖掘算法的重要目的之一,用于在海量数据中挖掘出具有价值的信息,通常在商业中用于数据与数据指尖的关系来产生更大的价值,典型的例子就是“啤酒与尿不湿”。 1、基于...

    数据关联规则(Associaton Rules,AR)是数据挖掘算法的重要目的之一,用于在海量数据中挖掘出具有价值的信息,通常在商业中用于数据与数据指尖的关系来产生更大的价值,典型的例子就是“啤酒与尿不湿”。

    1、基于Apriori算法的关联分析

    Apriori算法是关联规则分析中较为典型的频繁项集算法。

    原理步骤:

    (1)对数据中每一项数据进行频率次数统计;

    (2)构成候选项集C1,计算每一项的支持度(频率次数/总数);

    (3)根据给定的最小支持度值,对候选集进行筛选,得到频繁项集L1。即去掉支持度小于最小支持度的候选集;

    (4)对频繁项集L1进行连接生成候选集C2,重复上述步骤,最终形成频繁K项集或者最大的频繁项集。

    例如如果已知步骤2中的候选项集C1:

                                                                                           C1表

    候选项集支持度
    牛奶0.5
    饼干0.75
    纸巾0.25
    矿泉水0.75
    口香糖0.75
    假定最小支持度为0.5,排除矿泉水,对其他四项候选集进行连接,生成候选集C2,并计算其支持度。


    候选项集支持度
    牛奶、饼干0.25
    牛奶、纸巾0.50
    牛奶、口香糖0.25
    饼干、纸巾0.50
    饼干、口香糖0.75
    纸巾、口香糖0.50
    假定最小支持度为0.5,排除牛奶、饼干和牛奶、口香糖这两项,对其他四项候选集进行连接,生成候选集C3,并计算其支持度。一直重复以上步骤。得到最终的频繁项集

    频繁项集 支持度
    饼干、纸巾、口香糖0.5
    商店根究获得的这条数据可以判断饼干、纸巾和口香糖之间的关系很大,因此可以将这三种商品放在一起出售。

    以上的算法步骤很简单,但存在一定的不足:

    (1)在产生候选集连接项时会有很多的组合,其中有的组合可能存在无关的数据。

    (2)每次计算项集的过程都会对原始数据表进行扫描,如果数据量较大时,cpu开销较大。

    因此提出了改进的Apriori算法。

    (1)将数据表进行压缩。由于要进行多次扫描,压缩后可以提升性能;

    (2)利用哈希表的快速查找特征性对项集进行计数统计;

    (3)合理选样。当数据样本过大时,通过不同的方法进行抽取分析。例如,如果根据七天的数据进行分析,可以抽取每条的数据,进行分析。

    2、TF-Growth算法

    虽然Apriori算法进行了改进,但是仍然要对原始数据进行不停的扫描,这样还是会影响性能。TF-Growth算法只对原始数据进行两次扫描,通过建立FP树,对原始数据进行压缩。FP树就是频繁模式树(Frequent Pattern Tree),包含一颗前缀树和一个频繁项头表,能后有效的加快关联数据分析。

    3、Eclat算法

    Eclat算法利用倒排索引思想,但并不是利用倒排索引进行快速查找,而是进行数据统计。利用倒排索引快速构建频繁索引项集。








    展开全文
  • 关联规则数据分析

    千次阅读 2019-01-13 13:55:59
    最初的动机是针对购物篮分析(Basket Analysis)问题提出的,其目的是为了发现交易数据库中不同商品的关联规则。之后诸多的研究人员对关联规则的挖掘问题进行了大量的研究,主要涉及关联规则的挖掘理论...

    关联规则

    1.关联规则的产生背景

    最早是由Agrawal等人提出的(1993)。最初的动机是针对购物篮分析(Basket Analysis)问题提出的,其目的是为了发现交易数据库中不同商品的关联规则。之后诸多的研究人员对关联规则的挖掘问题进行了大量的研究,主要涉及关联规则的挖掘理论的探索、原有算法的改进和新算法的设计、增量式关联规则的挖掘、并行关联规则的挖掘、模糊关联规则挖掘以及关联规则的应用等问题。

    2. 基本概念与原理

    **1)**关联规则(AR,Association Rule)反映了一种特定的数据之间的关系。用来揭示数据与数据之间未知的相互依赖关系。他的任务就是:给定一个事物数据库T,在基于支持度-置信度框架中,发现数据与项目之间大量有趣的相关联系,生成所有的置信度和可信度分别高于用户给定的最小支持度和最小可信度的关联规则。其算法设计的两个问题:
    (1) 找到所有支持度大于等于最小支持度(min_sup)的项目集(Item Sets),这些项目集称为频繁项目集(Frequent Item Sets)。
    (2) 使用步骤(1)找到的频繁项目集,产生期望的规则。
    **2)**关联规则的评价标准主要是支持度和置信度。支持度和置信度的两个阈值是描述关联规则的两个重要概念。为了方便将最小的支持度阈值记为min_sup,最小的置信度阈值记为min_conf。最小支持度表示项目集在统计意义上的最低重要性。最小置信度表示规则的最低可靠性。
    假设 是由m个不同数据项组成的一个集合。给定一个数据事物集T,其中每一个事物记录t是I的一个非空子集,即 ,每一个事物记录都有与一个唯一的标识符TID(Transaction ID)相对应。
    对于任意一个非空的项集(itemset) ,如果记录t包含X(即 ),则称记录t支持项集X。对于整个数据集T来说,X的支持度定义为包含X的记录在数据集T中所占的比例。即: 在这里插入图片描述
    式中 表示数据集T中包含的X的记录个数,|T|表示T中所有记录的数目。显而易见, 。如果|X|=k(即|X|表示X中数据项的个数),则称X为k-项集。
    若X的支持度大于所给定的最小支持度阈值 ,则称X为频繁集。关联规则是形如 的表达式,其中X、Y是非空项集,且X、Y不相交。关联规则的支持度定义为: 在这里插入图片描述
    其中X为前项,Y为后项。 的置信度为(前项作为分母)
    在这里插入图片描述
    式中 和 分别表示数据集T中 和X记录的个数。其中并集可以简记为XY。
    如果我们所要求的关联规则支持度大于最小支持度,并且置信度大于最小置信度,称作合格关联规则。
    ※一个关联规则,计算支持度的工作主要是计数运算,要求遍历扫描数据集T。
    ※关联规则数目的大小是影响挖掘效率的关键因素。
    查找数据库中所有的频繁项目集和它的支持度是关联规则挖掘研究的重点。
    所以下面介绍基于广度优先搜索策略的关联规则算法——Apriori算法(通过多次迭代找出所有的频繁项目集):访问完一个频繁项目集的时候,访问它的超集。

    Aprioir算法

    是通过项目集元素数目不断增长来逐步完成项目集的发现。
    分为两个阶段:
    迭代所有的频繁项目集,要求频繁项目集的支持度不小于最小支持度(用户设定的)。
    从频繁项目集中构造置信度不低于用户设定的最小置信度的规则。
    即:首先生成1-频繁项目集L1,然后产生2-频繁项目集L2(也就是逐层产生候选集),直到不能再拓展频繁项目集中的
    元素的数目的时候,算法停止。
    其中,根据项目及空间理论:频繁集的子集是频繁集,非频繁项目集的超级不是频繁集。
    证明:设X是一个项目集,事物数据库中支持X的元组数为从s,对X的任意非空子集Y,设T中支持Y的元组数为s1。
    根据频繁项目集的定义:支持X的一定支持Y,所以
    在这里插入图片描述
    同理可以证明非频繁集的超集不是频繁集。
    例如:假设事务数据库为D(如下表),计算min_sup为25% min_cof=100%时的关联规则。
    表1 事物数据库D

    TID项目集
    01ACD
    02BCE
    03ABCE
    04BE

    第一次扫描数据库生成的候选项目集和频繁集如下表
    表2 1-候选项目集

    项目集支持度
    A0.167
    B0.25
    C0.25
    D0.083
    E0.25

    表3 1-频繁项目集

    项目集支持度
    B0.25
    C0.25
    E0.25

    第二次扫描:用第一次扫描生成的一项频繁项目集来生成二项候选集
    表4 2-候选项目集

    项目集支持度
    BC0.167
    BE0.25
    CE0.0167

    表5 2-频繁项目集

    项目集支持度
    BE0.25

    第二次扫描结束之后只有一个项目集无法再生成三项候选集,所以算法结束。
    然后对于二项集计算其置信度,判断关联规则是否合格。
    |BE|

    Rules (左边的是分母)Conf
    Dsupp(BE)/Dsupp(B)1
    Dsupp(BE)/Dsupp(E)1

    由计算得到的置信度我们知道BE关联规则合格。

    用SSAS对医疗数据进行关联分析

    1)Microsoft SQl Server 2008 Analysis Services 的操作步骤

    1. 打开集成环境页面
      依次执行“开始”→“所有程序”→“Microsoft SQL Server 2008”→“SQL Server Business Intelligence Development Studio”命令,打开Analysis Service集成环境界面。

    2. 新建项目
      (1) 执行菜单栏的“文件”→“新建”→“项目”命令,打开如图所示的“新建项目”对话框。(2) 选中“Analysis Services”项目,分别在“名称”、“解决方案名称”文本框中,填写项目名称和解决方案名称;在“位置”下拉文本框中,单击右侧的“浏览”钮,选择解决方案的保存路径。。
      (3) 单击“确定”按钮,返回集成环境的起始界面,在右上角显示“解决方案资源管理器”字样。

    3. 创建数据源

    4. 创建数据源视图

    5. 创建适用于中医的挖掘结构

    6. 部署项目并处理挖掘模型

    7. 模型解释
      规则由生成的挖掘模型得到了116个规则。其中概率大的重要性不一定大。这里产生的项集既有单项集也有多项集。在规则上面的各个控制选项中,我们可以选择最小概率和最低重要性。
      在这里插入图片描述图2 项集
      由图2我们知道产生的项集有362个,支持代表项集的支持度是多少,上面的下拉选项可以控制最低支持度是多少以及最小项集的大小。

    在这里插入图片描述在这里插入图片描述图三 癌细胞无转移情况的关联程度(上)癌细胞有转移情况的关联程度(下)
    由图3我们可以知道在最低支持度为1最小概率为0.42的前提下,和癌细胞无转移情况的有关联的属性由图三(左)中显示红色的属性;和癌细胞有转移情况有关联的属性由图三(右)中显示红色的属性。其中我们还可以看出肾细胞癌分期>=3.25、患者的年龄岁>=60.3173663616、癌细胞分期 -1.2985798036-3.25、患者的年龄岁-52.3197128896-60.3173663616、肾细胞癌组织内微血管数MVC<64.7726790528,这几个属性与癌细胞的转移或者不转移都有联系。

    展开全文
  • 对其Excel数据进行关联规则分析之前需要对数据进行预处理:将表头去掉,并保存你所需要的数据,导入你所需要分析的Excel地址和‘Sheet1’,所得出的数据,即是你所需要的结果。
  • 关联规则分析也成为购物篮分析,最早是为了发现超市销售数据库中不同的商品之间的关联关系。例如一个超市的经理想要更多地了解顾客的购物习惯,比如“哪组商品可能会在一次购物中同时购买?”或者“某顾客购买了个人...
  • Python机器学习&数据分析-关联规则

    千次阅读 2019-08-04 09:10:23
    数据分析-关联规则 机器学习课程的笔记整理 一、关联规则前置知识 关联规则 在美国,一些年轻的父亲下班后经常要到超市去买婴儿尿布,超市也因此发现了一个规律,在购买婴儿尿布的年轻父亲们中,有30%~40%的人同时...

    Python机器学习&数据分析-关联规则

    机器学习课程的笔记整理

    一、关联规则前置知识

    关联规则

    • 在美国,一些年轻的父亲下班后经常要到超市去买婴儿尿布,超市也因此发现了一个规律,在购买婴儿尿布的年轻父亲们中,有30%~40%的人同时要买一些啤酒。超市随后调整了货架的摆放,把尿布和啤酒放在一起,明显增加了销售额。

    在这里插入图片描述

    • 若两个或多个变量的取值之间存在某种规律性,就称为关联

    • 关联规则是寻找在同一个事件中出现的不同项的相关性,比如在一次购买活动中所买不同商品的相关性。

    • “在购买计算机的顾客中,有30%的人也同时购买了打印机”

    支持度(support):一个项集或者规则在所有事务中出现的频率,σ(X):表示项集X的支持度计数

    • 项集X的支持度:s(X)=σ(X)/N
    • 规则X==>Y表示物品集X对物品集Y的支持度,也就是物品集X和物品集Y同时出现的概率
    • 某天共有100个顾客到商场购买物品,其中有30个顾客同时购买了啤酒和尿布,那么上述的关联规则的支持度就是30%

    置信度(confidence):确定Y在包含X的事务中出现的频繁程度。c(X → Y) = σ(X∪Y)/σ(X)

    • p(Y│X)=p(XY)/p(X)。
    • 置信度反应了关联规则的可信度—购买了项目集X中的商品的顾客同时也购买了Y中商品的可能性有多大
    • 购买薯片的顾客中有50%的人购买了可乐,则置信度为50%

    提升度(lift):物品集A的出现对物品集B的出现概率发生了多大的变化

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

    由此可见,lift正是弥补了confidence的这一缺陷,if lift=1,X与Y独立,X对Y出现的可能性没有提升作用,其值越大(lift>1),则表明X对Y的提升程度越大,也表明关联性越强。

    二、自定义购物数据集的例子

    在anaconda命令行下通过

    conda install -c conda-forge mlxtend

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

    自定义一份购物数据集

    data = {"ID":[1,2,3,4,5,6],
           "Onion":[1,0,0,1,1,1],
           "Potato":[1,1,0,1,1,1],
           "Burger":[1,1,0,0,1,1],
           "Milk":[0,1,1,1,0,1],
           "Beer":[0,0,1,0,1,0]}
    
    df = pd.DataFrame(data)
    
    df = df[['ID', 'Onion', 'Potato', 'Burger', 'Milk', 'Beer' ]]
    
    df
    
    IDOnionPotatoBurgerMilkBeer
    0111100
    1201110
    2300011
    3411010
    4511101
    5611110

    设置支持度 (support) 来选择频繁项集.

    • 选择最小支持度为50%

    • apriori(df, min_support=0.5, use_colnames=True)

    frequent_itemsets = apriori(df[['Onion', 'Potato', 'Burger', 'Milk', 'Beer' ]],min_support=0.5, use_colnames=True)
    
    frequent_itemsets
    
    supportitemsets
    00.666667(Onion)
    10.833333(Potato)
    20.666667(Burger)
    30.666667(Milk)
    40.666667(Onion, Potato)
    50.500000(Onion, Burger)
    60.666667(Potato, Burger)
    70.500000(Milk, Potato)
    80.500000(Onion, Potato, Burger)

    计算规则

    • association_rules(df, metric='lift', min_threshold=1)
    • 可以指定不同的衡量标准与最小阈值
    rules = association_rules(frequent_itemsets,metric="lift",min_threshold=1)
    
    rules
    
    antecedentsconsequentsantecedent supportconsequent supportsupportconfidenceliftleverageconviction
    0(Onion)(Potato)0.6666670.8333330.6666671.001.2000.111111inf
    1(Potato)(Onion)0.8333330.6666670.6666670.801.2000.1111111.666667
    2(Onion)(Burger)0.6666670.6666670.5000000.751.1250.0555561.333333
    3(Burger)(Onion)0.6666670.6666670.5000000.751.1250.0555561.333333
    4(Potato)(Burger)0.8333330.6666670.6666670.801.2000.1111111.666667
    5(Burger)(Potato)0.6666670.8333330.6666671.001.2000.111111inf
    6(Onion, Potato)(Burger)0.6666670.6666670.5000000.751.1250.0555561.333333
    7(Onion, Burger)(Potato)0.5000000.8333330.5000001.001.2000.083333inf
    8(Potato, Burger)(Onion)0.6666670.6666670.5000000.751.1250.0555561.333333
    9(Onion)(Potato, Burger)0.6666670.6666670.5000000.751.1250.0555561.333333
    10(Potato)(Onion, Burger)0.8333330.5000000.5000000.601.2000.0833331.250000
    11(Burger)(Onion, Potato)0.6666670.6666670.5000000.751.1250.0555561.333333
    rules[ ( rules["lift"] > 1.125) & (rules["confidence"] > 0.8) ]
    
    antecedentsconsequentsantecedent supportconsequent supportsupportconfidenceliftleverageconviction
    0(Onion)(Potato)0.6666670.8333330.6666671.01.20.111111inf
    5(Burger)(Potato)0.6666670.8333330.6666671.01.20.111111inf
    7(Onion, Burger)(Potato)0.5000000.8333330.5000001.01.20.083333inf

    这几条结果就比较有价值了:

    • (洋葱和马铃薯)(汉堡和马铃薯)可以搭配着来卖
    • 如果洋葱和汉堡都在购物篮中, 顾客买马铃薯的可能性也比较高,如果他篮子里面没有,可以推荐一下.

    三、模拟实际购物的例子

    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)
    
    retail = retail[["ID","Basket"]]
    
    pd.options.display.max_colwidth=100
    
    retail
    
    IDBasket
    01[Beer, Diaper, Pretzels, Chips, Aspirin]
    12[Diaper, Beer, Chips, Lotion, Juice, BabyFood, Milk]
    23[Soda, Chips, Milk]
    34[Soup, Beer, Diaper, Milk, IceCream]
    45[Soda, Coffee, Milk, Bread]
    56[Beer, Chips]

    注意:

    数据集中都是字符串组成的,需要转换成数值编码

    retail_id = retail.drop("Basket",1)
    retail_id
    
    ID
    01
    12
    23
    34
    45
    56
    retail_Basket = retail.Basket.str.join(",")
    retail_Basket
    
    0              Beer,Diaper,Pretzels,Chips,Aspirin
    1    Diaper,Beer,Chips,Lotion,Juice,BabyFood,Milk
    2                                 Soda,Chips,Milk
    3                  Soup,Beer,Diaper,Milk,IceCream
    4                          Soda,Coffee,Milk,Bread
    5                                      Beer,Chips
    Name: Basket, dtype: object
    
    retail_Basket = retail_Basket.str.get_dummies(",")
    retail_Basket
    
    AspirinBabyFoodBeerBreadChipsCoffeeDiaperIceCreamJuiceLotionMilkPretzelsSodaSoup
    010101010000100
    101101010111000
    200001000001010
    300100011001001
    400010100001010
    500101000000000
    retail = retail_id.join(retail_Basket)
    retail
    
    IDAspirinBabyFoodBeerBreadChipsCoffeeDiaperIceCreamJuiceLotionMilkPretzelsSodaSoup
    0110101010000100
    1201101010111000
    2300001000001010
    3400100011001001
    4500010100001010
    5600101000000000
    frequent_items_2 = apriori(retail.drop("ID",1),use_colnames=True)
    
    frequent_items_2
    
    supportitemsets
    00.666667(Beer)
    10.666667(Chips)
    20.500000(Diaper)
    30.666667(Milk)
    40.500000(Chips, Beer)
    50.500000(Diaper, Beer)

    如果光考虑支持度support(X>Y), [Beer, Chips] 和 [Beer, Diaper] 都是很频繁的,哪一种组合更相关呢?

    association_rules(frequent_items_2,metric="lift")
    
    antecedentsconsequentsantecedent supportconsequent supportsupportconfidenceliftleverageconviction
    0(Chips)(Beer)0.6666670.6666670.50.751.1250.0555561.333333
    1(Beer)(Chips)0.6666670.6666670.50.751.1250.0555561.333333
    2(Diaper)(Beer)0.5000000.6666670.51.001.5000.166667inf
    3(Beer)(Diaper)0.6666670.5000000.50.751.5000.1666672.000000

    显然{Diaper, Beer}更相关一些

    四、电影题材关联的例子

    数据集来源: MovieLens (small)

    movies = pd.read_csv("ml-latest-small/movies.csv")
    
    movies.head(10)
    
    movieIdtitlegenres
    01Toy Story (1995)Adventure|Animation|Children|Comedy|Fantasy
    12Jumanji (1995)Adventure|Children|Fantasy
    23Grumpier Old Men (1995)Comedy|Romance
    34Waiting to Exhale (1995)Comedy|Drama|Romance
    45Father of the Bride Part II (1995)Comedy
    56Heat (1995)Action|Crime|Thriller
    67Sabrina (1995)Comedy|Romance
    78Tom and Huck (1995)Adventure|Children
    89Sudden Death (1995)Action
    910GoldenEye (1995)Action|Adventure|Thriller

    数据中包括电影名字与电影类型的标签,第一步还是先转换成one-hot格式

    movies_one = movies.drop("genres",1).join(movies.genres.str.get_dummies())
    
    pd.options.display.max_columns=100
    
    movies_one.head()
    
    movieIdtitle(no genres listed)ActionAdventureAnimationChildrenComedyCrimeDocumentaryDramaFantasyFilm-NoirHorrorIMAXMusicalMysteryRomanceSci-FiThrillerWarWestern
    01Toy Story (1995)00111100010000000000
    12Jumanji (1995)00101000010000000000
    23Grumpier Old Men (1995)00000100000000010000
    34Waiting to Exhale (1995)00000100100000010000
    45Father of the Bride Part II (1995)00000100000000000000
    movies_one.shape
    
    (9125, 22)
    

    数据集包括9125部电影,一共有20种不同类型。

    movies_one.set_index(["movieId","title"],inplace=True)
    
    movies_one.head()
    
    (no genres listed)ActionAdventureAnimationChildrenComedyCrimeDocumentaryDramaFantasyFilm-NoirHorrorIMAXMusicalMysteryRomanceSci-FiThrillerWarWestern
    movieIdtitle
    1Toy Story (1995)00111100010000000000
    2Jumanji (1995)00101000010000000000
    3Grumpier Old Men (1995)00000100000000010000
    4Waiting to Exhale (1995)00000100100000010000
    5Father of the Bride Part II (1995)00000100000000000000
    frequent_itemsets_movies = apriori(movies_one,use_colnames=True,min_support=0.025)
    
    frequent_itemsets_movies
    
    supportitemsets
    00.169315(Action)
    10.122411(Adventure)
    20.048986(Animation)
    30.063890(Children)
    40.363288(Comedy)
    50.120548(Crime)
    60.054247(Documentary)
    70.478356(Drama)
    80.071671(Fantasy)
    90.096110(Horror)
    100.043178(Musical)
    110.059507(Mystery)
    120.169315(Romance)
    130.086795(Sci-Fi)
    140.189479(Thriller)
    150.040219(War)
    160.058301(Action, Adventure)
    170.037589(Comedy, Action)
    180.038247(Action, Crime)
    190.051178(Action, Drama)
    200.040986(Action, Sci-Fi)
    210.062904(Thriller, Action)
    220.029260(Children, Adventure)
    230.036712(Comedy, Adventure)
    240.032438(Drama, Adventure)
    250.030685(Fantasy, Adventure)
    260.027726(Sci-Fi, Adventure)
    270.027068(Children, Animation)
    280.032877(Children, Comedy)
    290.032438(Comedy, Crime)
    300.104000(Comedy, Drama)
    310.026959(Fantasy, Comedy)
    320.090082(Comedy, Romance)
    330.067616(Crime, Drama)
    340.057863(Thriller, Crime)
    350.031671(Mystery, Drama)
    360.101260(Drama, Romance)
    370.087123(Thriller, Drama)
    380.031014(War, Drama)
    390.043397(Horror, Thriller)
    400.036055(Thriller, Mystery)
    410.028932(Thriller, Sci-Fi)
    420.035068(Comedy, Drama, Romance)
    430.032000(Crime, Thriller, Drama)
    rules_movies = association_rules(frequent_itemsets_movies,metric="lift",min_threshold=1.25)
    
    rules_movies
    
    antecedentsconsequentsantecedent supportconsequent supportsupportconfidenceliftleverageconviction
    0(Action)(Adventure)0.1693150.1224110.0583010.3443372.8129550.0375751.338475
    1(Adventure)(Action)0.1224110.1693150.0583010.4762762.8129550.0375751.586111
    2(Action)(Crime)0.1693150.1205480.0382470.2258901.8738600.0178361.136081
    3(Crime)(Action)0.1205480.1693150.0382470.3172731.8738600.0178361.216716
    4(Action)(Sci-Fi)0.1693150.0867950.0409860.2420712.7890150.0262911.204870
    5(Sci-Fi)(Action)0.0867950.1693150.0409860.4722222.7890150.0262911.573929
    6(Thriller)(Action)0.1894790.1693150.0629040.3319841.9607460.0308221.243510
    7(Action)(Thriller)0.1693150.1894790.0629040.3715211.9607460.0308221.289654
    8(Children)(Adventure)0.0638900.1224110.0292600.4579763.7412990.0214391.619096
    9(Adventure)(Children)0.1224110.0638900.0292600.2390333.7412990.0214391.230158
    10(Fantasy)(Adventure)0.0716710.1224110.0306850.4281353.4975180.0219121.534608
    11(Adventure)(Fantasy)0.1224110.0716710.0306850.2506713.4975180.0219121.238881
    12(Sci-Fi)(Adventure)0.0867950.1224110.0277260.3194442.6096070.0171011.289519
    13(Adventure)(Sci-Fi)0.1224110.0867950.0277260.2265002.6096070.0171011.180614
    14(Children)(Animation)0.0638900.0489860.0270680.4236718.6487580.0239391.650122
    15(Animation)(Children)0.0489860.0638900.0270680.5525738.6487580.0239392.092205
    16(Children)(Comedy)0.0638900.3632880.0328770.5145801.4164530.0096661.311672
    17(Comedy)(Children)0.3632880.0638900.0328770.0904981.4164530.0096661.029255
    18(Comedy)(Romance)0.3632880.1693150.0900820.2479641.4645110.0285721.104581
    19(Romance)(Comedy)0.1693150.3632880.0900820.5320391.4645110.0285721.360609
    20(Thriller)(Crime)0.1894790.1205480.0578630.3053792.5332560.0350221.266089
    21(Crime)(Thriller)0.1205480.1894790.0578630.4800002.5332560.0350221.558693
    22(Drama)(Romance)0.4783560.1693150.1012600.2116841.2502360.0202671.053746
    23(Romance)(Drama)0.1693150.4783560.1012600.5980581.2502360.0202671.297810
    24(War)(Drama)0.0402190.4783560.0310140.7711171.6120150.0117752.279087
    25(Drama)(War)0.4783560.0402190.0310140.0648341.6120150.0117751.026321
    26(Horror)(Thriller)0.0961100.1894790.0433970.4515392.3830520.0251861.477810
    27(Thriller)(Horror)0.1894790.0961100.0433970.2290342.3830520.0251861.172413
    28(Thriller)(Mystery)0.1894790.0595070.0360550.1902833.1976720.0247791.161509
    29(Mystery)(Thriller)0.0595070.1894790.0360550.6058933.1976720.0247792.056601
    30(Thriller)(Sci-Fi)0.1894790.0867950.0289320.1526891.7592060.0124861.077769
    31(Sci-Fi)(Thriller)0.0867950.1894790.0289320.3333331.7592060.0124861.215781
    32(Comedy, Drama)(Romance)0.1040000.1693150.0350680.3371971.9915360.0174601.253291
    33(Romance)(Comedy, Drama)0.1693150.1040000.0350680.2071201.9915360.0174601.130057
    34(Drama, Crime)(Thriller)0.0676160.1894790.0320000.4732582.4976730.0191881.538742
    35(Thriller, Drama)(Crime)0.0871230.1205480.0320000.3672963.0468840.0214971.389989
    36(Crime)(Thriller, Drama)0.1205480.0871230.0320000.2654553.0468840.0214971.242778
    37(Thriller)(Drama, Crime)0.1894790.0676160.0320000.1688842.4976730.0191881.121845
    rules_movies[(rules_movies.lift>4)].sort_values(by=['lift'], ascending=False)
    
    antecedentsconsequentsantecedent supportconsequent supportsupportconfidenceliftleverageconviction
    14(Children)(Animation)0.0638900.0489860.0270680.4236718.6487580.0239391.650122
    15(Animation)(Children)0.0489860.0638900.0270680.5525738.6487580.0239392.092205

    Children和Animation 这俩题材是最相关的

    movies[(movies.genres.str.contains('Children')) & (~movies.genres.str.contains('Animation'))]
    
    <tr>
      <th>8917</th>
      <td>135266</td>
      <td>Zenon: The Zequel (2001)</td>
      <td>Adventure|Children|Comedy|Sci-Fi</td>
    </tr>
    <tr>
      <th>8918</th>
      <td>135268</td>
      <td>Zenon: Z3 (2004)</td>
      <td>Adventure|Children|Comedy</td>
    </tr>
    <tr>
      <th>8960</th>
      <td>139620</td>
      <td>Everything's Gonna Be Great (1998)</td>
      <td>Adventure|Children|Comedy|Drama</td>
    </tr>
    <tr>
      <th>8967</th>
      <td>140152</td>
      <td>Dreamcatcher (2015)</td>
      <td>Children|Crime|Documentary</td>
    </tr>
    <tr>
      <th>8981</th>
      <td>140747</td>
      <td>16 Wishes (2010)</td>
      <td>Children|Drama|Fantasy</td>
    </tr>
    <tr>
      <th>9052</th>
      <td>149354</td>
      <td>Sisters (2015)</td>
      <td>Children|Comedy</td>
    </tr>
    
    movieIdtitlegenres
    12Jumanji (1995)Adventure|Children|Fantasy
    78Tom and Huck (1995)Adventure|Children
    2627Now and Then (1995)Children|Drama
    3234Babe (1995)Children|Drama
    3638It Takes Two (1995)Children|Comedy
    5154Big Green, The (1995)Children|Comedy
    5660Indian in the Cupboard, The (1995)Adventure|Children|Fantasy
    7480White Balloon, The (Badkonake sefid) (1995)Children|Drama
    8187Dunston Checks In (1996)Children|Comedy
    98107Muppet Treasure Island (1996)Adventure|Children|Comedy|Musical
    114126NeverEnding Story III, The (1994)Adventure|Children|Fantasy
    125146Amazing Panda Adventure, The (1995)Adventure|Children
    137158Casper (1995)Adventure|Children
    148169Free Willy 2: The Adventure Home (1995)Adventure|Children|Drama
    160181Mighty Morphin Power Rangers: The Movie (1995)Action|Children
    210238Far From Home: The Adventures of Yellow Dog (1995)Adventure|Children
    213241Fluke (1995)Children|Drama
    215243Gordy (1995)Children|Comedy|Fantasy
    222250Heavyweights (Heavy Weights) (1995)Children|Comedy
    230258Kid in King Arthur's Court, A (1995)Adventure|Children|Comedy|Fantasy|Romance
    234262Little Princess, A (1995)Children|Drama
    280314Secret of Roan Inish, The (1994)Children|Drama|Fantasy|Mystery
    308343Baby-Sitters Club, The (1995)Children
    320355Flintstones, The (1994)Children|Comedy|Fantasy
    326362Jungle Book, The (1994)Adventure|Children|Romance
    338374Richie Rich (1994)Children|Comedy
    361410Addams Family Values (1993)Children|Comedy|Fantasy
    371421Black Beauty (1994)Adventure|Children|Drama
    404455Free Willy (1993)Adventure|Children|Drama
    431484Lassie (1994)Adventure|Children
    ............
    770783177Yogi Bear (2010)Children|Comedy
    773584312Home Alone 4 (2002)Children|Comedy|Crime
    782387383Curly Top (1935)Children|Musical|Romance
    790089881Superman and the Mole-Men (1951)Children|Mystery|Sci-Fi
    792990866Hugo (2011)Children|Drama|Mystery
    793591094Muppets, The (2011)Children|Comedy|Musical
    794291286Little Colonel, The (1935)Children|Comedy|Crime|Drama
    797191886Dolphin Tale (2011)Children|Drama
    809695740Adventures of Mary-Kate and Ashley, The: The Case of the United States Navy Adventure (1997)Children|Musical|Mystery
    819998441Rebecca of Sunnybrook Farm (1938)Children|Comedy|Drama|Musical
    820098458Baby Take a Bow (1934)Children|Comedy|Drama
    8377104074Percy Jackson: Sea of Monsters (2013)Adventure|Children|Fantasy
    8450106441Book Thief, The (2013)Children|Drama|War
    8558110461We Are the Best! (Vi är bäst!) (2013)Children|Comedy|Drama
    8592111659Maleficent (2014)Action|Adventure|Children|IMAX
    8689115139Challenge to Lassie (1949)Children|Drama
    8761118997Into the Woods (2014)Children|Comedy|Fantasy|Musical
    8765119155Night at the Museum: Secret of the Tomb (2014)Adventure|Children|Comedy|Fantasy
    8766119655Seventh Son (2014)Adventure|Children|Fantasy
    8792122932Elsa & Fred (2014)Children|Comedy|Romance
    8845130073Cinderella (2015)Children|Drama|Fantasy|Romance
    8850130450Pan (2015)Adventure|Children|Fantasy
    8871132046Tomorrowland (2015)Action|Adventure|Children|Mystery|Sci-Fi

    336 rows × 3 columns

    展开全文
  • 针对这一情况,提出基于关联规则的数据质量分析与修复方法,通过定义数据项之间的关联规则,建立数据关联模型,自动根据模型检测数据集合是否满足关联关系,判断数据是否符合质量要求;通过指定数据修复策略,对发现...
  • 数据挖掘之关联规则分析简介

    千次阅读 2019-07-03 21:19:58
    关联分析是指从大量数据中发现项集之间有趣的关联和相关联系。关联分析的一个典型例子是购物篮分析。在大数据时代,关联分析是最常见的数据挖掘任务之一。 概述 关联分析是一种简单、实用的分析技术,是指发现存在...
  • 数据挖掘】关联规则之灰色关联分析

    千次阅读 多人点赞 2019-01-24 17:52:39
    灰色关联分析法 利用灰色关联分析的九个步骤: 1.根据分析目的确定分析指标体系,收集分析数据。  设n个数据序列形成如下矩阵:   其中m为指标的个数, 2.确定参考数据列 参考数据列应该是一个理想的比较...
  • 主要介绍了关联规则算法、数据挖掘的概念及工具,以及基于关联规则的矿井参数数据挖掘分析。使用R语言挖掘工具,挖掘分析了矿井监测数据温度、瓦斯、CO、风速、湿度、粉尘浓度之间的关联规则,确定了每种因素之间的影响...
  • 怎么用clementine做关联规则分析

    万次阅读 多人点赞 2015-11-30 18:00:24
    不要怕,小迪来教了怎么用clementine做关联规则分析。 1、首先你得在你的电脑上安装clementine,安装方法我在另一篇博文上做出过说明。详情请见:http://blog.csdn.net/u014374031/article/details/50082941 这里再...
  • 关联规则分析

    万次阅读 多人点赞 2017-11-27 17:11:03
    数据挖掘是指以某种方式分析数据源,从中发现一些潜在的有用的信息,所以数据挖掘又称作知识发现,而关联规则挖掘则是数据挖掘中的一个很重要的课题,顾名思义,它是从数据背后发现事物之间可能存在的关联或者联系。...
  • 基于关联规则的足球比赛数据分析

    万次阅读 2018-08-19 00:48:27
    针对这种情况,本文通过足球比赛中产生的数据,比如射门次数、控球率、传球成功率等,运用关联规则算法进行建模、分析,探索足球比赛的胜负与哪些关键指标的关系密切。 思路:以本赛季的中超联赛(目前进行到第18轮...
  • 关联规则分析数据挖掘中最活跃的研究方法之一,目的是在一个数据集中找出各项之间的关联关系,而这种关系并没有在数据中直接表示出来。 8.1.1 常用关联规则算法 常用关联算法如所表8 1所示。
  • 数据挖掘课程,关联规则在购物篮数据分析中的应用的课程设计文档。购物篮;关联规则数据分析;挖掘算法。关联规则挖掘理论
  • 关联规则分析及其在空间数据挖掘中的应用研究,优秀硕士论文
  • 关联规则分析

    千次阅读 2011-06-18 13:52:00
    1.什么是关联规则 "尿布与啤酒"的故事大家都有听过,这里就不罗嗦了。 按常规思维,尿布与啤酒风马牛不相及,若不是借助数据挖掘技术对大量交易数据进行挖掘分析,沃尔玛是不可能发现数据内在这一有价值的规律的。...
  • 何为关联规则学习 关联规则学习是一种基于规则的机器学习方法,用于发现大型数据库中变量之间的有趣关系。它旨在使用一些有趣的度量来识别在数据库中发现的强规则。这种基于规则的方法在分析更多数据时也会生成新...
  • weka关联规则分析

    千次阅读 2018-10-03 20:01:32
    weka关联规则学习可以发现属性组之间的...事实上,绝大多数关联规则都不支持数值型,所以必须将数据进行处理,经数据按区段进行划分,进行离散化分箱处理。 三、算法属性设置 其中metrictype度量类型分为以下: ...
  • 数据挖掘-关联规则

    千次阅读 2016-05-01 16:18:33
     关联规则分析数据挖掘中最活跃的研究方法之一,目的是在一个数据集中找出各项之间的关联关系,而这种关系在数据中并没有直接表示出来 常用关联规则算法如下表所示: 算法名称 算法描述 ...
  • 以 Python 使用 关联规则 简单举例应用关联规则分析。 关联规则 也被称为购物篮分析,用于分析数据集各项之间的关联关系。 一般应用场景 关联规则分析:最早的案例啤酒和尿布;据说是沃尔玛超市在分析顾客的购买记录...
  • 这段时间使用了Rapidminer进行关联规则的挖掘实验,发现
  • 中医证型关联规则挖掘 背景 显然,如今的中医治疗再度火了起来,归根到底的原因还是中医在某些疾病处理上具有天然优势。 而且,中医治疗没有西医治疗的很多毒副作用。 “先证而治”。 挖掘目标 发现中医...
  • 关联规则商品销售数据集,描述一个商店的商品销售记录,用于数据挖掘与机器学习。
  • 本文是基于《Python数据分析与挖掘实战》的实战部分的第八章的数据——《中医证型关联规则挖掘》分析。旨在补充原文中的细节代码,并给出文中涉及到的内容的完整代码。主要有:1)将原始数据按照聚类结果进行...
  • 规则产生忽略那些前件和后件为空的规则,每个频繁k项集能够产生2(2k−1)2(2^k-1)个关联规则。将频繁项集Y划分为两个非空子集X和Y-X,使得X→Y−XX \to Y-X能满足置信度阈值,就可以得到满足条件的规则。 在计算规则...
  • 提到数据挖掘,我们第一反应就是之前听到的啤酒和尿不湿的故事,该故事就是典型的数据挖掘中的关联规则。购物篮分析区别于传统的线性回归的主要区别为,关联分析针对离散数据;下面我们利用R语言的arules包及Apriori...
  • 数据挖掘之关联规则(Apriori算法)

    万次阅读 多人点赞 2021-02-18 17:12:33
    关联规则想必大家都是听说过 尿布和啤酒的故事; 在一家超市里,有一个有趣的现象:尿布和啤酒赫然摆在一起出售。但是这个奇怪的举措却使尿布和啤酒的销量双双增加了。这不是一个笑话,而是发生在美国沃尔玛连锁店...
  • 前面几篇介绍了关联规则的一些基本概念和两个基本算法,但实际在商业应用中,写算法反而比较少,理解数据,把握数据,利用工具才是重要的,前面的基础篇是对算法的理解,这篇将介绍开源利用数据挖掘工具weka进行管理...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 166,928
精华内容 66,771
关键字:

不同数据做关联规则分析