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)相关推荐

  1. Apriori算法+python实现

    文章目录 一.相关概念 二.Apriori算法 三.Apriori算法示例: 四.代码实现: 参考链接:apriori算法 python实现 一.相关概念 支持度:support(A =>B) ...

  2. Apriori算法python实现(数据挖掘学习笔记)

    目录 1.算法伪代码 2.算法代码 3.测试数据 4.结果 1.算法伪代码 输入:事务数据库D:最小支持度阈值. 输出:D中的频繁项集L. 方法:  L1 = find_frequent_1_item ...

  3. Apriori算法python实现(可调节支持度与置信度)

    Apriori算法python实现(可调节支持度与置信度) 前言 完整代码 前言 看到网上的Apriori算法代码大多都没有添加置信度进行筛选,因此我自己写了一个 完整代码 import iterto ...

  4. 大白话解析Apriori算法python实现(含源代码详解)

    大白话解析Apriori算法python实现(含源代码详解) 一.专业名词解释 二.算法思路 三.python代码实现 四.Aprioir的优点.缺点及改进方法 本文为博主原创文章,转载请注明出处,并 ...

  5. apriori算法python实现

    apriori算法python实现 源于一次课程实验,下面的代码只是负责给出频繁模式,没有进行关联规则提取 # -*- coding: utf-8 -*- """@Tim ...

  6. apriori算法 python实现

    导读: 随着大数据概念的火热,啤酒与尿布的故事广为人知.我们如何发现买啤酒的人往往也会买尿布这一规律?数据挖掘中的用于挖掘频繁项集和关联规则的Apriori算法可以告诉我们.本文首先对Apriori算 ...

  7. 【机器学习】关联规则挖掘算法 + 三大案例实战 + Apriori算法 + Python代码实现

    文章目录 一.关联规则概述 1.1 关联规则引入 1.2 关联规则相关概念介绍 1.2.1 样本.事务.项集.规则 1.2.2 支持度.置信度 1.2.3 提升度 1.2.4 所有指标的公式 二.Py ...

  8. 关联规则Apriori算法 python简单实现

    1.基础知识 本文章主要参看博客 :关联规则Apriori算法 这里只是本人对该博主的代码做了一个简单的修改,能成功运行. 啦啦啦,我只是一个小小的知识搬运工! 2.代码 #加载数据集 import ...

  9. apriori算法python代码_通俗易懂Apriori算法及Python实现

    本篇分为三个部分: 一.算法背景 啤酒与尿布故事: 某超市为增加销售量,提取出了他们超市所有的销售记录进行分析.在对这些小票数据进行分析时,发现男性顾客在购买婴儿尿片时,通常会顺便搭配带打啤酒来犒劳自 ...

  10. Apriori算法介绍(Python实现)

    导读: 随着大数据概念的火热,啤酒与尿布的故事广为人知.我们如何发现买啤酒的人往往也会买尿布这一规律?数据挖掘中的用于挖掘频繁项集和关联规则的Apriori算法可以告诉我们.本文首先对Apriori算 ...

最新文章

  1. PHP设计模式系列 - 解释器模式
  2. UA MATH567 高维统计专题3 含L1-norm的凸优化4 Nesterov方法与Accelerate Proximal Gradient
  3. Delphi从Internet下载文件
  4. laravel controller
  5. 【数据资源】遥感资源大放送(下)| 11 个经典遥感数据集
  6. cgi、wsgi、uwsgi 与 uWSGI
  7. 二进制安全与MySQL的关系_《高可用MySQL》节选 -- 安全和二进制日志
  8. oracle关于时区,关于oracle时区
  9. 【论文写作】毕业论文怎么写?写作步骤是什么?
  10. 二:数据是用二进制数表示的
  11. 一个悄然成为世界最流行的操作系统
  12. 软件项目管理知识点总结
  13. VARCHART XGantt系列教程:如何在分组视图中更好地显示节点
  14. Markdown的下载与应用
  15. 华为电脑和手机一碰传_华为手机怎么一碰传文件到电脑教程
  16. CentOS 8系统时间校准
  17. Delphi结合百度图像识别接口进行企业微信通讯录数据采集
  18. 同一篇Word文档设置多个不同的页眉页脚
  19. 分贝,毫瓦分贝与瓦特之间的关系
  20. Python3-StringIO和BytesIO的总结

热门文章

  1. 系统学习深度学习(二) --自编码器,DA算法,SDA,稀疏自编码器
  2. 跳转html时请求头怎么取,如何获取a链接的请求头信息?
  3. 计算机编码详解_什么是计算机编码?计算机编码的起源与操作系统是如何解码的。
  4. 如何在HTML中加载一个CSS文件?
  5. JavaScript的apply和call方法及其区别
  6. python爬虫知识点总结(三)urllib库详解
  7. linux临时网络配置
  8. AC日记——潜伏者 洛谷 P1071 (模拟)
  9. VC++开发数字图像处理系统2
  10. java 算法基础之一寻找最大公约数