比方说出个题目:
m,n,j,h;
n,j,s;
m,n,j,s;
n,h,s;
m,n,j,h.
然后求最小支持度计数阈值为3的频繁项集。

首先将数据数字化:


解释一下这个矩阵,就是横着的表头为m,n,j,h,s;竖着的表头是第一行到第五行,1表示有出现这个,0表示没有。
大概就是下面这个意思,不知道大家能不能理解。
m n j h s
01 1 1 1 1 0
02 0 1 1 0 1
03 1 1 1 0 1
04 0 1 0 1 1
05 1 1 1 1 0
下面是源代码(来源于我们老师)。
init.m 初始化函数,得到1-频繁项集及支持度,输入数据集和最小支持度

function [L A]=init(D,min_sup)     %D表示数据集  min_sup 最小支持度
[m n]=size(D);  %注释 size矩阵的行数和列数
A=eye(m,n);    %产生扩展的单位矩阵
B=(sum(D))';    %列求和,再转秩
i=1;
while(i<=m)  if B(i)<min_sup  B(i)=[];  A(i,:)=[];  m=m-1;  else  i=i+1;  end
end
L=[A B];  

apriori_gen.m

function [C]=apriori_gen(A,k)   %产生Ck(实现组内连接及剪枝 )
%A表示第k-1次的频繁项集 k表示第k-频繁项集
[m n]=size(A);
C=zeros(0,n);  %组内连接
for i=1:1:m  for j=i+1:1:m  flag=1;  for t=1:1:k-1  if ~(A(i,t)==A(j,t))  flag=0;  break;  end  end  if flag==0 break;  end  c=A(i,:)|A(j,:);  flag=isExit(c,A);   %剪枝  if(flag==1)C=[C;c];  end  end
end  

isExit.m

function flag=isExit(c,A)%判断c串的子串在A中是否存在
[m n]=size(A);
b=c;
for i=1:1:n  c=b;  if c(i)==0 continue  end  c(i)=0;  flag=0;  for j=1:1:m  A(j,:);  a=sum(xor(c,A(j,:)));  % xor 函数判断是否相同if a==0   flag=1;  break;  end  end  if flag==0 return   end
end  

get_k_itemset.m

