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

yizhihongxing

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 jieba 中文分词与词频统计的操作

    Python jieba 是一个开源的中文分词工具包,可以帮助我们把文本切分为单个单词或词语,准确地计算文本中各个词语的出现频率,是进行中文自然语言处理的重要基础工具之一。以下是 Python jieba 中文分词与词频统计的操作攻略: 安装与引入 在Python中,安装jieba很简单,只需要在控制台运行 pip install jieba 即可。引入ji…

    python 2023年6月3日
    00
  • python excel和yaml文件的读取封装

    当我们在使用Python处理数据的时候,经常会遇到读取Excel表格、YAML格式文件的需求。为了提高代码重用性和可维护性,我们可以对这些操作进行封装,使得代码更加简洁易懂。 在Python中,我们可以使用openpyxl库来读取Excel文件,PyYAML库来读取YAML文件,下面我们通过示例来具体介绍如何实现这些功能。 1. Python处理Excel文…

    python 2023年5月13日
    00
  • Python中的Function定义方法

    下面是Python中的函数定义方法的完整攻略: 定义函数 在Python中,函数的定义采用def关键字,其基本的语法结构如下: def 函数名(参数列表): 函数体 return 返回值 其中,参数列表中包含了函数调用时需要传入的参数,函数体中包含了函数需要执行的代码,return语句用于返回函数的结果。 以一个简单的例子来说明: def add(a, b)…

    python 2023年6月5日
    00
  • 在 Python 中创建DataFrame的方法

    Python中创建DataFrame的方法有很多种,下面我们将分别介绍几种创建DataFrame的方法。 方法1:使用列表创建DataFrame 首先,我们可以使用列表来创建DataFrame。具体步骤如下: 导入所需模块 import pandas as pd 构建列表数据 data = [[‘Jack’, 18], [‘Rose’, 20], [‘Tom…

    python 2023年5月14日
    00
  • python实现图像增强算法

    Python实现图像增强算法攻略 简介 图像增强旨在改善原始图像的质量,以便更好地进行视觉分析和处理。本攻略将介绍使用Python的常见图像增强技术,包括直方图均衡化、自适应直方图均衡化、对比度受限自适应直方图均衡化等。 直方图均衡化 直方图均衡化是一种全局增强算法,它通过重新分布图像像素的灰度级来增强图像的对比度。Python中的OpenCV库提供了一个名…

    python 2023年6月5日
    00
  • Python中threading.Timer()定时器实现定时任务

    请看下面的完整攻略: 1. 什么是定时器 在Python中,可以使用time模块实现定时器功能,但是这种方式并不优雅且不易维护。所以Python提供了threading.Timer()方法来实现定时器功能,该方法能够在一定的时间间隔之后自动执行指定的函数。 2. Timer方法的语法 threading.Timer()方法的语法如下: Timer(inter…

    python 2023年5月19日
    00
  • 深入理解Python中的元类(metaclass)

    接下来我将为你讲解《深入理解Python中的元类(metaclass)》的完整攻略。 什么是元类? 在Python中,一切皆对象,类也不例外。我们可以使用type()函数动态地创建类: # 使用type()函数动态创建Person类 Person = type(‘Person’, (object,), {‘name’: ‘Tom’}) print(Perso…

    python 2023年5月14日
    00
  • python输出电脑上所有的串口名的方法

    获取电脑上所有的串口名可以通过Python的第三方库pyserial实现。下面是具体的步骤和示例说明: 安装pyserial库 首先,需要在电脑上安装pyserial库。可以通过pip命令进行安装: pip install pyserial 导入pyserial库 在编写Python代码前,需要先导入pyserial库。可以通过以下代码实现: import …

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