Apriori算法挖掘频繁项集
用Apriori或者FP-growth算法挖掘出所有的频繁项集,并写出具体的实现代码。假设事务数据库D表1:最小支持度计数为2. 下图是以Apriori算法为例。
表1 事务数据库D
Tid |
Items |
10 |
A,C,D |
20 |
B,C,E |
30 |
A,B,C,E |
40 |
B,E |
一、实验代码
# 加载数据集
def loadDataSet() :dataSet = [['A', 'C', 'D'],['B', 'C', 'E'],['A', 'B', 'C', 'E'],['B', 'E']]return dataSet# 选取数据集的非重复元素组成候选集的集合C1
def createC1(dataSet) :C1 = []for transaction in dataSet :for item in transaction :if not [item] in C1 :C1.append([item])C1.sort()return list(map(frozenset, C1))# 由Ck产生Lk:扫描数据集dataSet,计算候选集Ck各元素在dataSet中的支持度,选取支持度大于设定值的元素进入Lk
def scanD(D, Ck, minSupport) :ssCnt = {}for tid in D :for can in Ck :if can.issubset(tid) :ssCnt[can] = ssCnt.get(can, 0) + 1numItems = float(len(D))retList = []supportData = {}for key in ssCnt :support = ssCnt[key] / numItemsif support >= minSupport :retList.insert(0, key)supportData[key] = support*4return retList, supportData# 由Lk产生Ck+1
def aprioriGen(Lk, k) :retList = []lenLk = len(Lk)for i in range(lenLk) :for j in range(i + 1, lenLk) :if len(Lk[i] | Lk[j]) == k:retList.append(Lk[i] | Lk[j])return list(set(retList))# Apriori算法主函数
def apriori(dataSet, minSupport) :D = list(map(set, dataSet))C1 = createC1(dataSet)L1, supportData = scanD(D, C1, minSupport)L = [L1]k = 2while (len(L[k - 2]) > 0) :Ck = aprioriGen(L[k - 2], k)Lk, supK = scanD(D, Ck, minSupport)supportData.update(supK)L.append(Lk)k += 1return L, supportDataif __name__ == "__main__":dataSet = loadDataSet()L, suppData = apriori(dataSet,minSupport=0.5)print("频繁项集:")for i in suppData:if(suppData[i]>=0.5):print(i,suppData[i])
二、实验结果
Apriori算法挖掘频繁项集相关推荐
- 河北工业大学数据挖掘实验三 应用 Apriori 算法挖掘频繁项集
河北工业大学数据挖掘实验三 应用 Apriori 算法挖掘频繁项集 一.实验目的 二.实验原理 1.Apriori 算法 2.提高频繁项集逐层产生的效率 三.实验内容和步骤 1.实验内容 2.实验步骤 ...
- 使用python挖掘频繁项集
本实验包含以下内容: 学习挖掘频繁项集,掌握apriori算法 1.实现用apriori算法挖掘频繁项集(最小支持度计数2) 2.分析你所实现的apriori算法的缺点 3. 数据集: 数据集 TID ...
- 使用FP-growth算法发现频繁项集
源码如下: #coding=utf-8''' Created on Jun 14, 2011 FP-Growth FP means frequent pattern the FP-Growth alg ...
- FP-growth算法发现频繁项集(一)——构建FP树
常见的挖掘频繁项集算法有两类,一类是Apriori算法,另一类是FP-growth.Apriori通过不断的构造候选集.筛选候选集挖掘出频繁项集,需要多次扫描原始数据,当原始数据较大时,磁盘I/O次数 ...
- python 频繁项集_Apriori算法:从数据中挖掘频繁项集
简介 Apriori是一种流行的算法,用于在关联规则学习中提取频繁项集.Apriori算法被设计用于对包含交易的数据库进行操作,例如商店客户的购买.如果项目集满足用户指定的支持阈值,则该项目集被视为& ...
- python 频繁项集_FP-Growth算法之频繁项集的挖掘(python)
#coding=utf-8 import tree_builder import copy class Tree_miner(object): """tree_miner ...
- Apriori算法中候选项集、频繁项集的产生
候选项集的产生通过自连接和剪枝操作产生 如何通过自连接产生剪枝之前的候选k-项集方法参见https://blog.csdn.net/jerk_lee/article/details/45670809 ...
- python实现FP-growth算法发现频繁项集
★ FP-growth算法的作用: 该算法是代替Apriori算法来高效发现频繁集,但不能用于发现关联规则. ★ FP-growth算法的组成: 该算法需要构建三部分:1. 项头表 2. FP树 ...
- FP-growth:从FP树中挖掘频繁项集
前言 若想具体理解FP-growth,请参阅这位大神的作品: https://www.cnblogs.com/pinard/p/6307064.html 本文的前一节<FP-growth:构建F ...
最新文章
- nginx 反向代理,动静态请求分离,proxy_cache缓存及缓存清除
- OKR能给公司和团队带来什么价值?
- Linux下查杀病毒
- SpringBoot整合Swagger 自动生成在线API文档 偷懒必备 同时也是我们的基本操作啦!!!
- 单机和分布式场景下,有哪些流控方案?
- 如何只下载一个github项目的某一特定文件夹或文件
- html5 本地存储Web Storage
- java dateutil 获取时间戳_java DateUtil工具类时间戳类型转换详解
- 友友球捕获率_神奇宝贝球内部秘密公开!大师球原来是这样达到100%捕获率的...
- ORACLE 10g EXPDP,IMPDP使用方法
- Python机器学习:逻辑回归002逻辑回归的损失函数
- android返回上一级代码,Android实践11 | 利用intent返回数据给上一级activity
- 【Docker】docker设置固定ip地址
- Quarter square 查找表乘法器,手动建立rom
- 斜度符号标注_机械图纸尺寸标注规则
- 使用Eclipse开发Android应用程序
- vs2010中文旗舰版,vs2013,vs2015企业版激活秘钥
- 计算机操作系统教程徐甲同pdf,《操作系统实践教程》.pdf
- php短视频源码,流式布局(代码)
- 评课用计算器计算机,《巧用计算器》评课稿
热门文章
- Swift 重命名OC接口 NS_SWIFT_NAME
- buuctf 朴实无华
- 全球首架国产C919正式交付东航;无锡多宁生产基地投产 | 美通企业日报
- JavaScript中的ParseInt的用法
- Git分支合并操作教程(超详细配图说明)
- 麒麟820也迎来鸿蒙系统,鸿蒙OS2.0第二期第三期公测机型陆续公布麒麟980和麒麟820将登场...
- c#将字符串转换为数组,在C#中将字符串转换为字节数组
- ECDH 算法概述(CNG 示例)
- 航空订票系统--页面及功能介绍
- Oracle查询表空间的每日增长量