实验一:关联规则 (见U盘)

实验名称                关联规则         

实验时间

 3  14  日星期 3.4

实验目的

利用 Python 对关联规则算法进行调用。能够使用 Python 调用关联规则算法。首先使用apriori ,fpgrowth 或者 fpmax 函数来找出频繁项集,然后使用 association_rules 函数来找出关联规则,最后对关联规则做一些过滤操作。

实验环境

Anaconda3

jupyter notebook

实验内容(步骤、方法、算法、程序)

首先使用apriori ,fpgrowth 或者 fpmax 函数来找出频繁项集,然后使用 association_rules 函数来找出关联规则,最后对关联规则做一些过滤的操作。

步骤 1 :

生成频繁项集

(1)首先创建一个由 fpgrowth 函数生成的频繁项集的DataFrame:

(2)接下来,我们可以使用mlxtend 库中的association_rules 函数来找出关联规则。

(3)我们可以看到,关联规则包括了前件、后件、支持度、置信度、提升度等信息。例如,第一条规则表示如果顾客购买了芸豆,那么他们很可能也会购买鸡蛋,置信度为 0.8,提升度为1.0。

步骤 2 :

过滤规则

(1)计算先行词长度。

(2)可以使用多重过滤选择。

部分源程序代码/实验配置

实验结果与结论

!pip install mlxtend

import pandas as pd

from mlxtend.frequent_patterns import apriori

from mlxtend.frequent_patterns import association_rules

import warnings

warnings.filterwarnings('ignore')

import pandas as pd

from mlxtend.preprocessing import TransactionEncoder

from mlxtend.frequent_patterns import apriori, fpmax, fpgrowth

#假设我们有一个超市销售记录的数据集,其中每个记录包含了顾客购买的商品清单。我们想要找出哪些商品经常一起被购买。

dataset = [['牛奶', '洋葱', '香料', '芸豆', '鸡蛋', '酸奶'],

['菠萝', '洋葱', '香料', '芸豆', '鸡蛋', '酸奶'], ['牛奶', '苹果', '芸豆', '鸡蛋'],

['牛奶', '黄瓜', '玉米', '芸豆', '酸奶'],

['玉米', '洋葱', '芸豆', '冰淇淋', '鸡蛋']]

#我们可以使用 mlxtend 库中的 fpgrowth 函数来找出频繁项集和关联规则。

#将数据集转换为布尔矩阵

te = TransactionEncoder()

te_ary = te.fit(dataset).transform(dataset)

df = pd.DataFrame(te_ary, columns=te.columns_) # 使用 fpgrowth 算法找出频繁项集

"""

fpgrowth 算法参数解释:

1. transactions:指待挖掘的数据集,可以是一个 DataFrame 或者一个 List,其中每一行代表一个事务,每一列代表一个项。

2. min_support:指频繁项集的最小支持度,用来筛选频繁项集。默认值为 0.5。

3. use_colnames:指是否使用列名作为项集的元素,如果为 True,则返回结果中的项集元素为列名,否则为列的索引。默认值为 False。

4. max_len:指频繁项集中包含的最大项数,用来控制算法的搜索空间。默认值为 None,表示不限制最大项数。

5. verbose:指是否输出详细的运行日志,如果为 True,则输出运行过程中的详细信息,否则不输出。默认值为 0。

6. 返回值:返回一个 DataFrame,其中包含了所有满足最小支持度要求的频繁项集及其支持度。"""

frequent_itemsets = fpgrowth(df, min_support=0.6, use_colnames=True) ### 也可以采用 apriori 和 fpmax 算法

#frequent_itemsets = apriori(df, min_support=0.6, use_colnames=True) #frequent_itemsets = fpmax(df, min_support=0.6, use_colnames=True) # 打印频繁项集

print(frequent_itemsets)

from mlxtend.frequent_patterns import association_rules # 找出关联规则

rules=association_rules(frequent_itemsets, metric="confidence",  min_threshold=0.7) # 打印关联规则

print(rules)

rules = association_rules(frequent_itemsets, metric="lift", min_threshold=1.1)

Rules

