用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算法挖掘频繁项集相关推荐

  1. 河北工业大学数据挖掘实验三 应用 Apriori 算法挖掘频繁项集

    河北工业大学数据挖掘实验三 应用 Apriori 算法挖掘频繁项集 一.实验目的 二.实验原理 1.Apriori 算法 2.提高频繁项集逐层产生的效率 三.实验内容和步骤 1.实验内容 2.实验步骤 ...

  2. 使用python挖掘频繁项集

    本实验包含以下内容: 学习挖掘频繁项集,掌握apriori算法 1.实现用apriori算法挖掘频繁项集(最小支持度计数2) 2.分析你所实现的apriori算法的缺点 3. 数据集: 数据集 TID ...

  3. 使用FP-growth算法发现频繁项集

    源码如下: #coding=utf-8''' Created on Jun 14, 2011 FP-Growth FP means frequent pattern the FP-Growth alg ...

  4. FP-growth算法发现频繁项集(一)——构建FP树

    常见的挖掘频繁项集算法有两类,一类是Apriori算法,另一类是FP-growth.Apriori通过不断的构造候选集.筛选候选集挖掘出频繁项集,需要多次扫描原始数据,当原始数据较大时,磁盘I/O次数 ...

  5. python 频繁项集_Apriori算法:从数据中挖掘频繁项集

    简介 Apriori是一种流行的算法,用于在关联规则学习中提取频繁项集.Apriori算法被设计用于对包含交易的数据库进行操作,例如商店客户的购买.如果项目集满足用户指定的支持阈值,则该项目集被视为& ...

  6. python 频繁项集_FP-Growth算法之频繁项集的挖掘(python)

    #coding=utf-8 import tree_builder import copy class Tree_miner(object): """tree_miner ...

  7. Apriori算法中候选项集、频繁项集的产生

    候选项集的产生通过自连接和剪枝操作产生 如何通过自连接产生剪枝之前的候选k-项集方法参见https://blog.csdn.net/jerk_lee/article/details/45670809 ...

  8. python实现FP-growth算法发现频繁项集

    ★ FP-growth算法的作用: 该算法是代替Apriori算法来高效发现频繁集,但不能用于发现关联规则. ★ FP-growth算法的组成: 该算法需要构建三部分:1. 项头表   2. FP树  ...

  9. FP-growth:从FP树中挖掘频繁项集

    前言 若想具体理解FP-growth,请参阅这位大神的作品: https://www.cnblogs.com/pinard/p/6307064.html 本文的前一节<FP-growth:构建F ...

最新文章

  1. nginx 反向代理,动静态请求分离,proxy_cache缓存及缓存清除
  2. OKR能给公司和团队带来什么价值?
  3. Linux下查杀病毒
  4. SpringBoot整合Swagger 自动生成在线API文档 偷懒必备 同时也是我们的基本操作啦!!!
  5. 单机和分布式场景下,有哪些流控方案?
  6. 如何只下载一个github项目的某一特定文件夹或文件
  7. html5 本地存储Web Storage
  8. java dateutil 获取时间戳_java DateUtil工具类时间戳类型转换详解
  9. 友友球捕获率_神奇宝贝球内部秘密公开!大师球原来是这样达到100%捕获率的...
  10. ORACLE 10g EXPDP,IMPDP使用方法
  11. Python机器学习:逻辑回归002逻辑回归的损失函数
  12. android返回上一级代码,Android实践11 | 利用intent返回数据给上一级activity
  13. 【Docker】docker设置固定ip地址
  14. Quarter square 查找表乘法器,手动建立rom
  15. 斜度符号标注_机械图纸尺寸标注规则
  16. 使用Eclipse开发Android应用程序
  17. vs2010中文旗舰版,vs2013,vs2015企业版激活秘钥
  18. 计算机操作系统教程徐甲同pdf,《操作系统实践教程》.pdf
  19. php短视频源码,流式布局(代码)
  20. 评课用计算器计算机,《巧用计算器》评课稿

热门文章

  1. Swift 重命名OC接口 NS_SWIFT_NAME
  2. buuctf 朴实无华
  3. 全球首架国产C919正式交付东航;无锡多宁生产基地投产 | 美通企业日报
  4. JavaScript中的ParseInt的用法
  5. Git分支合并操作教程(超详细配图说明)
  6. 麒麟820也迎来鸿蒙系统,鸿蒙OS2.0第二期第三期公测机型陆续公布麒麟980和麒麟820将登场...
  7. c#将字符串转换为数组,在C#中将字符串转换为字节数组
  8. ECDH 算法概述(CNG 示例)
  9. 航空订票系统--页面及功能介绍
  10. Oracle查询表空间的每日增长量