关联规则(Apriori算法)

news2024/11/25 0:46:04

文章目录

  • 1 关联规则
    • 1.1 关联规则简介
    • 1.2 典型例子
    • 1.3 频繁项集的评估标准
      • 1.3.1 支持度(support)
      • 1.3.2 置信度(confidence)
      • 1.3.3 提升度(lift)
    • 1.4 最小支持度、最小置信度
  • 2 Python实战
    • 2.1 Python实战关联规则
    • 2.2 数据集制作
    • 在这里插入图片描述
    • 2.3 电影数据集题材关联分析
  • 3 Apriori算法实现

1 关联规则

1.1 关联规则简介

  • 通过调查,在美国超市,在购买婴儿尿布的年轻父亲中,有30%-40%的人同时会买一些啤酒。随后超市将尿布和啤酒放在一起,明显增加了销售额。
  • 若两个或多个变量的取值之间存在某种规律性,则称为关联。
  • 关联规则是寻找在同一个事件中出现的不同项的相关性,例如,在一次购买活动中所买不同商品的相关性。

1.2 典型例子

在这里插入图片描述

  • 事物:每一条为一个事物。例如,上述例子包含5个事物。

  • :每一个商品为一个项。例如,啤酒、尿布等。

  • 项集:多个项组成的集合称为项集。

    {啤酒}、{尿布}等都是1-项集。
    {啤酒,尿布}、{豆奶,尿布}等都是2-项集。
    {豆奶,尿布,啤酒}等都是3-项集。

  • X–>Y含义
    X和Y是项集
    X是规则前项(antecedent)
    Y是规则后项(consequent)

1.3 频繁项集的评估标准

1.3.1 支持度(support)

支持度是一个项集在所有事物中出现的频率

项集X的支持度S(X) = X 出现的次数 总数据集 X出现的次数\over{总数据集} 总数据集X出现的次数

在1.2的例子中,{尿布,啤酒}出现了3次,所以support({尿布,啤酒}) = 3 5 3\over{5} 53=0.6

1.3.2 置信度(confidence)

置信度C(X—>Y)表示在购买X的前提下也购买Y的可能性。

C(X—>Y) = X 和 Y 同时出现的次数 X 出现的次数 X和Y同时出现的次数\over{X出现的次数} X出现的次数XY同时出现的次数

在1.2的例子中,C(尿布—>啤酒) = 3 4 3\over{4} 43 = 0.75

1.3.3 提升度(lift)

支持度和置信度是有局限性的,⽀持度的缺点在于许多潜在的有意义的模式由于包含⽀持度小的项而被删去,置信度的缺点在于置信度度量会忽略规则后件中出现的项集的⽀持度,高置信度的规则有时可能出现误导。

lift(X—>Y) = C ( X — > Y ) S ( Y ) C(X—>Y) \over{S(Y)} S(Y)C(X>Y)

  • 提升度 > 1,则 X —> Y 是有效的强关联规则
  • 提升度 ≤ 1,则 X —> Y 是无效的强关联规则

if lift = 1,X与Y独立,X对Y出现的可能性没有提升作用,其值越大,则表明X对Y的提升程度越大,也表明关联性越强

1.4 最小支持度、最小置信度

  • 最小支持度(minsup)是用户或专家定义的衡量支持度的一个阈值,表示项目集在统计意义上的最低重要性。
  • 最小置信度(minconf)是用户或专家定义的衡量置信度的一个阈值,表示关联规则的最低可靠性。
  • 同时满足最小支持度阈值和最小置信度阈值的规则称作强规则
  • 给定事务的集合T,关联规则发现是指找出支持度大于等于 minsup 并且置信度大于等于minconf 的所有规则。

2 Python实战

2.1 Python实战关联规则

from mlxtend.frequent_patterns import apriori
from mlxtend.frequent_patterns import association_rules
import pandas as pd
#自定义一份购物数据集
data={'ID':[1,2,3,4,5,6],'Onion':[1,0,0,1,1,1],
      'Potato':[1,1,0,1,1,1],'Burger':[1,1,0,0,1,1],
      'Milk':[0,1,1,1,0,1],'Beer':[0,0,1,0,1,0]}
df = pd.DataFrame(data)
df

在这里插入图片描述

frequent_itemsets = apriori(df[['Onion','Potato','Burger','Milk','Beer']],min_support=0.5,use_colnames=True)
frequent_itemsets

在这里插入图片描述

rules = association_rules(frequent_itemsets,metric='lift',min_threshold=1)
rules[(rules['lift']>1.125) & (rules['confidence']>0.8)]

