我的编程空间,编程开发者的网络收藏夹
学习永远不晚

详解Python 关联规则分析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

详解Python 关联规则分析

1. 关联规则

大家可能听说过用于宣传数据挖掘的一个案例:啤酒和尿布;据说是沃尔玛超市在分析顾客的购买记录时,发现许多客户购买啤酒的同时也会购买婴儿尿布,于是超市调整了啤酒和尿布的货架摆放,让这两个品类摆放在一起;结果这两个品类的销量都有明显的增长;分析原因是很多刚生小孩的男士在购买的啤酒时,会顺手带一些婴幼儿用品。

不论这个案例是否是真实的,案例中分析顾客购买记录的方式就是关联规则分析法Association Rules。

关联规则分析也被称为购物篮分析,用于分析数据集各项之间的关联关系。

1.1 基本概念

  • 项集:item的集合,如集合{牛奶、麦片、糖}是一个3项集,可以认为是购买记录里物品的集合。
  • 频繁项集:顾名思义就是频繁出现的item项的集合。如何定义频繁呢?用比例来判定,关联规则中采用支持度和置信度两个概念来计算比例值
  • 支持度:共同出现的项在整体项中的比例。以购买记录为例子,购买记录100条,如果商品A和B同时出现50条购买记录(即同时购买A和B的记录有50),那边A和B这个2项集的支持度为50%

  • 置信度:购买A后再购买B的条件概率,根据贝叶斯公式,可如下表示:

提升度:为了判断产生规则的实际价值,即使用规则后商品出现的次数是否高于商品单独出现的评率,提升度和衡量购买X对购买Y的概率的提升作用。如下公式可见,如果X和Y相互独立那么提升度为1,提升度越大,说明X->Y的关联性越强

1.2 关联规则Apriori算法

关联规则方法的步骤如下:

  • 发现频繁项集
  • 找出关联规则

Apriori算法是经典的关联规则算法。Apriori算法的目标是找到最大的K项频繁集。Apriori算法从寻找1项集开始,通过最小支持度阈值进行剪枝,依次寻找2项集,3项集直到没有更过项集为止。

下面是一个案例图解:

  • 图中有4个记录,记录项有1,2,3,4,5若干
  • 首先先找出1项集对应的支持度(C1),可以看出4的支持度低于最小支持阈值,先剪掉(L1)。
  • 从1项集生成2项集,并计算支持度(C2),可以看出(1,5)(1,2)支持度低于最小支持阈值,先剪掉(L2)
  • 从2项集生成3项集,(1,2,3)(1,2,5)(2,3,5)只有(2,3,5)满足要求
  • 没有更多的项集了,就定制迭代

2. mlxtend实战关联规则

关联规则目前在scikit-learn中并没有实现。这里介绍另一个python库mlxtend。

2.1 安装


pip install mlxtend

2.2 简单的例子

来看下数据集:


import pandas as pd

item_list = [['牛奶','面包'],
    ['面包','尿布','啤酒','土豆'],
    ['牛奶','尿布','啤酒','可乐'],
    ['面包','牛奶','尿布','啤酒'],
    ['面包','牛奶','尿布','可乐']]

item_df = pd.DataFrame(item_list)

数据格式处理,传入模型的数据需要满足bool值的格式


from mlxtend.preprocessing import TransactionEncode

te = TransactionEncoder()
df_tf = te.fit_transform(item_list)
df = pd.DataFrame(df_tf,columns=te.columns_)

  • 计算频繁项集

from mlxtend.frequent_patterns import apriori

# use_colnames=True表示使用元素名字,默认的False使用列名代表元素, 设置最小支持度min_support
frequent_itemsets = apriori(df, min_support=0.05, use_colnames=True)

frequent_itemsets.sort_values(by='support', ascending=False, inplace=True)

# 选择2频繁项集
print(frequent_itemsets[frequent_itemsets.itemsets.apply(lambda x: len(x)) == 2])  

  • 计算关联规则

