• 大小: 1.68MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-09-29
  • 语言: C/C++
  • 标签: apriori  c++程序  

资源简介

apriori 算法c++程序实现,附测试数据以及使用说明,codeblocks下运行通过。 绝对简单明了。

资源截图

代码片段和文件信息

/*
    function: apriori算法查找频繁集
    authour:
    date: 
    Code::Blocks 12.11下运行通过
*/
#include
#include
#include
#include
#include
#include
#include
using namespace std;

#define maxn 100000
#define maxItem 90
#define suport 0.01     //最小支持度
struct Item{
    vector  num;
};
typedef vector  i_list;

class Apriori{
public:
    int suport_num;        //最小支持度计数
    int num_max;           //单行最大数量
    int num_sol;           //交易条数
    int num_fre;           //频繁项种类的数量
    Item item[maxn];       //初始交易信息
    vector  fre_item[maxn];   //保存所有频繁项信息fre_item[i]表示频繁i项信息
    map  list_item;         //标记某一个项目序号的总数
public:
    void init(){
        num_fre=0;
        num_max=0;
        suport_num=0;
        num_sol=0;
    }
    void input(){                        //输入,初始化交易信息
        char str[3000];
        int t=0;
        while(gets(str)){     //按行逐个读入数据
            char *f;
            f=strtok(str“ “);
            while(f){
                int x;
                x=atoi(f);
                list_item[x]++;      //商品计数
                item[t].num.push_back(x);
                f=strtok(NULL“ “);
            }
            if(item[t].num.size()>num_max)
                    num_max=item[t].num.size();
            t++;
        }
        num_sol=t;

        for(int i=0;i            sort(item[i].num.begin()item[i].num.end());      //交易项目序号从小到大排列
        }
        suport_num=ceil(suport*num_sol);         //最小支持度计数
        cout<<“数据总行数: “<//        for(int i=0;i//            int len=item[i].num.size();
//            for(int j=0;j//                printf(“%d “item[i].num[j]);
//            }
//            printf(“\n“);
//        }
    }
    void output(){                  //输出频繁项集
        if(!fre_item[1].size()){
            printf(“no frequent item!\n“);
            return ;
        }
        for(int k=1;k<=num_fre;k++){
            printf(“%d frequent item is:\n“k);
            for(int i=0;i                for(int j=0;j                    printf(“%d “fre_item[k][i][j]);
                }
                printf(“\n“);
            }
            printf(“\n“);
        }
    }
    void LCS(i_list &tmpi_list &t1i_list &t2){//匹配最长公共子序列
        int len=t1.size();
        int sucess=1;
        for(int i=0;i            if(t1[i]!=t2[i]){
                sucess=0;
                break;
            }
        }
        if(t1[len-1]==t2[len-1])
            sucess=0;
        if(sucess){
            tmp=t1;
            tmp.push_back(t2[len-1]);
        }
    }
    int judge(i_list tmp){              //判断tmp是否是频繁项
        int len=tmp.size();
        int sum=0;
        int sucess=1;
        for(int i=0;i            sucess=1;
            if(item[i].num.size()                continue;
  

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

 -rw-rw-r--   4167490  2014-09-05 11:00  apriori 算法程序 \retail.dat

 -rw-rw-r--      5463  2014-10-15 19:36  apriori 算法程序 \Apriori.cpp

 -rw-rw-r--   1029482  2014-09-23 19:43  apriori 算法程序 \Apriori.exe

 -rw-rw-r--      5498  2014-10-15 19:29  apriori 算法程序 \Apriori.cpp~

 -rw-rw-r--      1477  2014-09-23 19:48  apriori 算法程序 \result.txt

 -rw-rw-r--    106849  2014-09-23 19:43  apriori 算法程序 \Apriori.o

 -rw-rw-r--       190  2014-09-23 19:52  apriori 算法程序 \使用说明.txt

 drwxrwxr-x         0  2014-10-15 19:36  apriori 算法程序 

----------- ---------  ---------- -----  ----

              5316449                    8


评论

共有 条评论