Apriori算法实例

article/2025/9/20 17:41:26

Apriori算法实例

学习Apriori算法首先要了解几个概念:项集、支持度、置信度、最小支持度、最小置信度、频繁项集。

支持度:项集A、B同时发生的概率称之为关联规则的支持度。

置信度:项集A发生的情况下,则项集B发生的概率为关联规则的置信度。

最小支持度:最小支持度就是人为按照实际意义规定的阈值,表示项集在统计意义上的最低重要性。
最小置信度:最小置信度也是人为按照实际意义规定的阈值,表示关联规则最低可靠性。
如果支持度与置信度同时达到最小支持度与最小置信度,则此关联规则为强规则。
频繁项集:满足最小支持度的所有项集,称作频繁项集。
(频繁项集性质:1、频繁项集的所有非空子集也为频繁项集;2、若A项集不是频繁项集,则其他项集或事务与A项集的并集也不是频繁项集)

#Apriori算法
from numpy import *
import timedef loadDataSet():return [[1,3,4],[2,3,5],[1,2,3,5],[2,5]]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))def scanD(D,Ck,minSupport):ssCnt = {}for tid in D:for can in Ck:if can.issubset(tid):if not can in ssCnt:ssCnt[can] = 1else:ssCnt[can] += 1numItems = float(len(D))retList = []supportData = {}for key in ssCnt:support = ssCnt[key]/numItemsif support >= minSupport:retList.append(key)supportData[key] = supportprint(retList)return retList, supportDatadef aprioriGen(Lk, k):lenLk = len(Lk)temp_dict = {}for i in range(lenLk):for j in range(i+1, lenLk):L1 = Lk[i]|Lk[j]if len (L1) == k:if not L1 in temp_dict:temp_dict[L1] = 1return list(temp_dict)
def apriori(dataSet,minSupport =0.5):C1 = createC1(dataSet)D =list(map(set,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,supportDatadataSet = loadDataSet()
begin_time = time.time()
L,suppData = apriori(dataSet)

在这里插入图片描述


http://chatgpt.dhexx.cn/article/sHbqdOM4.shtml

相关文章

apriori算法 c语言,数据挖掘算法——Apriori算法

Apriori算法 首先,Apriori算法是关联规则挖掘中很基础也很经典的一个算法。 转载来自:链接:https://www.jianshu.com/p/26d61b83492e 所以做如下补充: 关联规则:形如X→Y的蕴涵式,其中, X和Y分别…

Apriori算法原理

实验环境 python 3.6.5jupyter 【原理】Apriori算法原理 Apriori算法是一种用于关联规则挖掘的代表性算法。从本节开始,我们已经进入了机器学习和数据挖掘相交叉的地带。 数据挖掘与机器学习 数据挖掘和机器学习的关系就好比,机器学习是数据挖掘的弹药…

关联规则挖掘——Apriori算法的基本原理以及改进

问题引入 关联规则挖掘发现大量数据中项集之间有趣的关联或者相互联系。关联规则挖掘的一个典型例子就是购物篮分析,该过程通过发现顾客放入其购物篮中不同商品之间的联系,分析出顾客的购买习惯,通过了解哪些商品频繁地被顾客同时买入,能够帮助零售商制定合理的营销策略。…

学习序列模式挖掘

学习序列模式挖掘 1.1介绍 已Apriori算法为例,此算法是经典的挖掘频繁项集和关联规则的数据挖掘算法。A priori在拉丁语中指"来自以前"。当定义问题时,通常会使用先验知识或者假设,这被称作"一个先验"(a pr…

Python|判断素数

1. 判断一个从键盘输入的整型数是否是素数 num int(input()) for i in range(2, num//2):if num % i 0:print("%d不是一个素数" % num)break else:print("%d是一个素数" % num)控制台输入11,结果即: 2.随机生成10个两位正整数&a…

C语言if语句判断素数,利用简单的if语句判断素数

8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 判断素数这个问题是c语言条件,循环中最简单的一个问题 下面就来介绍一下判断素数的代码吧 #include “stdio.h” void main() { int x,i; int flag1;…

C语言 - 判断素数

定义: 素数(Prime number,又称质数),指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数 思路一:试除法 1.如果数字 i 能被 2 ~ i-1 整除,说明 i 就是素数…

函数判断素数

1、实现一个函数,判断一个数是不是素数。 2、利用上面实现的函数打印100到200之间的素数。 素数的定义:素数是指大于一的整数中,只能被1和这个数本身整除的数。 假设这个数是n,那么用for循环去遍历,在2——n-1&…

C语言判断素数

素数又称质数。所谓素数是指除了 1 和它本身以外,不能被任何整数整除的数,例如7就是素数,因为它不能被 2~6 的任一整数整除。注意:一般情况下,质数合数只是针对于非零自然数而言,负数没有质数合数一说。 思…

用python判断素数_python判断素数

广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 质数(prime number),又称素数,指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数(也可定义为只有1与该数本身两个因数的数)。 那么想计…

判断素数的方法(全部方法)

功能 最快、最合适地判断一个数为素数 说明 分为打表法和单个判断法两类方法 打表法 是开始时将所有素数标记出来,适合多次调用判断,前两种属于打表法 单个判断法 则是只一个数一个数判断,适合少量判断来节省时间,后俩种属…

c语言判断素数(c语言判断素数)

C语言中素数判断 是素数就返回1&#xff0c;不是的话返回0。 int IsPrime(int n) int i; if (n 1 || n 2 || n 3 || n 5) return 1; else if (n % 2) for (i 3; i < n / 2 1; i 2) if (n % i 0) return 0; return 1; else return 0; } 代码如下&#xf…

C语言判断素数的三种方法 判断素数(质数)

题目&#xff1a; 方法一&#xff1a;在2到n-1之间任取一个数,如果n能被整除则不是素数&#xff0c;否则就是素数 代码示例如下&#xff1a; #include <stdio.h> int main() {int i,n;printf("Please input: ");scanf("%d",&n);for(i2;i<n-…

C语言判断素数(求素数)

C语言判断素数&#xff08;求素数&#xff09; 素数又称质数。所谓素数是指除了 1 和它本身以外&#xff0c;不能被任何整数整除的数&#xff0c;例如17就是素数&#xff0c;因为它不能被 2~16 的任一整数整除。 思路1)&#xff1a;因此判断一个整数m是否是素数&#xff0c;只需…

Flink自定义生成 Watermark

Watermark 策略简介 # 为了使用事件时间语义&#xff0c;Flink 应用程序需要知道事件时间戳对应的字段&#xff0c;意味着数据流中的每个元素都需要拥有可分配的事件时间戳。其通常通过使用 TimestampAssigner API 从元素中的某个字段去访问/提取时间戳。 时间戳的分配与 wat…

Flink学习:WaterMark

WaterMark 一、什么是水位线?二、案例分析三、如何生成水位线?(一)、在SourceFunction中直接定义Timestamps和Watermarks(二)、自定义生成Timstamps和Watermarks 一、什么是水位线? 通常情况下,由于网络或系统等外部因素影响,事件数据往往不能及时传输至Flink系统中,导致数…

flink watermark

flink1.12版本开始&#xff0c;事件事件作为默认的时间语义 watermark是flink逻辑时钟&#xff0c;不是真正意义上的表&#xff0c;而是靠着数据去推动它的时间不停的往前走 工厂生产的商品上面印有时间戳&#xff0c;八点到九点的商品要坐一班车运走&#xff0c;商品从生产到…

Flink WaterMark 详解

摘录仅供学习使用&#xff0c;原文来自&#xff1a; Flink详解系列之五--水位线&#xff08;watermark&#xff09; - 简书 1、概念 在Flink中&#xff0c;水位线是一种衡量Event Time进展的机制&#xff0c;用来处理实时数据中的乱序问题的&#xff0c;通常是水位线和窗口结合…

Flink:watermark

Table of Contents 三种时间概念 Processing time Event Time Ingestion time watermark 并行流的Watermarks 迟到的事件 watermark分配器 watermark的两种分配器 三种时间概念 在谈watermark之前&#xff0c;首先需要了解flink的三种时间概念。在flink中&#xff0c;…