from itertools import combinations

 data = [['I1', 'I2', 'I5'], ['I2', 'I4'], ['I2', 'I3'], ['I1', 'I2', 'I4'], ['I1', 'I3'],
['I2', 'I3'], ['I1', 'I3'], ['I1', 'I2', 'I3', 'I5'], ['I1', 'I2', 'I3']] # 候选集生成
# 输入:
# f_set: k-1项集, k:项集个数
# 输出:
# k_cand:k项候选集
def apriori_gen(f_set, k):
k_cand = []
temp = [frozenset(l) for l in combinations(f_set, k)]
for t in temp:
if has_infrequent_subset(t, f_set):
del t
else:
k_cand.append(t)
return k_cand # 非频繁项集的超集也是非频繁的
def has_infrequent_subset(c_set, f_set):
for subset in c_set:
if not frozenset([subset]).issubset(f_set):
return True
return False # 输入(绝对)最小支持度, min_sup
# 输出:全部频繁项集(不包括一项集), all_f_set
def get_f_set(min_sup=2):
all_f_set = []
L1 = frozenset([d for ds in data for d in ds])
k = 2
size = len(L1)
while k <= size:
c_k = frozenset(apriori_gen(L1, k))
for c in c_k:
count = 0
for d in data:
if c.issubset(frozenset(d)):
count += 1
if count >= min_sup:
all_f_set.append((c, count))
k += 1
return all_f_set if __name__ == '__main__':
all_frequent_set = get_f_set()
for i in all_frequent_set:
print(i)

最新文章

  1. Activityn 生命周期
  2. hasSet,TreeSet,ArrayList,LinkedList,Vector,HashMap,HashTable,TreeMap利用Iterator进行输出
  3. Google Code Jam 2014 Round 1B Problem B
  4. ECshop中TemplateBeginEditable 和后台编辑讲解
  5. tq --uboot使用
  6. memcached在windows安装
  7. 【Chromium中文文档】安全浏览 -- Chrome中的警告都是怎么来的?
  8. VUE2.0实现购物车和地址选配功能学习第四节
  9. Time模块和datetime模块
  10. 新建VS工程与填坑:解决方案与项目不在同一目录
  11. JS闭包以及作用域初探
  12. Visual Studio中的.suo(Solution User Options)文件
  13. [转] 谈谈JS中的函数节流
  14. sql日期格式小应用 记录一下
  15. gb2312提交的url编码转换成utf8的查询
  16. java 标签编译后没有显示
  17. ChIP-seq实战 | 染色质免疫共沉淀技术 | ATAC-seq | 染色质开放性测序技术
  18. APIcloud制作APP 微信支付与支付宝支付
  19. BZOJ 4198: [Noi2015]荷马史诗 哈夫曼树 k叉哈夫曼树
  20. PHP——大话PHP设计模式——魔术方法

热门文章

  1. Node 的fs模块
  2. twaver拓扑图通道组织图(百分比使用率/水槽)效果实现
  3. Servlet 2.5为cookie配置HTTPOnly属性
  4. Laravel Service Provider 开发时设置延迟加载时遇到的问题
  5. MySQL的基础(优化)3
  6. mysql修改管理员密码
  7. 插上翅膀,让Excel飞起来——xlwings(四)
  8. CRUD全栈式编程架构之数据层的设计
  9. 利物浦VS曼城,罗指导的先手与工程师的后手
  10. HDU 5805