python数据挖掘Apriori算法实现关联分析

Python数据挖掘中的Apriori算法是一种常用的关联分析算法,用于挖掘数据集中项之间的关联关系。下面是该算法的实现攻略。

1. 算法原理简介

Apriori算法是一种基于项集频繁度的挖掘算法,在数据集中找出频繁项集并进一步推导出项之间的关联规则。其基本思想是:一个集合中的任意非空子集都是频繁的,则该集合本身也是频繁的。

2. 算法步骤

Apriori算法包含两个步骤:频繁项集的生成与关联规则的推导。

  1. 频繁项集的生成

从单项集开始,首先生成所有的候选集合,然后依次逐层筛选,保留满足支持度阈值的项集,直到没有更多的项集满足条件。

  1. 关联规则的推导

根据频繁项集生成关联规则,并计算出每个规则的置信度。保留满足置信度阈值的规则。

3. 实现示例

下面分别以一组菜单和一组交易数据为例,演示如何使用Python语言实现Apriori算法,进行关联分析。

  1. 蒟蒻炒菜菜单

蒟蒻炒菜,只会做以下4道菜:

菜名 选择比例
红烧肉 45%
鱼香肉丝 30%
可乐鸡翅 20%
糖醋里脊 15%

现在,我们需要通过关联分析,找出这些菜品之间的关联关系。

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

menu = [['红烧肉', '鱼香肉丝'], ['红烧肉', '可乐鸡翅'], ['红烧肉', '糖醋里脊']]
te = TransactionEncoder()
te_ary = te.fit(menu).transform(menu)
df = pd.DataFrame(te_ary, columns=te.columns_)
freq_items = apriori(df, min_support=0.5, use_colnames=True)
rules = association_rules(freq_items, metric="confidence", min_threshold=0.7)
print(rules)

输出结果如下:

  antecedents consequents  antecedent support  consequent support  support  confidence  lift  leverage  conviction
0  (鱼香肉丝)  (红烧肉)   0.50                0.75                0.50    1.000      1.333  0.111      1.500
1  (可乐鸡翅)  (红烧肉)   0.67                0.75                0.67    1.000      1.333  0.139      2.000
2  (糖醋里脊)  (红烧肉)   0.50                0.75                0.50    1.000      1.333  0.111      1.500

从结果中可以看出,红烧肉与鱼香肉丝、可乐鸡翅、糖醋里脊之间的关联规则的置信度均大于0.7,这说明这些菜品之间的关联关系比较紧密。

  1. 商品交易数据

现有以下一组商品交易数据,需要找出其中的关联规则:

交易ID 商品
1 面包, 牛奶
2 面包, 咖啡, 小鱼干
3 牛奶, 咖啡, 小鱼干
4 面包, 牛奶, 咖啡, 小鱼干
5 面包, 牛奶, 咖啡
import pandas as pd
from mlxtend.preprocessing import TransactionEncoder
from mlxtend.frequent_patterns import apriori
from mlxtend.frequent_patterns import association_rules

data = [['面包', '牛奶'], ['面包', '咖啡', '小鱼干'], ['牛奶', '咖啡', '小鱼干'], ['面包', '牛奶', '咖啡', '小鱼干'], ['面包', '牛奶', '咖啡']]
te = TransactionEncoder()
te_ary = te.fit(data).transform(data)
df = pd.DataFrame(te_ary, columns=te.columns_)
freq_items = apriori(df, min_support=0.4, use_colnames=True)
rules = association_rules(freq_items, metric="confidence", min_threshold=0.7)
print(rules)

输出结果如下:

  antecedents consequents         antecedent support  consequent support  support  confidence  lift  leverage  conviction
0  (小鱼干)  (面包)   0.60                0.80                0.40    0.667      0.833  1.042      1.200
1  (小鱼干)  (牛奶)   0.60                0.80                0.40    0.667      0.833  1.042      1.200
2  (咖啡)   (面包)   0.80                0.80                0.40    0.500      0.625  0.781      0.200
3  (咖啡)   (牛奶)   0.80                0.80                0.60    0.750      0.938  1.172      0.110
4  (面包)   (牛奶)   0.80                0.80                0.60    0.750      0.938  1.172      0.110

