文章目录

  • 一、相关概念
  • 二、Apriori算法
  • 三、Apriori算法示例:
  • 四、代码实现:

参考链接:apriori算法 python实现

一、相关概念

  1. 支持度:support(A =>B) = P(A ∪B)
  2. 置信度:confidence (A =>B) = P(B | A) = P(A ∪B) / P(A)

二、Apriori算法

Apriori算法是挖掘布尔关联规则频繁项集的算法。利用的是Apriori规则:频繁项集的所有非空子集也必须是频繁的。

  • A∪B模式不可能比A更频繁的出现
  • Apriori算法是反单调的,即一个集合如果不能通过测试,则该集合的所有超集也不能通过相同的测试。
  • Apriori性质通过减少搜索空间,来提高频繁项集逐层产生的效率

三、Apriori算法示例:

四、代码实现:

import numpy as np'''Apriori算法实现
'''data_set = np.array([['l1', 'l2', 'l5'], ['l2', 'l4'], ['l2', 'l3'],['l1', 'l2', 'l4'], ['l1', 'l3'], ['l2', 'l3'],['l1', 'l3'],['l1', 'l2', 'l3', 'l5'], ['l1', 'l2', 'l3']
])'''根据数据集获取C1data_set    -- 数据集
'''
def get_C1(data_set):C1 = set()for item in data_set:for l in item:C1.add(frozenset([l]))return C1'''根据数据集和C,筛选出符合最小支持度的频繁项集data_set    -- 数据集C           -- 候选集min_support -- 最小支持度
'''
def getLByC(data_set, C, min_support):L = {} #频繁项集和支持数for c in C:for data in data_set:if c.issubset(data):if c not in L:L[c] = 1else:L[c] += 1errorKeys=[]for key in L:support = L[key] / float(len(data_set))if support < min_support:#未达到最小支持数errorKeys.append(key)else:L[key] = supportfor key in errorKeys:L.pop(key)return L'''根据频繁(k-1)项集自身连接产生候选K项集Ck并剪去不符合条件的候选L           -- 频繁K-1项集
'''
def getCByL(L, k):len_L = len(L) #获取L的频繁项集数量L_keys = list(L.keys())#获取L的键值C = set()for i in range(len_L):for j in range(1,len_L):l1 = list(L_keys[i])l1.sort()l2 = list(L_keys[j])l2.sort()if(l1[0:k-2] == l2[0:k-2]):C_item = frozenset(l1).union(frozenset(l2)) #取并集flag = True#判断C_item的子集是否在L_keys中for item in C_item:subC = C_item-frozenset([item])#获取C_item的子集if subC not in L_keys:#不在flag = Falseif flag == True:C.add(C_item)return C'''根据数据集获取频繁项集data_set    -- 数据集k           -- 挖掘频繁项集次数min_support -- 最小支持度
'''
def get_L(data_set, k, min_support):#C1较为特殊,先求C1 = get_C1(data_set)L1 = getLByC(data_set, C1, min_support)support_data = {}L = []L.append(L1)tempL = L1for i in range(2, k+1):Ci = getCByL(tempL, i)tempL = getLByC(data_set,Ci,min_support)L.append(tempL)for l in L:for key in l:support_data[key] = l[key]return L,support_data'''获取关联规则
'''
def get_rule(L, support_data, min_support, min_conf):big_rules = []sub_sets= []for i in range(0, len(L)):for fset in L[i]:for sub_set in sub_sets:if sub_set.issubset(fset):conf = support_data[fset] / support_data[fset - sub_set]big_rule = (fset - sub_set, sub_set, conf)if conf >= min_conf and big_rule not in big_rules:big_rules.append(big_rule)sub_sets.append(fset)return big_rulesif __name__ == "__main__":min_support = 0.2  #最小支持度min_conf = 0.7     #最小置信度L,support_data = get_L(data_set, 3, min_support)#获取所有的频繁项集big_rule = get_rule(L, support_data, min_support, min_conf) #获取强关联规则print('===================所有的频繁项集如下===========================\n')for l in L:for l_item in l:print(l_item, end=' ')print('支持度为:%f'%l[l_item])print('===================================================')    for rule in big_rule:print(rule[0],'==>',rule[1],'\t\tconf = ',rule[2])

频繁项集关联规则结果为:

===================所有的频繁项集如下===========================frozenset({'l1'}) 支持度为:0.666667
frozenset({'l4'}) 支持度为:0.222222
frozenset({'l5'}) 支持度为:0.222222
frozenset({'l2'}) 支持度为:0.777778
frozenset({'l3'}) 支持度为:0.666667
===================================================
frozenset({'l2', 'l1'}) 支持度为:0.444444
frozenset({'l1', 'l3'}) 支持度为:0.444444
frozenset({'l5', 'l2'}) 支持度为:0.222222
frozenset({'l2', 'l4'}) 支持度为:0.222222
frozenset({'l5', 'l1'}) 支持度为:0.222222
frozenset({'l2', 'l3'}) 支持度为:0.444444
===================================================
frozenset({'l2', 'l1', 'l3'}) 支持度为:0.222222
frozenset({'l2', 'l5', 'l1'}) 支持度为:0.222222
===================================================
frozenset({'l5'}) ==> frozenset({'l2'})                 conf =  1.0
frozenset({'l4'}) ==> frozenset({'l2'})                 conf =  1.0
frozenset({'l5'}) ==> frozenset({'l1'})                 conf =  1.0
frozenset({'l5', 'l2'}) ==> frozenset({'l1'})           conf =  1.0
frozenset({'l5', 'l1'}) ==> frozenset({'l2'})           conf =  1.0
frozenset({'l5'}) ==> frozenset({'l2', 'l1'})           conf =  1.0

Apriori算法+python实现相关推荐

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

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

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

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

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

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

  4. apriori算法python实现

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

  5. apriori算法 python实现

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

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

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

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

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

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

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

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

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

最新文章

  1. Fragment里面嵌套Fragment注意事项
  2. 有感:仅在面试时攻克 MySQL 还不够
  3. mysql 命令行导入sql脚本
  4. python读取excle表格数据,将数据编辑到图像上工程
  5. 数据库即时搜索_加速数据库恢复; 即时回滚和数据库恢复
  6. php strictbool,PHP 7 Bool类型提示不起作用
  7. matlab 入门 mobi,MATLAB基础教程 pdf epub mobi txt 下载
  8. linux steam安装路径,Ubuntu Kylin 18.04 steam安装及解决方法
  9. Python 商务统计学 lesson 01
  10. 一口气通过一系列阿里云证书ACA/ACP/ACE认证心得
  11. uniapp实现设备对接wifi功能
  12. ubuntu进去安全模式_ubuntu 14.04全攻略
  13. 电脑Tab键有什么功能?分享Tab键的6个妙用
  14. Excel中列和行之间的互换技巧。
  15. postgis常用的函数
  16. matlab神经网络训练显示秩亏,MATLAB在测量数据处理中的应用.doc
  17. GIS文件 | EXCEL中打开ShapeFile等GIS文件
  18. 怎么安装VMware tools
  19. android 8.0 華為m3,华为揽阅M3平板配置全曝光:8.0英寸+快充+麒麟950
  20. 软考报名已全部截止,疫情之下,这些要求不满足不得进入考场

热门文章

  1. python自学-Python 应该怎么学?
  2. 自学python要看哪些书-想学习Python做数据分析,应该看哪些书?
  3. php和python-php与python谁更适合web开发?为什么?
  4. python初学者怎么入门-python怎么入门啊?
  5. python儿童入门视频-老男孩Python视频教程全套完整版!无偿分享~
  6. 【原创】3大主流的移动应用方式APP开发姿势解读
  7. 长虹CIRI语音智能电视技术原理简析
  8. 怎么让某段css代码只在Chrome 火狐 edge 浏览器生效
  9. 小程序 报request:fail invalid url 不校验合法域名已勾选
  10. 1432: 【蓝桥杯】:剪格子(迷宫问题变体)