牛客题解 | 生成频繁项集

news/2025/3/12 17:03:44/文章来源:https://www.cnblogs.com/wc529065/p/18767987

题目

题目链接

频繁项集就是在交易数据中出现频率超过指定阈值的项集,常用于关联规则挖掘。
通俗点说,频繁项集就是交易数据中出现得“够多”的项集。

生成频繁项集可以归结为如下的递归过程

  1. 从频繁k项集中组合出候选k+1项集
  2. 统计候选k+1项集在交易数据中出现的次数
  3. 过滤出频繁k+1项集(出现次数大于等于min_support)
  4. 重复上述过程,直到无法生成更高阶的频繁项集
    在实际实现上,组合出候选集的方式有很多种,但本题通过直接枚举合并出所有可能的k+1项集来简化代码实现,然后统计出现次数,最后过滤出频繁k+1项集,这种方式在数据量较大时,效率较低。实际运用中不建议大家使用。

代码实现

from itertools import combinations
from collections import defaultdictdef generate_frequent_itemsets(transactions, min_support):item_count = defaultdict(int)for transaction in transactions:items = transaction.split(',')for item in items:item_count[item.strip()] += 1# 过滤出1项频繁项集frequent_itemsets = {item: count for item, count in item_count.items() if count >= min_support}# 生成更高阶的频繁项集k = 2while True:# 组合k个项new_combinations = combinations(frequent_itemsets.keys(), k)# 统计k个项在交易数据中出现的次数new_item_count = defaultdict(int)# 遍历交易数据,统计k个项在交易数据中出现的次数for transaction in transactions:items = set(transaction.split(','))for combo in new_combinations:if all(item in items for item in combo):new_item_count[combo] += 1# 过滤出频繁项集frequent_itemsets_k = {combo: count for combo, count in new_item_count.items() if count >= min_support}# 如果k个项在交易数据中出现的次数小于min_support,则停止生成更高阶的频繁项集if not frequent_itemsets_k:breakfrequent_itemsets.update(frequent_itemsets_k)k += 1return frequent_itemsets# 主程序
T = int(input())
transactions = [input().strip() for _ in range(T)]min_support = int(input())frequent_itemsets = generate_frequent_itemsets(transactions, min_support)# 输出结果
for itemset, count in sorted(frequent_itemsets.items(), key=lambda x: -x[1]):if isinstance(itemset, str):print(f'{{{itemset}}}')else:print(f'{{{", ".join(itemset)}}}')

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

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

相关文章

光伏龙头出海记:正泰新能易路如何用数字化HR破解全球化用工合规困局

2025开年,全球光伏领域组件供应商龙头企业——正泰新能科技股份有限公司(以下简称“正泰新能”)与易路人力资源科技(以下简称“易路”)合作携手,通过高效、智能、合规的HR数字化解决方案,拓展土耳其乃至全球的光伏市场,促进全球能源转型下的行业发展与技术创新。2025开…

Qt/C++音视频开发82-系统音量值获取和设置/音量大小/静音

一、前言 在音视频开发中,音量的控制分两块,一个是控制播放器本身的音量,绝大部分场景都是需要控制这个,这个不会影响系统音量的设置。还有一种场景是需要控制系统的音量,因为播放器本身的音量是在系统音量的基础上控制的,也就是系统音量30%,意味着播放器最大的音量也是…

信息资源管理综合题之“四个的组织层次”

一、一个组织的运行一般包含战略层、管理层、知识层和操作层四个不同层次的内容,按照信息支持的不同层次,组织中信息系统可以分为六种不同类型,请将下表中序号(1)~(12)所对应的每种系统的中文名称及其对应的典型功能填写在答题卡相应位置处二、答案经理支持系统 长期销售…

如何在 Windows 上实现免密登录 Linux 服务器?

一、环境准备本地系统:Windows 10/11(需启用 OpenSSH 客户端)远程服务器:任意 Linux 发行版(需开启 SSH 服务)工具:系统自带 PowerShell 或 Git Bash(推荐)二、操作步骤 步骤 1:在 Windows 上生成 SSH 密钥对打开 PowerShell 或 Git Bash按 Win + S 搜索 "Power…

Cartesia 升级 TTS 模型,可在音频中无缝填充内容;索尼 AI 游戏角色原型:结合语音与动画,与玩家实时对话丨日报

开发者朋友们大家好:这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的 技术 」、「有亮点的 产品 」、「有思考的 文章 」、「有态度的 观点 」、「有看点的 活动 」,但内容仅代表编辑…

NocoBase vs OutSystems:低代码平台,开源还是闭源?

开源 vs. 闭源,哪个低代码平台更适合你?NocoBase vs OutSystems 全面对比,揭示核心功能、成本和扩展性,帮你做出最佳选择!原文链接:https://www.nocobase.com/cn/blog/nocobase-vs-outsystems 引言 我在之前已经写过几篇产品深度对比文章,欢迎感兴趣的朋友前往阅读。Noc…

英格索兰/鑫磊/阿特拉斯空压机数据采集联网远程监控方案温湿度露点

RS132ie-A7.5(英格索兰)RS132ie-A7.5(英格素兰)XLPM175A-IID(鑫磊)GA132-8.5(阿特拉斯)GA132-8.5(阳牛)RS132ie-A7.5(英格索兰)XPM175A-IID(鑫磊)RS132ie-A7.5(英格索兰XLPHI7SA IID (套名)RS1321e-A7.5(英格系兰)XPU175A IID美号RS132ie-A7.5(大格索)RS1321e-A7.5(英格索二RS1…

SpringSecurity5(2-自定义用户信息)

Spring Security允许自定义用户信息以满足特定的认证需求。通过实现UserDetailsService接口,可以从数据库或其他存储源加载用户信息。自定义UserDetails类,提供用户名、密码、权限等信息,并结合Spring Security的AuthenticationManager进行身份验证。这样可以灵活地实现复杂…

No.60 Vue---事件处理

一、事件处理 1.1 监听事件(添加事件)我们可以使用 v-on 指令 (通常缩写为 @ 符号)来监听 DOM 事件,并在触发事件时执行一些JavaScript。用法为v-on:click="methodName”或使用快捷方式 @click="methodName”.<template><div><button v-on:click=&…

基于TPM的远程认证之一(TCG文档-验证篇)

PCR值验证 在PCR值足够静态或者验证者有证明者的PCR标准值的情况下,可以使用PCR值验证的方式验证平台的可信度。在PCR复合验证中,这种方法要求验证者拥有一个固定的断言PCR复合值列表,这样证明者就只发送报价(带有PCR值的哈希值),而不必发送完整的PCR值或事件日志。或者,…

day:19 html实战2

一、链接标签 1、定义: 从一个网页指向另一个网页的目的地,这个目标可以是一个网页,也可以图片,一个文件,一个网站等 2、链接的类型 a、生成信廉基覆盖源链接 b、新开一个窗口 c、图片链接 d、死链接 3、链接操作代码:链接标签百度(覆盖原有窗口) 京东(另开一个窗口)死…

数据采集仪 传感器采集读数仪 兼容多类型振弦、电压、电流传感器 分组存储与自动导出

数据采集仪 传感器采集读数仪 兼容多类型振弦、电压、电流传感器 分组存储与自动导出VH501TC是一款多功能手持式数据采集仪,专为单弦式振弦传感器设计,同时兼容电压、电流传感器的数据采集。该设备集成了先进的LoRA无线通信技术,可与本公司NLM系列产品无缝对接,实现远程无线…