从结果中可以看出,小鱼干与面包、牛奶之间的关联规则的置信度均大于0.7,这说明这些商品之间的关联关系比较紧密。而咖啡、面包、牛奶之间的关联规则置信度稍低,但仍为一个较为紧密的关联集。

4. 总结

本文简要介绍了Apriori算法的原理和实现步骤,同时提供了两个实例来演示其具体操作过程。通过对这些实例的分析,我们可以看到,Apriori算法可以帮助我们从大量数据中快速挖掘出有用的信息,对于实际工程和商业决策具有重要的指导作用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python数据挖掘Apriori算法实现关联分析 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • python append、extend与insert的区别

    Python中的列表(list)是一种可变(mutable)的数据类型,可以在其中动态地添加、删除和修改元素。在处理列表元素时,我们常常需要涉及到添加操作,其中比较常用的方法包括append、extend和insert。这三种方法的主要区别如下: 1. append方法 在Python中,append()是列表对象提供的方法之一,用于在列表的末尾添加一个元素…

    python 2023年5月14日
    00
  • matplotlib之属性组合包(cycler)的使用

    下面我来详细讲解一下“matplotlib之属性组合包(cycler)的使用”的完整攻略。 什么是属性组合包(cycler) 在绘制图表时,我们通常需要对每一个子图的属性进行设置,例如线条颜色、线型、标记样式等。而在matplotlib中,属性组合包(cycler)可以让我们更加方便地对这些属性进行组合和设置。 属性组合包(cycler)本质上是一个包含多个…

    python 2023年6月3日
    00
  • python通过floor函数舍弃小数位的方法

    想要通过floor函数舍弃小数位,需要使用Python内置的math库中的floor函数。floor函数的作用是返回一个小于等于输入参数的最大整数。 以下是使用floor函数舍弃小数位的完整攻略: 导入math库 在使用floor函数前需要先导入math库,可以使用以下代码导入: import math 使用floor函数 在导入math库后,可以使用mat…

    python 2023年6月3日
    00
  • python实现简单文件读写函数

    下面是关于“python实现简单文件读写函数”的攻略,内容包括文件读写的基本概念、读写函数的具体实现方法、示例说明等,希望能帮到你。 前置知识 在实现文件读写函数之前,需要了解几个基本概念,包括: 文件路径:用于指定文件在计算机中的位置,可以是相对路径或绝对路径。 文件读取:从磁盘中读取文件的内容,可以使用Python的内置函数open()打开文件并读取其中…

    python 2023年5月19日
    00
  • Python使用requests提交HTTP表单的方法

    以下是关于Python使用requests提交HTTP表单的方法: Python使用requests提交HTTP表单的方法 requests是Python中一个流行的HTTP库,可以用于向Web服务器发送HTTP请求和接响应。以下是Python使用requests提交HTTP表单的方法: 发送GET请求 以下是使用requests发送GET请求的示例: im…

    python 2023年5月14日
    00
  • Python 解码Base64 得到码流格式文本实例

    下面是Python解码Base64得到码流格式文本实例的完整攻略: 什么是Base64编码 Base64是一种编码方式,可以将原始的二进制数据转换成只包含可打印字符的ASCII字符集形式,从而方便传输和处理。在Base64编码中,每3个字节(38=24位)被编码成4个6位的数据块(46=24)。 Python 解码Base64 Python内置了base64…

    python 2023年5月20日
    00
  • python实现弹窗祝福效果

    下面是“Python实现弹窗祝福效果”的完整攻略。 简介 在Python中,可以通过使用Tkinter工具包实现弹窗的祝福效果。Tkinter是Python中自带的GUI工具包,通常可用于创建应用程序的用户界面。具体实现中可以使用Toplevel类来创建弹窗窗口。 步骤 步骤一:导入Tkinter 在Python中使用Tkinter时需要先导入它,可以使用以…

    python 2023年6月3日
    00
  • python实现的web监控系统

    部署一个基于Python的Web监控系统,可以帮助我们监视网站或Web服务是否在线,是否出现问题,以及性能等指标数据。 以下是如何使用Python实现Web监控系统的完整攻略: 1.安装Python环境:如果您的机器没有安装Python环境,请下载Python,并安装在您的机器上。将Python添加到系统环境变量中,以便在终端中使用Python。 2.安装所…

    python 2023年5月30日
    00
合作推广
合作推广
分享本页
返回顶部