在这里插入图片描述
结果表明:

  • (洋葱和马铃薯)(汉堡和马铃薯)可以搭配着卖
  • 如果顾客一句买了汉堡和洋葱,那么他买马铃薯的可能性也比较大,可以进行推荐。

2.2 数据集制作

retail_shopping_basket = { 
    'ID': [1, 2, 3, 4, 5, 6],
    'Basket':[
        ['Onion', 'Beer', 'Chicken', 'Drink', 'Burger', 'Chips', 'Disper'],
        ['Onion', 'Beer', 'Chicken', 'Burger', 'Chips', ],
        ['Onion', 'Chicken', 'Drink', 'Burger', 'Chips', 'Disper'],
        ['Onion', 'Chicken', 'Drink'],
        ['Beer', 'Chicken', 'Drink', 'Burger', 'Chips', 'Disper'],
        ['Drink', 'Burger', 'Chips', 'Disper']
    ]
}
retail = pd.DataFrame(retail_shopping_basket)
retail

在这里插入图片描述

retail_id = retail.drop('Basket',1)
retail_Basket = retail.Basket.str.join(',')
retail_Basket

在这里插入图片描述

retail_Basket = retail_Basket.str.get_dummies(',')
retail_Basket

在这里插入图片描述

retail = retail_id.join(retail_Basket)
retail

在这里插入图片描述

2.3 电影数据集题材关联分析

movies = pd.read_csv('movies.csv')
movies.head(10)

在这里插入图片描述

movies_ohe = movies.drop('genres',1).join(movies.genres.str.get_dummies())
movies_ohe.head()

在这里插入图片描述

pd.options.display.max_columns=100
movies_ohe.set_index(['movieId','title'],inplace=True)
movies_ohe.head()

在这里插入图片描述

frequent_itemsets_movies = apriori(movies_ohe,use_colnames=True,min_support=0.025)
frequent_itemsets_movies

在这里插入图片描述

rules_movies = association_rules(frequent_itemsets_movies,metric='lift',min_threshold=1.25)
rules_movies

在这里插入图片描述

rules_movies[(rules_movies.lift>3)].sort_values(by=['lift'])

在这里插入图片描述
由结果可知:

  • Adventure和Action题材比较相关
  • Mystery和Thriller题材比较相关

3 Apriori算法实现

待补充

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1718215.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于网关的ip频繁访问web限制

一、前言 外部ip对某一个web进行频繁访问,有可能是对web进行攻击,现在提供一种基于网关的ip频繁访问web限制策略,犹如带刀侍卫,审查异常身份人员。如发现异常或者暴力闯关者,即可进行识别管制。 二、基于网关的ip频繁访…

面向Java程序员的Go工程开发入门流程

对于一个像我这样没有go背景的java程序员来说,使用go开发一个可用的程序的速度是肉眼可见的缓慢。 其难点不在于go语言本身,而是搭建整个工程链路的过程,即所谓的“配环境”。 本文主要讲述如何配出一个适合go开发的环境,以免有同…

STL:vector

文章目录 标准库中的vectorvector的构造vector的迭代器vector的容量vector的元素访问data vector的修改 vector和string的迭代器失效问题resize、reserve、insert、push_back、assigneraseg 和 vs 的区别string解决迭代器失效的方法 标准库中的vector vector是表示可变大小数组…

【学习Day3】计算机基础

✍🏻记录学习过程中的输出,坚持每天学习一点点~ ❤️希望能给大家提供帮助~欢迎点赞👍🏻收藏⭐评论✍🏻指点🙏 1.5.4 Cache替换算法 Cache的页面淘汰算法 常用替换算法有: • 随机替换算法RA…

浏览器【详解】Cookie(含Cookie的起源,属性,个数和大小限制,作用,优点,缺点,JS 的操作方法等)

什么是 Cookie ? Cookie 是一段不超过 4KB 的小型文本数据,由一个名称(Name)、一个值(Value)和其它几个用于控制 Cookie 有效期、安全性、使用范围的可选属性组成。 浏览器为什么需要 Cookie ? …

atk-esp8266-01刷新固件-链接-配置

1.刷新固件 加载固件: 编写地址: 2.链接IO-->GND 关闭其他所有占用此串口的软件; 重新上电 开始刷新固件: 刷新完成; 拆掉IO与GND链接。 3.配置 ATCWMODE_DEF3 //配置模式 ATRST //重启 …

Linux学习笔记(清晰且清爽)

