机器学习算法应用——关联规则分析(4-4)

关联规则分析(4-4)

关联规则分析(Association Rule Mining)是一种基于频繁项集的分析方法,它以最常出现在一起的元素之间的关系作为分析对象,主要用于发掘大数据中隐藏的关联规则,是数据挖掘技术的重要组成部分。关联规则分析的应用非常广泛,包括但不限于以下几个方面:

  1. 发现物品之间的关联性:通过发现某些物品经常出现在一起,从而发现两个物品之间的关联性。例如,在购买计算机的顾客中,有20%的人也同时购买了打印机。
  2. 预测消费者行为:当消费者购买某一物品时,可以利用关联规则分析来预测他们会购买哪些其他物品。例如,当顾客购买了牛奶和面包时,系统可以推荐给他们黄油或果酱。
  3. 电商交叉销售:在电商平台上,关联规则可以用于交叉销售。通过分析用户的购买历史,找出不同商品之间的关联关系,可以为用户推荐其他相关商品。例如,当用户购买了一台电视机时,可以推荐给他们音响或电视机支架。
  4. 商品陈列优化:关联规则可以用于优化商品陈列。通过分析商品销售数据,挖掘出不同商品之间的关联关系,可以调整商品陈列的位置。例如,如果某个商品与其他商品之间存在较强的关联关系,可以将它们放在相同的陈列区域,以提高销售额。
  5. 预防保健:关联规则可以用于预防保健。通过分析人群的健康数据,挖掘出不同健康指标之间的关联关系,可以为人们提供个性化的健康建议。例如,如果某个人的体重超标,可以建议他进行减肥并加强运动。

关联规则分析的具体方法包括Apriori算法等。Apriori算法是一种经典的关联分析算法,它通过逐层搜索的方式发现频繁项集。该算法首先扫描数据集,统计每个项的支持度,然后根据最小支持度阈值生成候选项集。接下来,通过连接和剪枝操作,逐渐生成更大的候选项集,直到不能再生成新的频繁项集为止。最后,根据频繁项集生成关联规则,并计算它们的置信度。

需要注意的是,关联分析方法在实际应用中需要注意以下几点:首先,选择合适的支持度和置信度阈值,以过滤掉不重要的规则,提高关联分析的效率和准确性。其次,处理大规模数据集时需要考虑算法的效率,选择合适的关联分析算法以提高计算效率。最后,关联分析结果需要结合业务实际进行解释和应用,在发现了关联规则之后,需要进一步分析规则的意义,结合实际情况进行解释,并制定相应的营销策略或业务决策。

  1. 安装mlxtend

        pip install mlxtend

  1. 数据读取与预处理
# 步骤2:数据读取与预处理
data = {'I1': ['西红柿', '排骨', '鸡蛋', '毛巾', '水果刀', '苹果'],'I2': ['西红柿', '茄子', '水果刀', '香蕉'],'I3': ['鸡蛋', '袜子', '毛巾', '肥皂', '苹果', '水果刀'],'I4': ['西红柿', '排骨', '茄子', '毛巾', '水果刀'],'I5': ['西红柿', '排骨', '酸奶', '苹果'],'I6': ['鸡蛋', '茄子', '酸奶', '肥皂', '苹果', '香蕉'],'I7': ['排骨', '鸡蛋', '茄子', '水果刀', '苹果'],'I8': ['土豆', '鸡蛋', '袜子', '香蕉', '苹果', '水果刀'],'I9': ['西红柿', '排骨', '鞋子', '土豆', '香蕉', '苹果']
}transactions = list(data.values())
  1. 使用TransactionEncoder将上图中列表转换为下图中所示DataFrame
# 步骤3:使用TransactionEncoder将列表转换为DataFrame
te = TransactionEncoder()
te_ary = te.fit(transactions).transform(transactions)
print(te_ary)
df = pd.DataFrame(te_ary, columns=te.columns_)
  1. 使用apriori算法挖掘频繁项集(最小支持度为0.3),并输出结果
# 步骤4:使用apriori算法挖掘频繁项集(最小支持度为0.3),并输出结果
frequent_itemsets_apriori = apriori(df, min_support=0.3, use_colnames=True)
print("使用Apriori算法挖掘频繁项集:")
print(frequent_itemsets_apriori.to_string(index=False))

(4)使用FP-growth算法挖掘频繁项集(最小支持度为0.3),并输出结果,与上一问结果进行对比

# 步骤5:使用FP-growth算法挖掘频繁项集(最小支持度为0.3),并输出结果,与上一问结果进行对比
frequent_itemsets_fpgrowth = fpgrowth(df, min_support=0.3, use_colnames=True)
print("\n使用FP-growth算法挖掘频繁项集:")
print(frequent_itemsets_fpgrowth.to_string(index=False))

(5)生成强规则(最小置信度为0.5, 提升度>1),并输出结果

# 步骤6:生成强规则(最小置信度为0.5, 提升度>1),并输出结果
rules = association_rules(frequent_itemsets_apriori, metric="confidence", min_threshold=0.5)
rules = rules[rules['lift'] > 1]
print("\n强规则:")
print(rules.to_string(index=False))

完整代码:

import pandas as pd
from mlxtend.preprocessing import TransactionEncoder
from mlxtend.frequent_patterns import apriori, fpgrowth, association_rules# 步骤2:数据读取与预处理
data = {'I1': ['西红柿', '排骨', '鸡蛋', '毛巾', '水果刀', '苹果'],'I2': ['西红柿', '茄子', '水果刀', '香蕉'],'I3': ['鸡蛋', '袜子', '毛巾', '肥皂', '苹果', '水果刀'],'I4': ['西红柿', '排骨', '茄子', '毛巾', '水果刀'],'I5': ['西红柿', '排骨', '酸奶', '苹果'],'I6': ['鸡蛋', '茄子', '酸奶', '肥皂', '苹果', '香蕉'],'I7': ['排骨', '鸡蛋', '茄子', '水果刀', '苹果'],'I8': ['土豆', '鸡蛋', '袜子', '香蕉', '苹果', '水果刀'],'I9': ['西红柿', '排骨', '鞋子', '土豆', '香蕉', '苹果']
}transactions = list(data.values())# 步骤3:使用TransactionEncoder将列表转换为DataFrame
te = TransactionEncoder()
te_ary = te.fit(transactions).transform(transactions)
print(te_ary)
df = pd.DataFrame(te_ary, columns=te.columns_)# 步骤4:使用apriori算法挖掘频繁项集(最小支持度为0.3),并输出结果
frequent_itemsets_apriori = apriori(df, min_support=0.3, use_colnames=True)
print("使用Apriori算法挖掘频繁项集:")
print(frequent_itemsets_apriori.to_string(index=False))# 步骤5:使用FP-growth算法挖掘频繁项集(最小支持度为0.3),并输出结果,与上一问结果进行对比
frequent_itemsets_fpgrowth = fpgrowth(df, min_support=0.3, use_colnames=True)
print("\n使用FP-growth算法挖掘频繁项集:")
print(frequent_itemsets_fpgrowth.to_string(index=False))# 步骤6:生成强规则(最小置信度为0.5, 提升度>1),并输出结果
rules = association_rules(frequent_itemsets_apriori, metric="confidence", min_threshold=0.5)
rules = rules[rules['lift'] > 1]
print("\n强规则:")
print(rules.to_string(index=False))

 

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

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

相关文章

小众行业风口:Q1季度擦窗机器人行业线上市场销售数据分析

今天给大家分享一个2024年的小众行业增长风口——擦窗机器人。 作为家居自动化里的重要一员,擦窗机器人可以简称为擦窗神器,是为了解决大户型家庭的外窗清洁痛点而存在。而目前,擦窗机器人行业正在走向成熟,且市场需求量居高不下…

苹果公司因iPad广告争议而道歉,承认“未达标”|TodayAI

周二,苹果公司发布了一则新的iPad Pro广告,引起了广泛争议,该公司随后发表道歉声明,承认这则广告“未达标”。这则名为“压碎!”的广告意图展示全新的M4芯片iPad Pro的创意潜力,但却因其表现方式而备受批评…

设计模式学习笔记 - 回顾总结:在实际软件开发中常用的设计思想、原则和模式

概述 本章,先来回顾下整个专栏的知识体系,主要包括面向对象、设计原则、编码规范、重构技巧、设计模式五个部分。 面向对象 相对于面向过程、函数式编程,面向对象是现在最主流的编程范式。纯面向过程的编程方法,现在已经不多见了…

浅谈如何利用 AI 提高内容生产效率?|TodayAI

在数字化时代,内容的创建和分发速度变得尤为关键。人工智能(AI)技术提供了加速这一过程的可能性,不仅提升了生产效率,还改善了内容的质量和受众的接受度。本文深入探讨AI如何在内容生成、分发与推广,以及内…

LangChain连接国内大模型测试|智谱ai、讯飞星火、通义千问

智谱AI 配置参考 https://python.langchain.com/v0.1/docs/integrations/chat/zhipuai/ZHIPUAI_API_KEY从https://open.bigmodel.cn/获取 from langchain_community.chat_models import ChatZhipuAI from langchain_core.messages import AIMessage, HumanMessage, SystemMes…

超越机械抓手:看多指机器人如何灵活运用触觉?

