-
大小: 36KB文件类型: .rar金币: 2下载: 1 次发布日期: 2021-05-23
- 语言: 其他
- 标签: Apriori.cpp Apriori.h Apriori.exe data.txt MyApriori.cp
资源简介
对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
评论
共有 条评论