1 引言

关联规则分析也成为购物篮分析,最早是为了发现超市销售数据库中不同的商品之间的关联关系。例如一个超市的经理想要更多地了解顾客的购物习惯,比如“哪组商品可能会在一次购物中同时购买?”或者“某顾客购买了个人电脑,那该顾客三个月后购买数码相机的概率有多大?”他可能会发现如果购买了面包的顾客同时非常有可能会购买牛奶,这就导出了一条关联规则“面包=>牛奶”,其中面包称为规则的前项,而牛奶称为后项。通过对面包降低售价进行促销,而适当提高牛奶的售价,关联销售出的牛奶就有可能增加超市整体的利润。关联规则分析是数据挖掘中最活跃的研究方法之一,目的是在一个数据集中找出各项之间的关联关系,而这种关系并没有在数据中直接表示出来。


2 Apriori 介绍






举个例子,在购物数据中,纸巾对应鸡爪的置信度为40%,支持度为1%。则意味着在购物数据中,总共有1%的用户既买鸡爪又买纸巾;同时买鸡爪的用户中有40%的用户购买纸巾。

对于Apriori算法,我们使用支持度来作为我们判断频繁项集的标准。Apriori算法的目标是找到最大的K项频繁集。这里有两层意思,首先,我们要找到符合支持度标准的频繁集。但是这样的频繁集可能有很多。第二层意思就是我们要找到最大个数的频繁集。比如我们找到符合支持度的频繁集AB和ABE,那么我们会抛弃AB,只保留ABE,因为AB是2项频繁集,而ABE是3项频繁集。那么具体的,Apriori算法是如何做到挖掘K项频繁集的呢?

Apriori算法采用了迭代的方法,先搜索出候选1项集及对应的支持度,剪枝去掉低于支持度的1项集,得到频繁1项集。然后对剩下的频繁1项集进行连接,得到候选的频繁2项集,筛选去掉低于支持度的候选频繁2项集,得到真正的频繁二项集,以此类推,迭代下去,直到无法找到频繁k+1项集为止,对应的频繁k项集的集合即为算法的输出结果。

Aprior算法是一个非常经典的频繁项集的挖掘算法,很多算法都是基于Aprior算法而产生的,包括FP-Tree,GSP, CBA等。这些算法利用了Aprior算法的思想,但是对算法做了改进,数据挖掘效率更好一些,因此现在一般很少直接用Aprior算法来挖掘数据了,但是理解Aprior算法是理解其它Aprior类算法的前提,同时算法本身也不复杂,因此值得好好研究一番。


3 Apriori python 实现

简单的库实现:apyori。不推荐。
机器学习扩展库:mlxtend 。推荐。


安装:

conda install mlxtend

测试:
安装好后官网的测试代码测试一次:
http://rasbt.github.io/mlxtend/


  • 概览


apriori里面是简单实现,介绍了基本原理和使用。可以根据最小支持度生成频繁项集。项集支持度能够 大于等于最小支持度的项集就是频繁项集。
association_rules里面是关联规则生成。可以用频繁项集生成关联规则。
fpgrowth 里面采用FP-Tree实现,普通的apriori算法中间计算过程有大量过程量,不适合大数据,FP-Tree就改进了apriori,用树实现,而且速度能比apriori快五倍。
fpmax 就是生成最大的K项频繁集。

地址:http://rasbt.github.io/mlxtend/USER_GUIDE_INDEX/#frequent_patterns

用apriori生成频繁项集:

import pandas as pd
from mlxtend.preprocessing import TransactionEncoder
from mlxtend.frequent_patterns import apriori"""购物篮数据"""
dataset = [['Milk', 'Onion', 'Nutmeg', 'Kidney Beans', 'Eggs', 'Yogurt'],['Dill', 'Onion', 'Nutmeg', 'Kidney Beans', 'Eggs', 'Yogurt'],['Milk', 'Apple', 'Kidney Beans', 'Eggs'],['Milk', 'Unicorn', 'Corn', 'Kidney Beans', 'Yogurt'],['Corn', 'Onion', 'Onion', 'Kidney Beans', 'Ice cream', 'Eggs']]"""热编码数据才行"""
te = TransactionEncoder()
te_ary = te.fit(dataset).transform(dataset)
df = pd.DataFrame(te_ary, columns=te.columns_)
print(df.to_string())"""大于等于最小支持度的项集是频繁项集"""
res1 = apriori(df, min_support=0.6)
print(res1.to_string())"""表达方式"""
res2 = apriori(df, min_support=0.6, use_colnames=True)
print(res2.to_string())

关联规则:

import pandas as pd
from mlxtend.preprocessing import TransactionEncoder
from mlxtend.frequent_patterns import apriori, fpmax, fpgrowth"""购物篮数据"""
dataset = [['牛奶', '鸡蛋', '蛤蜊'],['牛奶', '苹果', '鸡蛋'],['面包', '土豆'],['牛奶', '苹果', '鸡蛋'],]"""热编码数据才行"""
te = TransactionEncoder()
te_ary = te.fit(dataset).transform(dataset)
df = pd.DataFrame(te_ary, columns=te.columns_)
print(df.to_string())"""表达方式"""
res2 = fpgrowth(df, min_support=0.4, use_colnames=True)
print(res2.to_string())from mlxtend.frequent_patterns import association_rulesres = association_rules(res2, metric="confidence", min_threshold=0.5)print(res.to_string())

python 数据挖掘 关联规则挖掘 实践 Apriori FP-Tree mlxtend相关推荐

  1. 数据挖掘-关联规则挖掘之Apriori算法

    目录 一.定义 二.Apriori定律 Apriori定律1): Apriori定律2): 三.Apriori算法工作原理: 四.Apriori算法特点: 一.定义 Apriori是由a priori ...

  2. 【Python数据挖掘课程笔记】八.关联规则挖掘及Apriori实现购物推荐

    #2018-03-23 10:48:40 March Friday the 12 week, the 082 day SZ SSMR[Python数据挖掘课程笔记]八.关联规则挖掘及Apriori实现 ...

  3. 《python数据挖掘》和《python数据挖掘入门与实践》两本书读后感

    这些天花了很多时间来学习数据挖掘这门课程,有很多心得和感悟,所以写下这篇博客来表达自己读完这两本书的感受! 首先推荐大家通过这两本书来入门数据挖掘这个领域,python数据挖掘这本书较容易,还花了很大 ...

  4. python数据挖掘与机器学习实践技术

    分析机器学习在应用时需要掌握的经验及编程技巧.通过实际案例的形式,介绍如何提炼创新点,以及如何发表高水平论文等相关经验.旨在掌握Python编程的基础知识与技巧.特征工程(数据清洗.变量降维.特征选择 ...

  5. Python数据挖掘入门与实践---用决策树预测获胜球队

    数据集来源:1.  2013-14 NBA Schedule and Results 2.2013年 NBA 赛季排名情况 参考书籍:<Python数据挖掘入门与实践> 1.加载数据集: ...

  6. Python数据挖掘入门与实践-OneR分类算法

    Python数据挖掘入门与实践-OneR分类算法 OneR算法 OneR算法是根据已有的数据中,具有相同特征值的个体最可能属于哪个类别进行分类. 在本例中,只需选区Iris是个特征中分类效果最好的一个 ...

  7. python数据挖掘与入门实践(2.2)用sciket-learn估计器分类

    接python数据挖掘与入门实践(2.1)用sciket-learn估计器分类 三.运行算法 交叉验证一般分为三类:double-fold CV 即经常所说的2折交叉:10-fold交叉和LOO(le ...

  8. 《python数据挖掘入门与实践》决策树预测nba数据集

    前言: 学到决策树预测球队输赢时,按照书中网址去下载数据集,无奈怎么也没下载成功.即使下载了excel文件也是破损的.咱可是学了python的银,那好吧,我就把它爬取下来.(资源在下面) 代码: '' ...

  9. 改写《python数据挖掘入门与实践》第九章Gutenberg书籍下载代码

    @数据挖掘 改写<python数据挖掘入门与实践>第九章Gutenberg书籍下载代码 可能是gutenberg网站改版的缘故,随书附带的getdata.py代码执行会报错. 个人将其进行 ...

最新文章

  1. springboot 整合retry(重试机制)
  2. 若使用numba.cuda.jit加速pytorch训练代码会怎样
  3. Common FileUpload组件的简单使用
  4. Python基础-面向对象编程
  5. matlab中fliter函数,用C语言实现MATLAB中Filter()函数
  6. [luoguP1029] 最大公约数和最小公倍数问题(数论)
  7. Django web开发系列(五)模板
  8. nginx反向代理配置如何去除前缀
  9. MTK 驱动(58)---MTK G-sensor
  10. c函数sscanf的高级技巧(二)
  11. 条件表达式计算个人所得税c语言,个税的计算C语言实现,结果为什么是负的?...
  12. opencv4版本和3版本_Spring Boot 太狠了,一口气发布了 3 个版本!
  13. mysql double 和Oracle,oraclemysql对比
  14. FrameLayout AbsoluteLayout GridLayout用法及实例
  15. C语言程序设计实验报告——实验四
  16. 人工智能实验——八数码难题
  17. 论文写作—如何添加图注、公式、表注的序号,自动编号,交叉引用方式
  18. 第一个开源小软件二维码批量生成工具
  19. (十二:2020.08.28)CVPR 2016 追踪之论文纲要(译)
  20. 美国西北大学计算机硕士offer,已经被心仪的美国院校放入Waitlist!还有多大的转正几率?...

热门文章

  1. 新增表单元素和表单属性
  2. 亚马逊云科技re:Invent现场访谈:定制芯片将是大势所趋
  3. Java篇 之 序列化与反序列化
  4. 新唐NUC980spi与nor-flash(w25q128)通信配置
  5. 计算机元年:1970年1月1日0点
  6. LUOGU P3052 [USACO12MAR]摩天大楼里的奶牛Cows in a Skyscraper
  7. 使用Calendar加一天,减一天
  8. 【C语言基础】什么是字节?
  9. 大数据前端团队生存指南
  10. 7-45 宇宙无敌大招呼