⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 说明.txt

📁 能够挖掘关联规则
💻 TXT
字号:
Appriori算法实现(C版)
  开学在即,闲来无事就将以前没有完成的Apriori算法用C写出来了,拿出来共享.

  文件列表:

        input.txt  保存minsupport,minconfidence作为算法输入;             

        source.txt  保存字符串形式的事务作为算法输入;

        result.txt  保存X->Y形式的规则作为算法输出;

        appriori.c  C语言编写的算法代码;

  实验环境:

        Win-TC 1.9.1

  基本数据结构:

        以字典顺序的字符串表示事务,如abc;

        以链表结构表示项目集,包括字符串,支持度,next指针;

        以链表指针h[]来表示不同项目集头指针,其中h[0]为事务链表头指针,h[1]为1元项目集链表头指针....;       

  部分算法思想(其它函数均有注释):

        规则的生成:对于k-频繁项集,设置一k元数组(其元素只能取0-1),在该数组由全1依次变成全0过程中,按数组中的0-1 对应分配给规则的左右边,即所有0对应的项组成前提,1对应的项组成结果
        以abcd为例:i=4;j=pow(2,i)-2=14;其二进制保存为str[]={'1','1','1','0'},则adhead[]={"abc"},sequent[]={"d"};

                                j=13, str[]={'1','1','0','1'},则adhead[]={"abd"},sequent[]={"d"};       ......  

        

   未完成部分:   

       从频繁项集中得到最大频繁项集;

       计算规则的置信度,并输出真正的关联规则:X->Y|conf;

   算法输出结果:

       ce 4
       de 5
       abc 2
       abe 2
       acd 2
       ace 2
       ade 3
       bcd 3
       bce 3
       bde 2
       cde 3
       acde 2
       bcde 2

      (以上为在屏幕中输出的算法过程中产生出的部分频繁项信息)

     Rules from frequent itemset[bce|3] are:
     e->bc c->be ce->b b->ce be->c bc->e 
     Rules from frequent itemset[bde|2] are:
     e->bd d->be de->b b->de be->d bd->e 
     Rules from frequent itemset[cde|3] are:
     e->cd d->ce de->c c->de ce->d cd->e

     ******end of 3_frequent itemset list******
     Rules from frequent itemset[acde|2] are:
     e->acd d->ace de->ac c->ade ce->ad cd->ae cde->a a->cde ae->cd ad->ce ade->c ac->de ace->d acd->e 
     Rules from frequent itemset[bcde|2] are:
    e->bcd d->bce de->bc c->bde ce->bd cd->be cde->b b->cde be->cd bd->ce bde->c bc->de bce->d bcd->e 
    * *****end of 4_frequent itemset list******


     (以上为在result.txt文件中输出的算法结果的部分规则信息)

 

    注意:当需要加大算法输入时(主要是事务数据源),请相应改动算法中的

    #define Maxnum 20
    #define item_num 10(以字符表示单个事务项,该变量定义为一条事务数据中最大的项数)

   counter[item_num]={0,0,0,0,0,0,0,0,0,0};(用来记录字典顺序下对应单个事务项的个数)

   charset[item_num]={"abcdefghij"};(用字典顺序下的字符表示对应单个事务项)

[ 本帖最后由 fangzm 于 2007-8-28 01:12 PM 编辑 ]

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -