资源简介

实验课要求的apriori算法的实现 有置信度和支持度

资源截图

代码片段和文件信息

#include
#include
#include
#include
#include

using namespace std;


typedef vector VEC_STR;//用于保存集合
typedef vector VEC_VEC_STR;//用于保存元素是集合的集合

typedef struct MultiItem//频繁项
{
VEC_STR vsItem;
int iSupport;
}MULTIITEM;

typedef struct Rule//用于保存关联规则
{
    VEC_STR vs1;
    VEC_STR vs2;
    float confidence;
}RULE;
typedef vector VEC_RULE;//记录关联规则
typedef vector VEC_MULTIITEM;//频繁项集合
typedef vector VEC_VEC_MULTIITEM;
typedef map MAP_STR_INT;//存储词语及其出现频率(仅用于一项集)


void readFile(ifstream &infile const string &filename VEC_STR &word);
void countWord(VEC_STR &vs_word MAP_STR_INT &word_count);
void generateLevel1Set(MAP_STR_INT *VEC_MULTIITEM &);//得到频繁一项集
bool has_infrequent_subset(VEC_STR cVEC_MULTIITEM *lowLevel);//用于剪枝
bool find_it(VEC_STR cVEC_MULTIITEM *lowLevel);
void apriori_gen(VEC_MULTIITEM *lowLevelSet VEC_MULTIITEM *highLevelSetint kMULTIITEM vmTemp);//用于得到候选集
void apriori(VEC_MULTIITEM *level1SetVEC_VEC_MULTIITEM &allLevelSetVEC_STR *pVs_WordVEC_MULTIITEM *highLevelSetVEC_MULTIITEM *initialSet);//得到所以频繁项集
void countSupport(VEC_STR *pVs_Word VEC_MULTIITEM &initialSet);//得到候选集的支持度
void getKlevel(VEC_MULTIITEM *highLevelSetVEC_MULTIITEM *initialSet);//等到k项集
int check(MULTIITEM v1VEC_STR v2);
void count_confidence(VEC_VEC_MULTIITEM &allLevelSetVEC_RULE &conSet);//计算置信度,同时得到关联规则
void printFrequentSet(VEC_VEC_MULTIITEM *allLevelSetofstream &os);//用于打印
void printRule(VEC_RULE &conSetofstream &os);//打印关联规则


float minSUPPORT = 0.2;//最小支持度
float MINCONFIDENCE=0.8;//最小置信度
int MINSUPPORT=0.2; //用于把支持度转换为个数
int m=0;//数据的种类
int n=0;//数据的条数
int main ()
{
     MAP_STR_INT map1;//对于一项集保存支持度
     VEC_MULTIITEM level1Sethighlevelset;//保存k项集
     VEC_MULTIITEM initialSet;//保存候选集
     VEC_VEC_MULTIITEM alllevelset;//用于保存所有满足最小支持度的数据
     VEC_RULE conSet;//保存关联规则
    ifstream infile;
VEC_STR word;
    map ::iterator m1_Iter; 
     
readFile(infile“input.txt“word);
   
infile.close();
     for(int j=0;j        map1.insert(pair  ( j 0 ));
    MINSUPPORT=(int)(minSUPPORT*n);
    countWord(wordmap1);      //计算一项集中满足条件的数据
    generateLevel1Set(&map1level1Set);//得到频繁一项集
 //   printFrequentSet1(&level1Set);
    int size=level1Set.size();
    alllevelset.push_back(level1Set);
    apriori(&level1Setalllevelset&word&highlevelset&initialSet);//利用apriori算法计算频繁项集
    ofstream outfile;
    outfile.open(“out.txt“);
if(!outfile)
cout<<“不能打开文件!“<
    printFrequentSet(&alllevelsetoutfile);//打印频繁项集到txt文件
    count_confidence(alllevelsetconSet);//根据最小置信度计算关联规则

    printRule(conSetoutfile);//打印相应的关联规则
    outfile.close();
    cout<<“OK“;
    cin>>n;
    return 0;

}
/*
从文件中读取数据集,并从文件的数据中得到数据的条数及种类数,并用容器虚拟一个a【n】【m】的数组。以存在为1,不存在为0的形式存储
infile 是文件指针,filename是文件名,word用来存储数组。
*/
void readFile(ifstream &infile const string &filen

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2012-10-18 11:03  12S051025 宋雪姣 实验二\
     目录           0  2012-10-16 21:10  12S051025 宋雪姣 实验二\ap\
     目录           0  2012-10-16 00:11  12S051025 宋雪姣 实验二\ap\Debug\
     文件      189440  2012-10-16 00:11  12S051025 宋雪姣 实验二\ap\Debug\ap.exe
     文件      684820  2012-10-16 00:11  12S051025 宋雪姣 实验二\ap\Debug\ap.ilk
     文件     1420288  2012-10-16 00:11  12S051025 宋雪姣 实验二\ap\Debug\ap.pdb
     目录           0  2012-10-16 21:08  12S051025 宋雪姣 实验二\ap\ap\
     目录           0  2012-10-16 00:11  12S051025 宋雪姣 实验二\ap\ap\Debug\
     文件        8738  2012-10-16 00:11  12S051025 宋雪姣 实验二\ap\ap\Debug\BuildLog.htm
     文件         621  2012-10-16 00:11  12S051025 宋雪姣 实验二\ap\ap\Debug\ap.exe.intermediate.manifest
     文件      854116  2012-10-16 00:11  12S051025 宋雪姣 实验二\ap\ap\Debug\ap.obj
     文件          65  2012-10-16 00:11  12S051025 宋雪姣 实验二\ap\ap\Debug\mt.dep
     文件      224256  2012-10-16 00:11  12S051025 宋雪姣 实验二\ap\ap\Debug\vc90.idb
     文件      446464  2012-10-16 00:11  12S051025 宋雪姣 实验二\ap\ap\Debug\vc90.pdb
     文件       14447  2012-10-16 21:06  12S051025 宋雪姣 实验二\ap\ap\ap.cpp
     文件        3689  2012-10-14 20:57  12S051025 宋雪姣 实验二\ap\ap\ap.vcproj
     文件        1411  2012-10-16 21:13  12S051025 宋雪姣 实验二\ap\ap\ap.vcproj.Snow-PC.Snow.user
     文件         157  2012-10-14 20:57  12S051025 宋雪姣 实验二\ap\ap\input.txt
     文件         457  2012-10-16 00:11  12S051025 宋雪姣 实验二\ap\ap\out.txt
     文件     1379328  2012-10-16 21:13  12S051025 宋雪姣 实验二\ap\ap.ncb
     文件         872  2012-10-14 20:53  12S051025 宋雪姣 实验二\ap\ap.sln
     文件       12288  2012-10-16 21:13  12S051025 宋雪姣 实验二\ap\ap.suo
     文件       14447  2012-10-16 21:11  12S051025 宋雪姣 实验二\代码txt版.txt

评论

共有 条评论