function [L C]=get_k_itemset(D,C,min_sup)%D为数据集  C为第K次剪枝后的候选
%集 获得第k次的频繁项集
m=size(C,1);
M=zeros(m,1);
t=size(D,1);
i=1;
while i<=m  C(i,:);  H=ones(t,1);  ind=find(C(i,:)==1);  %find函数用于返回所需要元素的所在位置 n=size(ind,2);  for j=1:1:n  D(:,ind(j));  H=H&D(:,ind(j));  end  x=sum(H');  if x<min_sup  C(i,:)=[];  M(i)=[];  m=m-1;  else  M(i)=x;  i=i+1;  end
end
L=[C M];  

主函数 apriori.m

function [L]=apriori(D,min_sup)
[L A]=init(D,min_sup)%A为1-频繁项集  L中为包含1-频繁项集以及对应的支持度
k=1;
C=apriori_gen(A,k) %产生2项的集合
while ~(size(C,1)==0)
[M C]=get_k_itemset(D,C,min_sup)%产生k-频繁项集 M是带支持度  C不带
if ~(size(M,1)==0)L=[L;M]
end
k=k+1;
C=apriori_gen(C,k)%产生组合及剪枝后的候选集
end  

最后只需要输入下面这个就可以了b( ̄▽ ̄)d 
apriori(a,3)%a是前面最先输入的那个数据集哦~
这是最后的结果哦。
% 1 0 0 0 0 3
% 0 1 0 0 0 5
% 0 0 1 0 0 4
% 0 0 0 1 0 3
% 0 0 0 0 1 3
% 1 1 0 0 0 3
% 1 0 1 0 0 3
% 0 1 1 0 0 4
% 0 1 0 1 0 3
% 0 1 0 0 1 3
% 1 1 1 0 0 3
代表的意思是:
% {m} 3
% {n} 5
% {j} 4
% {h} 3
% {s} 3
% {m,n} 3
% {m,j} 3
% {n,j4
% {n,h} 3
% {n,s} 3
% {m,n,j} 3

Apriori算法Matlab实现相关推荐

  1. matlab 关联规则挖掘,数据挖掘实验(六)Matlab实现Apriori算法【关联规则挖掘】...

    本文代码均已在 MATLAB R2019b 测试通过,如有错误,欢迎指正. (一)关联规则挖掘 关联规则挖掘(Association rule mining)是数据挖掘中最活跃的研究方法之一,可以用来 ...

  2. Apriori算法通俗详解_fpgrowth2_关联分析评估

    20220317 https://blog.csdn.net/a790439710/article/details/103080674 支持度,置信度各指标再理解 条件模式基:在某元素比如y出现的前提 ...

  3. 关于kNN、kMeans、Apriori算法小结

    趁着准备即将到来的笔试,也为了回顾一下这一星期来所学的三个机器学习算法,觉得还是重新理一下思路,好理解一下这几个算法. 复制代码 kNN算法 即k-近邻算法,属监督学习. 概述 优点:精度高,对异常值 ...

  4. Apriori算法进行关联分析实战

    使用Apriori算法进行关联分析(层次聚类) 一.基础知识 1.关联分析定义及存在的问题 定义:从大规模的数据集中寻找物品间的隐含关系,被称为关联分析或关联规则学习. 关联分析存在的主要问题:主要问 ...

  5. R语言apriori算法进行关联规则挖掘(限制规则的左侧或者右侧的内容进行具体规则挖掘)、使用subset函数进一步筛选生成的规则去除左侧规则中的冗余信息、获取更独特的有新意的关联规则

    R语言apriori算法进行关联规则挖掘(限制规则的左侧或者右侧的内容进行具体规则挖掘).使用subset函数进一步筛选生成的规则去除左侧规则中的冗余信息.获取更独特的有新意的关联规则 目录

  6. R语言apriori算法进行关联规则挖掘(限制规则的左侧或者右侧的内容进行具体规则挖掘)、查看限制了规则的右侧之后挖掘到的规则(置信度排序,只查看左侧即可)

    R语言apriori算法进行关联规则挖掘(限制规则的左侧或者右侧的内容进行具体规则挖掘).查看限制了规则的右侧之后挖掘到的规则(置信度排序,只查看左侧即可) 目录

  7. R语言Apriori算法关联规则挖掘:使用interestMeasure函数评估挖掘到的规则(包括覆盖率(coverage)和FishersExactTest)、置信度最高的五条规则(top five

    R语言Apriori算法关联规则挖掘:使用interestMeasure函数评估挖掘到的规则(包括覆盖率(coverage)和FishersExactTest).置信度最高的五条规则(top five ...

  8. R语言使用apriori算法进行关联规则挖掘实战:关联规则概念、频繁项集、支持度(support)、置信度(confidence)、提升度(lift)、apriori算法

    R语言使用apriori算法进行关联规则挖掘实战:关联规则概念.频繁项集.支持度(support).置信度(confidence).提升度(lift).apriori算法 目录

  9. Apriori算法、FP-Growth算法、顺序分析、PrefixSpan算法

    Apriori算法.FP-Growth算法.顺序分析.PrefixSpan算法 目录 Apriori算法.FP-Growth算法.顺序分析.PrefixSpan算法 Apriori算法 FP-Grow ...

最新文章

  1. matlab怎么分析一段音频,Matlab分析音频
  2. 蓝书4.1-4.4 树状数组、RMQ问题、线段树、倍增求LCA
  3. Spring OXM-XStream转换器
  4. NetBeans IDE中运行当前文件快捷键
  5. jakarta ee_Jakarta EE的拟议命名空间
  6. OD反汇编EXE添加一个启动时的消息框
  7. 只看当前分支_看小姐姐用动图展示10大Git命令
  8. TRANSACTIONAL TEXT INDEX全文索引可能消耗大量PGA内存
  9. JavaWeb和WebGIS学习笔记(七)——MapGuide Open Source安装、配置以及MapGuide Maestro发布地图——超详细!目前最保姆级的MapGuide上手教程!
  10. 【艾特淘】淘宝改sku名字有影响吗?淘宝sku怎么修改不降权
  11. ps入门第10天_ps色彩平衡ps色相饱和度
  12. 解决 Sublime Text 中文样式显示异常问题
  13. 高通 lcd dtsi
  14. 车机安卓+linux成本,你的车机为什么比千元安卓机还难用?
  15. html之解决边框重合问题,鼠标移动文字上文字抖动问题
  16. MySQL、JDBC、HTML、CSS、JavaScript、jQuery、tomcat、Http、Servlet、JSP、EL、JSTL、Maven、Cookie、Session(框架第一部分)
  17. vector<PII>v
  18. [kubernetes] Endpoint 和 Service介绍与应用
  19. Javascript迭代、迭代、穷举、递归常用算法
  20. [二叉树路径总和] 一杯茶一包烟,一个递归转一天

热门文章

  1. 【Onedrive】查看和使用组共享链接
  2. 计算机的正确配置文件,Windows10电脑系统如何正确配置显示器颜色配置文件
  3. 英文双引号引发的杯具
  4. Python数据分析-NumPy模块-选取数组元素
  5. gitbook 安装使用
  6. JS-节点的属性 获取各种节点(全)
  7. Ember恶意软件数据集的使用教程
  8. 17. 项目实战之前台订单处理
  9. GVINS文章暴力翻译(仅供自学)
  10. win10使用pip安装tensorflow