rules = association_rules(frequent_itemsets, metric="lift", min_threshold=1.1)

rules

rules["antecedent_len"] = rules["antecedents"].apply(lambda x: len(x))

rules

rules[ (rules['antecedent_len'] >= 2) &

(rules['confidence'] > 0.75) & (rules['lift'] > 1.2) ]

rules[rules['antecedents'] == {'鸡蛋', '芸豆'}]

antecedent_sele = rules['antecedents'] == frozenset({'洋葱', '芸豆'}) # or frozenset({'芸豆', '洋葱'})

consequent_sele = rules['consequents'] == frozenset({'鸡蛋'})

final_sele = (antecedent_sele & consequent_sele)

rules.loc[ ~final_sele ]

实验心得与小结

我们在实验中学习了FP-Growth 关联,它利用 FP 树来存储频繁项集,从而减少搜索空间,提高搜索效率。除此之外,还可以将 FP-Growth 替换为Apriori 或者 FPMax,Apriori 它能够发现任意长度的频繁项集,并能够发现复杂的关联规则,FPMax 通过剪枝和过滤来减少搜索空间,从而提高了算法的效率,找到频繁模式的最大项集。

指导教师

评议

成绩评定:                 指导教师签名:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vivado Placement、时钟和I/O放置、全局布局、详细布局和布局后优化

安置 Vivado Design Suite放置程序将网表中的单元放置到目标AMD中的特定站点上装置与其他实现命令一样,Vivado放置程序工作于并更新,内存中的设计。 设计布局优化 Vivado砂矿器同时优化了以下方面的设计布局: •定时松弛:选择…

不囤货不进货的“抖音小店”,到底靠啥盈利?内行人道出背后原因

大家好,我是电商花花。 在互联网的快速发展下,网购给人们带来了很大的便利,而网络下的电商也是发展迅速,带动了很多人想要创业做电商,找副业的想法。 随着抖音直播电商的快速崛起,抖音小店和无货源运营的…

如何把Spring的Bean注入到Quartz中

前言 今天写Quartz定时调度的时候遇到了想调用增删改查操作数据库的情况 这时候在Quartz容器中 直接注入bean 但是会出现bean为空的情况, 一、为什么为空 这种情况是因为Quartz容器 中 它读取不到Spring 容器中的bean,所以我们需要加一些方法让他读到 …

2024年【危险化学品经营单位安全管理人员】考试及危险化学品经营单位安全管理人员考试题

题库来源:安全生产模拟考试一点通公众号小程序 危险化学品经营单位安全管理人员考试根据新危险化学品经营单位安全管理人员考试大纲要求,安全生产模拟考试一点通将危险化学品经营单位安全管理人员模拟考试试题进行汇编,组成一套危险化学品经…

[JavaWeb学习日记]Vue工程,springboot工程整合Mybatis,数据库索引

目录 一.Vue工程 安装NodeJS与Vue-cli Vue项目创建 启动Vue项目:点击npm脚本serve 改端口:在vue.config.js下 Vue文件组成:templatescriptstyle 使用element 前端服务器当前使用Ngix 主要编写的文件 二.SpringBoot的Web工程 启动带…

Spring boot java: 无效的目标发行版: 18

idea 搭建spring boot 报错java: 无效的目标发行版: 18 本人jdk 1.8 解决方案如下:

Filter实现请求日志记录

将锁有得外部访问都记录在日志文件里面,设计这个功能是为了(为什么): 1. 在不引入Promentheus进行接口监控时,基于日志文件就可以实现整个项目得监控。 2. 当出现问题时,可以基于此进行流量重放。 效果如…

HNU-计算机系统-实验1-原型机vspm1.0-(二周目玩家视角)

前言 二周目玩家,浅试一下这次的原型机实验。总体感觉跟上一年的很相似,但还是有所不同。 可以比较明显地感觉到,这个界面越来越好看了,可操作与可探索的功能也越来越多了。 我们HNU的SYSTEM真的越来越好了!&#x…

图像处理与视觉感知---期末复习重点(3)