from mlxtend.frequent_patterns import association_rules

# metric可以有很多的度量选项,返回的表列名都可以作为参数
association_rule = association_rules(frequent_itemsets,metric='confidence',min_threshold=0.9)

#关联规则可以提升度排序
association_rule.sort_values(by='lift',ascending=False,inplace=True)    
association_rule
# 规则是:antecedents->consequents

选择出来关联规则之后,根据提升度排序后,可能最高提升度的规则是在我们常识范围内,那这个规则的价值就不高。所以我们要在产生的规则中根据业务特点进行筛选,像开篇提到(啤酒->尿布)完全不同的品类之间的关联。

笔者最近用关联规则分析用户的体检报告记录,也得出了关于各个病症的有意义的关联,如并发症,不同病症相互影响等。

3. 总结

本分介绍关联规则的基本概念和经典算法Apriori,以及python的实现库mlxtend使用。

总结如下:

  • 关联规则用于分析数据集各项之间的关联关系,想一想啤酒和尿布的故事
  • 三个重要概念:支持度,置信度和提升度
  • Apriori通过迭代先找1项集,用支持度过滤项集,逐步找出所有k项集
  • 用置信度或提升度来选择满足的要求的规则
  • mlxtend对数据要求转换成bool值才可用

以上就是详解Python 关联规则分析的详细内容,更多关于Python 关联规则分析的资料请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

详解Python 关联规则分析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python中有哪些关联规则

这期内容当中小编将会给大家带来有关Python中有哪些关联规则,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1.1 基本概念 项集:item的集合,如集合{牛奶、麦片、糖}是一个3项集,可以认为是购买记录
2023-06-15

Python中关联的规则有哪些

今天就跟大家聊聊有关Python中关联的规则有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1. 关联规则大家可能听说过用于宣传数据挖掘的一个案例:啤酒和尿布;据说是沃尔玛超市在
2023-06-14

Python的正则规则举例分析

这篇文章主要讲解了“Python的正则规则举例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python的正则规则举例分析”吧!问题复现我们都知道,Python有个正则规则\w,几乎所有
2023-06-02

怎么用Python代码实现Apriori关联规则算法

这篇文章主要介绍了怎么用Python代码实现Apriori关联规则算法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用Python代码实现Apriori关联规则算法文章都会有所收获,下面我们一起来看看吧。一
2023-06-29

详解Python语言的变量命名规则

Python语言变量命名规则详解Python作为一种广泛应用的编程语言,具备简洁、易读的特点,其中变量命名规则是开发者必须熟悉和遵守的重要内容。本文将详细解释Python语言变量命名规则,并提供具体的代码示例。变量命名的基本规则在Py
详解Python语言的变量命名规则
2024-01-20

Python函数中的作用域规则实例分析

这篇文章主要介绍了Python函数中的作用域规则实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python函数中的作用域规则实例分析文章都会有所收获,下面我们一起来看看吧。Python是静态作用域语言,
2023-06-29

如何深入理解Python中的Apriori关联分析算法

今天就跟大家聊聊有关如何深入理解Python中的Apriori关联分析算法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。在美国有这样一家奇怪的超市,它将啤酒与尿布这样两个奇怪的东西放
2023-06-02

阿里云服务器分组授权规则详解

本文将详细讲解阿里云服务器分组授权规则的设置方法,包括分组授权的基本概念、创建分组、授权规则设置等,帮助用户更好地理解和掌握这个功能,提高运维效率。一、阿里云服务器分组授权规则基本概念阿里云服务器分组授权规则是一种用于管理服务器资源的策略,可以将服务器资源分组,然后对每个分组进行不同的权限设置,实现资源的精细化管
阿里云服务器分组授权规则详解
2023-11-22

Python中使用正则表达式及正则表达式匹配规则详解

这篇文章主要介绍了Python中使用正则表达式以及正则表达式匹配规则,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2023-03-22

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录