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日

相关文章

  • pip报错“AttributeError: ‘NoneType’ object has no attribute ‘group’”怎么处理?

    当使用 pip 安装 Python 包时,可能会遇到 “AttributeError: ‘NoneType’ object has no attribute ‘group'” 错误。这个错误通常是由于在使用 pip 安装包时,出现了一些问题导致的。以下是详细讲解 pip 报错 “AttributeError: ‘NoneType’ object has no…

    python 2023年5月4日
    00
  • python实现SMTP邮件发送功能

    下面是一份简单的“Python实现SMTP邮件发送功能”的攻略。 SMTP是什么? SMTP(Simple Mail Transfer Protocol)是一种用于发送电子邮件的协议。该协议定义了某些规则,以确保邮件的可靠传递。Python的smtplib库提供了SMTP客户端实现。 邮件发送环境配置 在进行SMTP邮件发送之前,需要确保已配置SMTP服务器…

    python 2023年6月3日
    00
  • Python统计列表中的重复项出现的次数的方法

    我来为您提供Python统计列表中重复项出现次数的方法攻略。 方法一:使用Python内置的Counter函数 使用Python的collections库中内置的Counter函数来完成统计操作。Counter函数可以将一个可迭代对象的各项元素出现次数统计出来,返回一个字典,字典键是元素,字典值是元素出现的次数。 示例代码: from collections…

    python 2023年6月3日
    00
  • python安装pil库方法及代码

    这里是关于Python安装PIL库的详细攻略。 1. PIL库简介 PIL(Python Imaging Library)是Python图片处理领域中比较优秀的一个类库,提供了丰富的图片处理模块,可以方便地进行图片操作和处理,适合于图像处理、图像转换、格式转换等领域。但是,需要注意的是, PIL库版本较老,目前已经不再维护,因此推荐使用Pillow库进行替代…

    python 2023年5月14日
    00
  • OpenCV实现人脸识别

    使用OpenCV实现人脸识别攻略 简介 OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,它可以用来进行图像和视频处理,包括人脸识别、图像识别、目标跟踪等。在本篇攻略中,我们将介绍如何使用OpenCV实现人脸识别。 安装OpenCV 首先需要安装OpenCV库。可以通过以下命令安装: !pip i…

    python 2023年5月18日
    00
  • Python字节串类型bytes及用法

    Python字节串类型bytes是一种不可变的序列,用于表示二进制数据。它由一系列连续的字节组成,每个字节的值为0~255。在Python中,bytes类型常用于处理二进制数据,例如处理图片、音频或视频文件时,就需要使用bytes类型。下面将详细讲解Python字节串类型bytes及其用法。 1. bytes类型的创建 bytes类型的创建可以通过字面量或b…

    python 2023年5月20日
    00
  • python subprocess 杀掉全部派生的子进程方法

    好的。首先需要了解一些基本概念: 进程:操作系统中正在运行的程序实例。 子进程:由父进程启动的新进程。 Python中,可以使用subprocess模块创建新的进程,例如: import subprocess process = subprocess.Popen([‘ls’, ‘-l’]) 上述代码启动了一个ls -l命令,返回值为一个Popen对象,该对象…

    python 2023年6月2日
    00
  • 关于Python字符串显示u…的解决方式

    关于Python字符串显示u…的问题,其实是与Python的编码方式有关的。在Python 2版本中,默认使用ASCII编码格式,而在Python 3版本中则默认使用Unicode编码格式。因此,在Python 2版本中,如果出现u…的情况,则表示该字符串是Unicode编码格式,需要进行转换才能正确地进行处理。 下面,我将分享两种解决该问题的方式:…

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