文章目录 一、空间域和频率域二、傅里叶变换三、频率域图像增强 一、空间域和频率域 1. 空间域:即所说的像素域,在空间域的处理就是在像素级的处理,如在像素级的图像叠加。通过傅立叶变换后,得到的是图像的频谱,表示图…

ElasticSearch 看这一篇就够了,详解!!!

目录 核心概念 索引 映射 文档 基本操作 索引 创建 查询 删除 映射 创建 查询 文档 添加文档 查询文档 删除文档 更新文档 批量操作 高级查询 说明 语法 常见检索 查询所有[match_all] 关键词查询(term) 范围查询[range] 前缀查询[prefix] 通配符查询…

【智能算法】人工水母搜索算法(JS)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.代码实现4.参考文献 1.背景 2020年,Chou 等人受到水母运动行为启发,提出了人工水母搜索算法(Artificial Jellyfish Search Optimizer, JS)。 2.算法原理 2.1算法思想 JS模拟了水母的搜索行为&#xf…

要将镜像推送到GitLab的Registry中的步骤

1、通过cli 模式登录gitlab (命令行模式) docker login git.asc-dede.de Username: haiyang Password: Login Succeeded 2、查看我的本地镜像: 3,推送镜像apollo_core到对应的gitlab项目的Registry 中 docker push registry.gi…

汽车电子零部件(4):行泊一体ADAS

前言: 现阶段智能汽车行业正在大规模力推无限接近于L3的L2++或L2.9自动驾驶量产落地,类似于当初智能手机替换传统手机的行业机会期。智能汽车常见的智能驾驶功能包括: 行车场景:自适应巡航控制ACC;自动变道辅助ALC;交通拥堵辅助TJA;车道居中LCC;领航辅助NOA; 泊车场…

基于R语言的水文、水环境模型优化技术及快速率定方法与多模型教程

原文链接:基于R语言的水文、水环境模型优化技术及快速率定方法与多模型教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247597847&idx7&snd71869f1290d0ef9dd7fd3f74dd7ca33&chksmfa823ef0cdf5b7e655af5e773a3d3a1b200632a5981f99fe72f0…

excel同类项合并求和怎么操作?

想必很多办公人士都熟悉excel这款软件,那么使用过程里,若想合并同类项数据并求和,具体是如何操作的呢?下面就是小编带来的excel合并同类项数据并求和的操作步骤,很简单哦,看完之后你也来试试吧! 先看一下原…

反向传播 — 简单解释

一、说明 关于反向传播,我有一个精雕细刻的案例计划,但是实现了一半,目前没有顾得上继续充实,就拿论文的叙述这里先起个头,我后面将修改和促进此文的表述质量。 二、生物神经元 大脑是一个由大约100亿个神经元组成的复…

关于tcp协议

目录 前言: 一、TCP协议的基本概念: 二、TCP协议的主要特点: 2.1面向连接: 2.2可靠传输: 2.3基于字节流: 三、TCP连接的建立与终止: 3.1连接建立: 3.1.1SYN: 3…

【SystemVerilog】结构体真是太好用了~

前言 Verilog最大的缺陷之一是没有数据结构。在SystemVerilog中可以使用struct创建结构,struct只是把数据组织到一起,是数据的集合,所以是可综合的。 结构体是可以通过模块接口进行传递的,这就是本文想描述的内容。 一、结构体的…

YOLOv7改进 | 更换主干网络之PP-LCNet

前言:Hello大家好,我是小哥谈。PP-LCNet是一个由百度团队针对Intel-CPU端加速而设计的轻量高性能网络。它是一种基于MKLDNN加速策略的轻量级卷积神经网络,适用于多任务,并具有提高模型准确率的方法。与之前预测速度相近的模型相比,PP-LCNet具有更高的准确性。此外,对于计…

字符串函数(C语言详解)

1.字符串简介 字符串是一串连续的且以\0结尾的字符 char arr[]"zhangsan";//将字符串存到数组里面 char*a"lisi";//常量字符串 char arr1[]{z,h,a,n,g};//字符数组 注意: 1.以第一种形式初始化字符串时,计算机会自动在字符串末尾加…