📄 main.cpp
字号:
#include <stdio.h>
#include <stdlib.h>
#include <fstream.h>
#include <string.h>
#include "Apriori.h"
#include "Association.h"
#include "List.h"
#include "itemSet.h"
List *loadItemSets(char *datafile, int& max_pageno, bool keeporder)
{
List *m_data;
itemSet *pitemset;
char line[20*4096];
int pageno, hostid;
char *t, *s;
double weight;
FILE *fp;
// try to open the data file
if((fp = fopen(datafile, "rt")) == NULL)
{
printf("Cannot open the data file %s !\n", datafile);
return (List *)NULL;
}
printf("\n\nLoading data from file %s ... ", datafile);
fflush(stdout);
// this is the data structure that stores the input data
m_data = (List *)new List();
max_pageno = -1;
// Read in each line, extract all the items within this line
while(fgets(line, 20*4096, fp) != NULL)
{
if (strchr(line, ',') != NULL)
{
s = (char *) new char[strlen(line) + 1];
strcpy(s, line);
if ((t = strtok(s, ",")) == NULL)
{
delete s;
break;
}
pitemset = (itemSet *)new itemSet();
pitemset->keeporder(keeporder);
pageno = atoi(t);
if(max_pageno < pageno)
max_pageno = pageno;
pitemset->add(pageno);
t = strtok((char *)NULL, ",");
for ( ; t != NULL; t = strtok((char *)NULL, ","))
{
pageno = atoi(t);
if(max_pageno < pageno)
max_pageno = pageno;
pitemset->add(pageno);
}
// if the length of the session is greater than 1, then insert it into the session list
if(pitemset->size() > 1)
{
pitemset->support(1);
m_data->add(pitemset);
}
else
delete pitemset;
delete s;
}
}
fclose(fp);
printf("Finish Loading!\n\n");
fflush(stdout);
return(m_data);
}
main( int argc, char *argv[] )
{
List *loadItemSets(char *datafile, int& max_pageno, bool keeporder);
CApriori *m_apriori;
CAssociationRule *m_rules;
List *traindata;
int pagenum;
char *datafile = NULL, *rules;
double support = 0.1, confidence = 0.5;
int c;
extern char *optarg;
rules = (char *)new char[strlen(datafile) + 6 + 1];
strcpy(rules, datafile);
strcat(rules, ".rules");
m_apriori = new CApriori();
m_apriori->setsupport(support);
m_apriori->pagenum = pagenum + 1;
// Finding large Itemsets from training data
m_apriori->FindLargeItemSets(traindata);
// Association Rules from extracted large item sets
m_rules = new CAssociationRule();
m_rules->setconfidence(confidence);
m_rules->m_LargeItemSets = m_apriori->m_Ls;
m_rules->genrules();
m_rules->save(rules);
// Clear off
delete m_apriori;
delete m_rules;
delete traindata;
delete rules;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -