机器学习算法应用——关联规则分析(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,一经查实,立即删除!

相关文章

JAVA_1

JAVA_1 一、JAVA8种数据类型二、JAVA数据类型自动和强制转换三、JAVA运算符 一、JAVA8种数据类型 1.byte 1字节 2.short 2字节 3.int 4字节 4.long 8字节 5.float 4字节 6.double 8字节 7.char 2字节 8.boolean true和false import java.util.Scanner;public class test1_dat…

Python教程:一文了解PageObject模式

PageObject 模式是一种用于测试自动化的设计模式,它将页面的功能和页面的实现分开,提高了代码的可维护性和可重用性。本文将从基础概念开始,逐步介绍 Python 中的 PageObject 模式,并提供详细的代码示例。 1. 什么是 PageObject 模…

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

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

Linux专题-Makefile(1)

1.Makefile中的注释使用 # 2. Makefile中的静默执行。 makefile中,默认情况下执行一行命令前会先把这一行命令打印出来,然后再执行这条命令。如果不想看到打印的命令,则可以使用静默执 行的功能,即仅打印出命令执行的结果。使用方…

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

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

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

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

android——关于app性能优化篇

前言 应用性能优化是指通过各种技术手段和优化策略,提高应用程序的性能,使其能够更高效地运行和响应用户操作。 下面介绍一些常见的应用性能优化方法 一、布局优化 1、减少嵌套 嵌套层数尽量少,使用ConstaintLayout能使层级大大降低尽量使…

浅谈如何利用 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. 机器人新挑战:多指手指操作 在自动化和智能化日益普及的…

mybatis useGeneratedKeys=“true“ keyProperty=“id“的作用

useGeneratedKeys“true” keyProperty"id"的作用 <insert id"save" parameterType"User" useGeneratedKeys"true" keyProperty"id"></insert>作用为&#xff1a;保存成功后往User类中的id属性赋值&#xff0c;…

深度学习中超参数设置

1、batchsize 在训练深度学习模型时&#xff0c;batch size&#xff08;批大小&#xff09;和 epochs&#xff08;迭代次数&#xff09;之间的关系取决于您的数据集大小、模型复杂度、计算资源等因素。下面是一些一般性的指导原则&#xff1a; 较大的 Batch Size&#xff1a;通…

idea导入jar包、打jar包

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

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

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

Spring如何控制Bean的加载顺序

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

maven 分离式打包

pom中插件配置&#xff1a; <!-- Maven Jar 插件配置 --> <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><configuration><archive><!-- 将类路径添加到 MANIFEST.MF 文…

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

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

人脸图像生成(DCGAN)

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

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

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

LMDeploy笔记

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