资源简介

对data.txt实验,实现Apriori算法和改进算法的比较

资源截图

代码片段和文件信息

// Apriori.cpp : 定义控制台应用程序的入口点。
//

#include “stdafx.h“
#include “Apriori.h“
#include “conio.h“
#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// 唯一的应用程序对象

CWinApp theApp;

using namespace std;

int _tmain(int argc TCHAR* argv[] TCHAR* envp[])
{
int nRetCode = 0;

// 初始化 MFC 并在失败时显示错误
if (!AfxWinInit(::GetModuleHandle(NULL) NULL ::GetCommandLine() 0))
{
// TODO: 更改错误代码以符合您的需要
_tprintf(_T(“致命错误: MFC 初始化失败\n“));
nRetCode = 1;
}
else
{
// TODO: 在此处为应用程序的行为编写代码。
Dblink *D;
ItemSet *IS*preIS;
SearchTree *STk;
char filename[30];
double min_sup = 0.02;
int Record_Count = 0min_count;
DWORD nStartTimenEndTimeSumTime = 0;
int k = 1;
cout<<“输入数据文件名:“;
cin>>filename;
cout<<“输入最小支持阈值min_sup:“;
cin>>min_sup;
CString exstr1;
exstr1 = “数据来源文件:“;
exstr1 += filename;
exstr1 += “\r\n最小支持阈值:“;
exstr1.AppendFormat(“%f\r\n\r\n“min_sup);
nStartTime = GetTickCount();
D = ReadDataFromText(filename&Record_Count);
min_count = int(Record_Count*min_sup);
STk = find_frequent_1_itemset(Dmin_count);
nEndTime = GetTickCount();
SumTime += nEndTime - nStartTime;
IS = GetDatalink(STk);
//要删除STk
STk = DeleteTree(STk);
PrintResult(ISkexstr1);
while(IS != NULL)
{
k++;
nStartTime = GetTickCount();
preIS = apriori_gen(ISk);
if(preIS == NULL) break;
IS = Deletelink(IS);
IS = find_frequent_k_itemset(DpreISkmin_count);    //只是把preIS中的count字段作了更新并剪枝
nEndTime = GetTickCount();
SumTime += nEndTime - nStartTime;
PrintResult(ISkexstr1);
}
IS = Deletelink(IS);
cout< cout<<“算法总耗时:“< getch();
}

return nRetCode;
}


SearchTree* find_frequent_1_itemset(Dblink* Dint min_count)
{
SearchTree* ST_1 = NULL;
Dblink* DBL = D;
while(DBL != NULL)     //遍历源数据表给每个关键字计数
{
int nStart = 0nEnd;
CString str;
do{
nEnd = DBL->datastr.Find(‘;‘nStart);
if(nEnd == -1)
str = DBL->datastr.Mid(nStart);
else{
str = DBL->datastr.Mid(nStartnEnd-nStart);
nStart = nEnd+1;
}
ST_1 = SearchAndAddInTree(ST_1str1);
}while(nEnd != -1);
DBL = DBL->next;
}
SearchAndDelInTree(ST_1min_count);     //剪枝
return ST_1;
}

ItemSet* find_frequent_k_itemset(Dblink* DItemSet* ISint kint min_count)
{
Dblink* DBL = D;
int step = 0;
CString tmp;
while(DBL != NULL)     //遍历源数据表搜索k-项集,增加计数
{
step++;
IS = SearchAndAddIn_klink(ISDBL->datastr);
DBL = DBL->next;
if((step % 10) == 0){
tmp.Format(“%d\r\n“step);
TRACE(tmp.GetBuffer());
}
}
return Del_k_ItemSet(ISmin_count);     //剪枝
}

ItemSet* apriori_gen(ItemSetlink* ISint k)
{
ItemSetlink *preIS1 = IS*preIS2;
ItemSetlink *ISk*ISkhead = NULL;
while(preIS1)
{
preIS2 = preIS1->next;
while(preIS2)
{
CString tmp;    //临时存放候选节点
tmp.Empty();
if(k == 2)
tmp = preI

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

     文件      48173  2006-04-08 16:09  data.txt

     文件      15360  2006-04-14 10:47  MyApriori.exe

     文件      14848  2006-04-14 10:47  Apriori.exe

     文件       2609  2006-05-03 17:21  Apriori.h

     文件      13929  2006-04-14 10:47  Apriori.cpp

     文件       2449  2006-05-03 17:22  MyApriori.h

     文件      12299  2006-04-14 10:47  MyApriori.cpp

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

               109667                    7


评论

共有 条评论

相关资源