博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
判断数据集matlab 实现基本apriori算法
阅读量:6910 次
发布时间:2019-06-27

本文共 2291 字,大约阅读时间需要 7 分钟。

在写这篇文章之前,xxx已经写过了几篇关于改判断数据集主题的文章,想要了解的朋友可以去翻一下之前的文章

     刚刚学了数据挖掘的这个算法,马上实现下,怕忘掉了。。感觉matlab的好处就是矩阵可以一起停止逻辑运算,不过我没有停止预处理,输入的数据集保存在txt文件里,且都是以0-1矩阵形成的,不斟酌涌现次数。输出只实现了得到k-频仍项集,没有计算最终的关联规则。。那个感觉要遍历什么的,用矩阵枚举???还没想到怎么弄。。。。

    当初就贴贴代码,可能存在很多地方没有斟酌到,,希望各位大神指导。。。。。感谢。。

    从k频仍项集得到k+1频仍项集,通过两个k频仍项向量停止或运算得到。。

   剪枝判断k+1-候选项的子串是否在k频仍项会合存在,通过向量 异或 xor来判断

   统计支持度   提取数据会合指定列   停止与运算    再通过 sum 求和计算 支持度。。

    %修改    原来判断两向量是否相称  matlab可以直接用==来判断      如向量 a,b   若用 a==b   等到新的向量  其中若对应位置相称 则为1  否则为0   。。所以好像可以改下下()  

    %   求真子集 matlab可以用combntns函数   等改 。。

 

    1、init.m

      初始化函数,得到1-频仍项集及支持度,输入数据集和最小支持度

function [L A]=init(D,min_sup) %D表现数据集  min_sup 最小支持度[m n]=size(D);A=eye(m,n);B=(sum(D))';i=1;while(i<=m)    if B(i)

   2、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    endend
    每日一道理
信念是巍巍大厦的栋梁,没有它,就只是一堆散乱的砖瓦;信念是滔滔大江的河床,没有它,就只有一片泛滥的波浪;信念是熊熊烈火的引星,没有它,就只有一把冰冷的柴把;信念是远洋巨轮的主机,没有它,就只剩下瘫痪的巨架。

      3、 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,:)));        if a==0             flag=1;            break;        end    end    if flag==0 return     endend

 4、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);    n=size(ind,2);    for j=1:1:n        D(:,ind(j));        H=H&D(:,ind(j));    end        x=sum(H');        if x

    

5、主函数   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]   endk=k+1;C=apriori_gen(C,k)%发生组合及剪枝后的候选集 end

    举例数据集

    abc =

     1     1     1     1     0

     0     1     1     0     1
     1     1     1     0     1
     0     1     0     1     1
     1     1     1     1     0

    输入:apriori(abc,3)

    输出:

    判断和数据集

频仍项集+支持度

文章结束给大家分享下程序员的一些笑话语录: 手机终究会变成PC,所以ip会比wm更加畅销,但是有一天手机强大到一定程度了就会发现只有wm的支持才能完美享受。就好比树和草,草长得再高也是草,时间到了条件成熟了树就会窜天高了。www.ishuo.cn

你可能感兴趣的文章
Linux中~/.是什么意思
查看>>
MySql-Binlog协议详解-流程篇
查看>>
Effective Java 学习笔记(第57条:只针对异常的情况才使用异常)
查看>>
Simple-Spring-Memcached深入研究一
查看>>
大话JS神器之Promise
查看>>
网页适配之强制网页适配手机屏幕
查看>>
ThinkPHP2.2 任意代码执行漏洞 利用
查看>>
期年之痒
查看>>
cpanm perl模块自动安装
查看>>
深入讲解BGP协议synchronous原理
查看>>
简要总结最近遇到的5个问题
查看>>
中国象棋程序的设计与实现(七)--心得体会和开发日志
查看>>
浅显理解 Python 闭包
查看>>
学习Oracle分析函数(Analytic Functions)
查看>>
openstack学习笔记二 网络设置基础
查看>>
RabbitMQ基础
查看>>
有了安全边界,人工智能才能有序发展
查看>>
Qt在mainwindow下代码添加控件不能显示的问题
查看>>
【cocos2dx】使用VS插件在VS2012/2013上编辑和调试Quick-Cocos2d-x的Lua代码
查看>>
Centos6.0之pptpd+mysql+freeradius实现***帐号统一认证管理
查看>>