实现Apriori算法(python)
1 # coding: utf-8 2 3 # 利用python实现apriori算法 4 5 # In[1]: 6 7 8 #导入需要的库 9 from numpy import * 10 11 12 # In[2]: 13 14 15 def loadDataSet(): 16 return [[1,3,4],[2,3,5],[1,2,3,5],[2,5]] 17 18 19 # In[3]: 20 21 22 def createC1(dataSet): 23 C1=[] 24 for transaction in dataSet: 25 for item in transaction: 26 if not [item] in C1: 27 C1.append([item]) 28 C1.sort() 29 return map(frozenset,C1) 30 31 32 # In[4]: 33 34 35 #计算Ck在数据集D中的支持度,并返回支持度大于minSupport的数据集 36 def scanD(D,Ck,minSupport): 37 ssCnt={} 38 for tid in D: 39 for can in Ck: 40 if can.issubset(tid): 41 if can not in ssCnt.keys(): 42 ssCnt[can]=1 43 else : 44 ssCnt[can]+=1 45 numItems=float(len(D)) 46 retList=[] 47 supportData={} 48 for key in ssCnt: 49 support=ssCnt[key]/numItems 50 if support>= minSupport: 51 retList.insert(0,key) 52 supportData[key]=support 53 return retList,supportData 54 55 56 # In[15]: 57 58 59 def aprioriGen(Lk,k): 60 retList=[] 61 lenLk=len(Lk) 62 for i in range(lenLk): 63 for j in range(i+1,lenLk): 64 L1=list(Lk[i])[:k-2] 65 L2=list(Lk[j])[:k-2] 66 L1.sort() 67 L2.sort() 68 if L1==L2: 69 retList.append(Lk[i] | Lk[j]) 70 return retList 71 72 73 74 # In[14]: 75 76 77 def apriori(dataSet, minSupport=0.5): 78 C1=createC1(dataSet) 79 D=list(map(set,dataSet)) 80 print('D:',D) 81 L1,supportData= scanD(D,C1,minSupport) 82 L=[L1] 83 k=2 84 while (len(L[k-2])>0): 85 Ck=aprioriGen(L[k-2], k) 86 Lk,supK= scanD(D,Ck,minSupport) 87 supportData.update(supK) 88 if len(Lk)==0: 89 break 90 L.append(Lk) 91 k+=1 92 return L,supportData 93 94 95 # In[19]: 96 97 98 def calConf(freqSet,H,supportData,brl,minConf=0.7): 99 prunedH=[] 100 for conseq in H: 101 conf=supportData[freqSet]/supportData[freqSet-conseq] 102 if conf >= minConf: 103 print(freqSet-conseq, '-->',conseq,'conf',conf) 104 brl.append((freqSet-conseq,conseq,conf)) 105 prunedH.append(conseq) 106 return prunedH 107 108 109 # In[21]: 110 111 112 def rulesFromConseq(freqSet,H,supportData,brl,minConf=0.7): 113 m=len(H[0]) 114 if(len(freqSet)>(m+1)): 115 Hmpl=aprioriGen(H,m+1) 116 Hmpl=calConf(freqSet,Hmpl,supportData,brl,minConf) 117 print('Hmpl=',Hmpl) 118 print('len(Hmpl)=',len(Hmpl),'len(freqSet)=',len(freqSet)) 119 if(len(Hmpl)>1): 120 rulesFromConseq(freqSet,Hmpl,supportData,brl,minConf) 121 122 123 # In[9]: 124 125 126 def generateRules(L,supportData,minConf=0.7): 127 bigRuleList=[] 128 for i in range(1,len(L)): 129 for freqSet in L[i]: 130 H1=[frozenset([item]) for item in freqSet] 131 if(i>1): 132 rulesFromConseq(freqSet,H1,supportData,bigRuleList,minConf) 133 else: 134 calConf(freqSet,H1,supportData,bigRuleList,minConf) 135 return bigRuleList 136 137 138 # In[10]: 139 140 141 def testApriori(): 142 dataSet=loadDataSet() 143 print('dataSet:',dataSet) 144 L1,supportData1=apriori(dataSet,minSupport=0.7) 145 print('L(0.7):',L1) 146 print('supportData(0.7):',supportData1) 147 print('------------------------------------------') 148 L2,supportData2=apriori(dataSet,minSupport=0.5) 149 print('L(0.5):',L2) 150 print('supportData(0.5:).supportData2') 151 print('------------------------------------------') 152 153 154 # In[11]: 155 156 157 def testGenerateRules(): 158 dataSet=loadDataSet() 159 L1,supportData1=apriori(dataSet,minSupport=0.2) 160 print('L(0.2):',L1) 161 print('minSupport(0.2):',supportData1) 162 rules=generateRules(L1,supportData1,minConf=1.1) 163 print('Rules:',rules) 164 165 166 # In[12]: 167 168 169 def main(): 170 testApriori() 171 testGenerateRules() 172 173 174 # In[22]: 175 176 177 if __name__=="__main__": 178 main()
参考:“机器学习实战-ApachCN”
转载于:https://www.cnblogs.com/share-sjb/p/9977803.html
实现Apriori算法(python)相关推荐
- Apriori算法+python实现
文章目录 一.相关概念 二.Apriori算法 三.Apriori算法示例: 四.代码实现: 参考链接:apriori算法 python实现 一.相关概念 支持度:support(A =>B) ...
- Apriori算法python实现(数据挖掘学习笔记)
目录 1.算法伪代码 2.算法代码 3.测试数据 4.结果 1.算法伪代码 输入:事务数据库D:最小支持度阈值. 输出:D中的频繁项集L. 方法: L1 = find_frequent_1_item ...
- Apriori算法python实现(可调节支持度与置信度)
Apriori算法python实现(可调节支持度与置信度) 前言 完整代码 前言 看到网上的Apriori算法代码大多都没有添加置信度进行筛选,因此我自己写了一个 完整代码 import iterto ...
- 大白话解析Apriori算法python实现(含源代码详解)
大白话解析Apriori算法python实现(含源代码详解) 一.专业名词解释 二.算法思路 三.python代码实现 四.Aprioir的优点.缺点及改进方法 本文为博主原创文章,转载请注明出处,并 ...
- apriori算法python实现
apriori算法python实现 源于一次课程实验,下面的代码只是负责给出频繁模式,没有进行关联规则提取 # -*- coding: utf-8 -*- """@Tim ...
- apriori算法 python实现
导读: 随着大数据概念的火热,啤酒与尿布的故事广为人知.我们如何发现买啤酒的人往往也会买尿布这一规律?数据挖掘中的用于挖掘频繁项集和关联规则的Apriori算法可以告诉我们.本文首先对Apriori算 ...
- 【机器学习】关联规则挖掘算法 + 三大案例实战 + Apriori算法 + Python代码实现
文章目录 一.关联规则概述 1.1 关联规则引入 1.2 关联规则相关概念介绍 1.2.1 样本.事务.项集.规则 1.2.2 支持度.置信度 1.2.3 提升度 1.2.4 所有指标的公式 二.Py ...
- 关联规则Apriori算法 python简单实现
1.基础知识 本文章主要参看博客 :关联规则Apriori算法 这里只是本人对该博主的代码做了一个简单的修改,能成功运行. 啦啦啦,我只是一个小小的知识搬运工! 2.代码 #加载数据集 import ...
- apriori算法python代码_通俗易懂Apriori算法及Python实现
本篇分为三个部分: 一.算法背景 啤酒与尿布故事: 某超市为增加销售量,提取出了他们超市所有的销售记录进行分析.在对这些小票数据进行分析时,发现男性顾客在购买婴儿尿片时,通常会顺便搭配带打啤酒来犒劳自 ...
- Apriori算法介绍(Python实现)
导读: 随着大数据概念的火热,啤酒与尿布的故事广为人知.我们如何发现买啤酒的人往往也会买尿布这一规律?数据挖掘中的用于挖掘频繁项集和关联规则的Apriori算法可以告诉我们.本文首先对Apriori算 ...
最新文章
- PHP设计模式系列 - 解释器模式
- UA MATH567 高维统计专题3 含L1-norm的凸优化4 Nesterov方法与Accelerate Proximal Gradient
- Delphi从Internet下载文件
- laravel controller
- 【数据资源】遥感资源大放送(下)| 11 个经典遥感数据集
- cgi、wsgi、uwsgi 与 uWSGI
- 二进制安全与MySQL的关系_《高可用MySQL》节选 -- 安全和二进制日志
- oracle关于时区,关于oracle时区
- 【论文写作】毕业论文怎么写?写作步骤是什么?
- 二:数据是用二进制数表示的
- 一个悄然成为世界最流行的操作系统
- 软件项目管理知识点总结
- VARCHART XGantt系列教程:如何在分组视图中更好地显示节点
- Markdown的下载与应用
- 华为电脑和手机一碰传_华为手机怎么一碰传文件到电脑教程
- CentOS 8系统时间校准
- Delphi结合百度图像识别接口进行企业微信通讯录数据采集
- 同一篇Word文档设置多个不同的页眉页脚
- 分贝,毫瓦分贝与瓦特之间的关系
- Python3-StringIO和BytesIO的总结