本文首次发布于个人博客 想要获得最佳的阅读体验(无广告且清爽),请访问本篇笔记 Linux安装 关于安装这里就不过多介绍了,安装版本是CentOS 7,详情安装步骤见下述博客在VMware中安装CentOS7(超详细的图文教…

3d模型移动中心点偏移太远怎么解决?---模大狮模型网

在3D建模和动画制作中,移动模型时确保中心点的准确性至关重要。然而,有时候在移动模型时,中心点可能会偏移得太远,导致操作不便甚至影响到后续的工作流程。本文将介绍在3D模型移动中心点偏移太远时的常见原因,并提供解…

基于Linux的文件操作(socket操作)

基于Linux的文件操作(socket操作) 1. 文件描述符基本概念文件描述符的定义:标准文件描述符:文件描述符的分配: 2. 文件描述符操作打开文件读取文件中的数据 在linux中,socket也被认为是文件的一种&#xff…

JSON源码类学习

json源码学习 parse把json转换成Object parseObject转换为jsonObject parseArray从字符串数组解析成真正的数组 tojsonString把真正的json解析json 数组的方法 作用:类型转换 为什么要做类型转换 开发一个方法验证 这个方法先封装方法,是否为json …

长难句打卡5.31

In a workplace that’s fundamentally indifferent to your life and its meaning, office speak can help you figure out how you relate to your work—and how your work defines who you are. 在一个对你的生活和生活意义漠不关心的工作场所中,办公室语言可以…

绿色积分合法化 时代牺牲品!云联惠

各位朋友,我是吴军,在科技产业界从事多年市场分析工作。今天,我想与你们共同探讨一个曾引起广泛关注的企业案例——云联惠。 云联惠,这个曾被誉为商业创新典范的平台,一度风光无限。在其鼎盛时期,它不仅吸引…

【Python】解决Python报错:IndexError: queue index out of range

🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…

让WSL内核使用BBR拥塞控制算法

使用git命令从Linux内核的Git仓库中获取源代码,$ git clone --depth 1 https://github.com/microsoft/WSL2-Linux-Kernel.git,找到对应的内核版本$ git log --grep="5.15.146.1-microsoft-standard-WSL2",回退到本机安装的内核版本$ git checkout <commit-id&…

失之毫厘差之千里之load和loads

起源 最近在读pandas库的一些文档的时候&#xff0c;顺便也会将文档上的一些demo在编辑器中进行运行测试&#xff0c;其中在读到pandas处理Json数据这一节的时候&#xff0c;我还是像往常一样&#xff0c;将文档提供的demo写一遍&#xff0c;结果在运行的时候&#xff0c;直接…

Linux - 磁盘管理1

1.磁盘的分区 1.1 磁盘的类型&#xff08;标签&#xff09; MBR&#xff1a; ① 最大支持2T以内的硬盘 ② 有主分区p 拓展分区e 逻辑分区l之分 > 主分区编号1-4&#xff0c;主分区可以格式化使用 拓展分区编号1-4&#xff0c;拓展分区不能格式化 拓展分区最多能有1个&…

01Linux以及操作系统概述

课程目标 1.了解现代操作系统的整体构成及发展历史 2.了解Linux操作系统及其分支版本 3.直观上理解服务器端与桌面端版本的区别 课程实验 1.通过对CentOS和Ubuntu的演示&#xff0c;直观理解Linux与Windows的异同 课堂引入 本章内容主要为大家详细讲解Linux操作系统(以下简…

STM32—USART 串口通讯

目录 1 、 电路构成及原理图 2 、编写实现代码 main.c usart.c 3、代码讲解 4、烧录到开发板调试、验证代码 5、检验效果 STM32F103RCT6开发板——全集成开发板,让开发更简单&#xff01; 此笔记基于朗峰 STM32F103 系列全集成开发板的记录。 1 、 电路构成及原理图 …

香橙派OrangePi AIpro上手笔记——之USB摄像头目标检测方案测试(二)

整期笔记索引 香橙派OrangePi AIpro上手笔记——之USB摄像头目标检测方案测试&#xff08;一&#xff09; 香橙派OrangePi AIpro上手笔记——之USB摄像头目标检测方案测试&#xff08;二&#xff09; 香橙派OrangePi AIpro上手笔记——之USB摄像头目标检测方案测试&#xff08;…

安防监控视频平台LntonCVS视频监控汇聚平台遏制校园暴力保护校园学生安全应用方案

未成年人被誉为祖国的花朵&#xff0c;是我们国家的未来。然而&#xff0c;最近频繁曝出的未成年霸凌事件却引发了社会的广泛关注。这些事件手段残忍&#xff0c;事态恶劣&#xff0c;引发了全社会对如何保护未成年身心健康、规避霸凌事件发生的深刻思考。 为了更好地保障学生的…