-
大小: 36KB文件類型: .rar金幣: 2下載: 1 次發布日期: 2021-05-23
- 語言: 其他
- 標簽: Apriori.cpp??Apriori.h??Apriori.exe??data.txt??
資源簡介
對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
評論
共有 條評論