Apriori算法Matlab实现
比方说出个题目:
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实现相关推荐
- matlab 关联规则挖掘,数据挖掘实验(六)Matlab实现Apriori算法【关联规则挖掘】...
本文代码均已在 MATLAB R2019b 测试通过,如有错误,欢迎指正. (一)关联规则挖掘 关联规则挖掘(Association rule mining)是数据挖掘中最活跃的研究方法之一,可以用来 ...
- Apriori算法通俗详解_fpgrowth2_关联分析评估
20220317 https://blog.csdn.net/a790439710/article/details/103080674 支持度,置信度各指标再理解 条件模式基:在某元素比如y出现的前提 ...
- 关于kNN、kMeans、Apriori算法小结
趁着准备即将到来的笔试,也为了回顾一下这一星期来所学的三个机器学习算法,觉得还是重新理一下思路,好理解一下这几个算法. 复制代码 kNN算法 即k-近邻算法,属监督学习. 概述 优点:精度高,对异常值 ...
- Apriori算法进行关联分析实战
使用Apriori算法进行关联分析(层次聚类) 一.基础知识 1.关联分析定义及存在的问题 定义:从大规模的数据集中寻找物品间的隐含关系,被称为关联分析或关联规则学习. 关联分析存在的主要问题:主要问 ...
- R语言apriori算法进行关联规则挖掘(限制规则的左侧或者右侧的内容进行具体规则挖掘)、使用subset函数进一步筛选生成的规则去除左侧规则中的冗余信息、获取更独特的有新意的关联规则
R语言apriori算法进行关联规则挖掘(限制规则的左侧或者右侧的内容进行具体规则挖掘).使用subset函数进一步筛选生成的规则去除左侧规则中的冗余信息.获取更独特的有新意的关联规则 目录
- R语言apriori算法进行关联规则挖掘(限制规则的左侧或者右侧的内容进行具体规则挖掘)、查看限制了规则的右侧之后挖掘到的规则(置信度排序,只查看左侧即可)
R语言apriori算法进行关联规则挖掘(限制规则的左侧或者右侧的内容进行具体规则挖掘).查看限制了规则的右侧之后挖掘到的规则(置信度排序,只查看左侧即可) 目录
- R语言Apriori算法关联规则挖掘:使用interestMeasure函数评估挖掘到的规则(包括覆盖率(coverage)和FishersExactTest)、置信度最高的五条规则(top five
R语言Apriori算法关联规则挖掘:使用interestMeasure函数评估挖掘到的规则(包括覆盖率(coverage)和FishersExactTest).置信度最高的五条规则(top five ...
- R语言使用apriori算法进行关联规则挖掘实战:关联规则概念、频繁项集、支持度(support)、置信度(confidence)、提升度(lift)、apriori算法
R语言使用apriori算法进行关联规则挖掘实战:关联规则概念.频繁项集.支持度(support).置信度(confidence).提升度(lift).apriori算法 目录
- Apriori算法、FP-Growth算法、顺序分析、PrefixSpan算法
Apriori算法.FP-Growth算法.顺序分析.PrefixSpan算法 目录 Apriori算法.FP-Growth算法.顺序分析.PrefixSpan算法 Apriori算法 FP-Grow ...
最新文章
- matlab怎么分析一段音频,Matlab分析音频
- 蓝书4.1-4.4 树状数组、RMQ问题、线段树、倍增求LCA
- Spring OXM-XStream转换器
- NetBeans IDE中运行当前文件快捷键
- jakarta ee_Jakarta EE的拟议命名空间
- OD反汇编EXE添加一个启动时的消息框
- 只看当前分支_看小姐姐用动图展示10大Git命令
- TRANSACTIONAL TEXT INDEX全文索引可能消耗大量PGA内存
- JavaWeb和WebGIS学习笔记(七)——MapGuide Open Source安装、配置以及MapGuide Maestro发布地图——超详细!目前最保姆级的MapGuide上手教程!
- 【艾特淘】淘宝改sku名字有影响吗?淘宝sku怎么修改不降权
- ps入门第10天_ps色彩平衡ps色相饱和度
- 解决 Sublime Text 中文样式显示异常问题
- 高通 lcd dtsi
- 车机安卓+linux成本,你的车机为什么比千元安卓机还难用?
- html之解决边框重合问题,鼠标移动文字上文字抖动问题
- MySQL、JDBC、HTML、CSS、JavaScript、jQuery、tomcat、Http、Servlet、JSP、EL、JSTL、Maven、Cookie、Session(框架第一部分)
- vector<PII>v
- [kubernetes] Endpoint 和 Service介绍与应用
- Javascript迭代、迭代、穷举、递归常用算法
- [二叉树路径总和] 一杯茶一包烟,一个递归转一天