论文标题: Learning Visuotactile Skills with Two Multifingered Hands 论文作者: Toru Lin, Yu Zhang, Qiyang Li, Haozhi Qi, Brent Yi, Sergey Levine, and Jitendra Malik 1. 机器人新挑战:多指手指操作 在自动化和智能化日益普及的…

idea导入jar包、打jar包

一、导入jar包 1.在工程下面新建一个lib目录,将jar包放在lib目录下面 2.按步骤导入jar包 -接下来选择jar包所在的位置进行导入 -下图中标红框位置就是刚刚导入的jar包 二、直接用idea打jar包 -下图中Main Class就是选择程序中的Main函数 -右侧标红框位置表示…

VSCode Python 自动格式化代码(black)不生效

弄了很长时间,各种尝试,就想实现保存后自动格式化代码,用户设置,工作区设置,因为环境较多以为有啥冲突,就是没找到。后来看到一条评论说Python版本低,想到了版本问题。然后就看到以下描述 记录…

Spring如何控制Bean的加载顺序

前言 正常情况下,Spring 容器加载 Bean 的顺序是不确定的,那么我们如果需要按顺序加载 Bean 时应如何操作?本文将详细讲述我们如何才能控制 Bean 的加载顺序。 场景 我创建了 4 个 Class 文件,分别命名为 FirstInitialization Se…

python数据分析——数据的选择和运算

数据的选择和运算 前言一、数据选择NumPy的数据选择一维数组元素提取示例 多维数组行列选择、区域选择示例 花式索引与布尔值索引布尔索引示例一示例二 花式索引示例一示例二 Pandas数据选择Series数据获取DataFrame数据获取列索引取值示例一示例二 取行方式示例loc() 方法示例…

人脸图像生成(DCGAN)

一、理论基础 1.什么是深度卷积对抗网络(Deep Convolutional Generative Adversarial Network,) 深度卷积对抗网络(Deep Convolutional Generative Adversarial Network,DCGAN)是一种生成对抗网络&#xf…

网工内推 | 软件测试工程师,有软考中、高级认证优先

01 上海碧蔓智能科技有限公司 招聘岗位:软件测试工程师 职责描述: 1、负责软件产品的测试工作,对测试进度和测试质量负责; 2、参与业务需求、设计方案的讨论,负责编写测试方案、测试计划、测试用例,搭建测…

LMDeploy笔记

随谈模型部署 模型部署包含的内容很多,来聊聊。 访存bottleneck 首先,基于transformer的计算是访存密集型任务。 so? 过去,我们表达模型的性能,通常会用ops,macs这些指标,也计算量来衡量模型的推理时间&#xff…

JSP ssm 智能水表管理myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 JSP ssm 智能水表管理系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采…

Vue自定义封装音频播放组件(带拖拽进度条)

Vue自定义封装音频播放组件(带拖拽进度条) 描述 该款自定义组件可作为音频、视频播放的进度条,用于控制音频、视频的播放进度、暂停开始、拖拽进度条拓展性极高。 实现效果 具体效果可以根据自定义内容进行位置调整 项目需求 有播放暂停…

使用Python实现DataFrame中奇数列与偶数列的位置调换

目录 一、引言 二、背景知识 三、问题描述 四、解决方案 五、案例分析与代码实现 六、技术细节与注意事项 七、扩展与应用 八、封装为函数 九、错误处理与健壮性 十、性能优化 十一、总结与展望 一、引言 在数据处理和分析中,数据框(DataFra…

16地标准化企业申请!安徽省工业和信息化领域标准化示范企业申报条件

安徽省工业和信息化领域标准化示范企业申报条件有哪些?合肥市 、黄山市 、芜湖市、马鞍山、安庆市、淮南市、阜阳市、淮北市、铜陵市、亳州市、宣城市、蚌埠市、六安市 、滁州市 、池州市、宿州市企业申报安徽省工业和信息化领域标准化示范企业有不明白的可在下文了…

药物代谢动力学学习笔记

一、基本概念 二、经典房室模型 三、非线性药物代谢动力学 四、非房室模型 五、药代动力学与药效动力学 六、生物等效性评价 七、生物样品分析方法 基本概念 生物样品:生物机体的全血、血浆、血清、粪便、尿液或其他组织的样品 特异性,specificity&…

信息技术自主可控的意义,针对国产化替换,服务器虚拟化或比公有云更具优势

我们之前在文章《博通收购VMware后,经销商和用户如何应对?新出路:虚拟化国产替代,融入信创云生态》中提到: 从信创整体发展和政策标准来看,供应商必须满足两个条件:一是融入国产信息技术生态&am…

FDM3D打印系列——系列模型的身高比例问题

大家好,我是阿赵。   最近又打印了一个拳皇的角色手办,不过在这个过程中,发现了一个不同角色之前比例的问题,和大家分享一下。   这个就是这次打印的模型,估计大家都很熟悉: 没错,就是拳皇…